Petit script bash 2015 pour vos scores et parties individuelles

Bonjour à tous,

Il y a 2 ans, j'avais fait parvenir à la liste un script
<http://lilypond-french-users.1298960.n2.nabble.com/Fichier-bash-pour-score-d-orchestre-et-parties-separees-td7579704.html&gt;
qui avait pour but de générer en même temps les squelettes des scores et des
partitions individuelles d'une œuvre, Frescobaldi ne permettant toujours pas
(à ma connaissance) d'effectuer cette opération. Dans le cas contraire,
merci de me donner la marche à suivre. Le script était relativement souple,
parce qu'il pouvait créer des parties sur mesure voir exotiques et des
scores à gogo. Mais, faut bien le reconnaître, c'était pas le pied, du fait
que s'il y avait erreur dans la saisie, il fallait tout recommencer à zéro.
En plus, on trouvait dans le code quelques anomalies et coquilles que je
n'étais alors pas en mesure de solutionner... mes connaissances en bash
n'étant pas très importantes. Donc, poubelle.

Je suis parti sur l'idée de garder en "mémoire" dans un fichier texte les
données saisies, soit pour les modifier/corriger, soit pour les réutiliser
sans avoir à réinventer l'eau froide à chaque fois.

Le script propose 4 opérations:
1. Créer un fichier texte contenant les informations nécessaires à la
création des squellettes .ly de partitions individuelles et de scores.
2. Modifier ce fichier texte préalablement créé.
3. Générer les squellettes .ly cités plus haut à partir du fichier texte.
4. Ouvrir le fichier .ly principal d'un projet.

Quelques exemple de ce qui peut être fait:

- le script créé un répertoire contenant le nouveau fichier texte, et 2
sous-répertoires "reglages" (paper, header, global...), et "parties" (codes
de chaque instrument/voix)
- adaptez le code du script pour obtenir par exemple des blocs \paper et
\global plus à votre convenance; rentrez des valeurs par défaut si le cœur
vous en dit: taille des portées pour les partitions individuelles et scores
etc.; et toutes vos œuvres auront le même aspect
- à partir des informations que vous aurez rentrées, le script ajoute tous
les \include sur les différents fichiers .ly, et crée tous les fichiers
correspondants
- lors de la génération du fichier .ly principal, les fichier pdf (parties
et scores) et midi sont aussi créés. Autrement dit, vous éditez absolument
tout en un seul clic dans frescobaldi
- après pas mal de recherches, je suis parvenu à faire en sorte ques les
fichiers midi sonnent correctement pour les instruments qui ne sont pas en
Ut.
- petite astuce pour rendre la chose encore plus rapide: s'il y a des
parties qui reviennent souvent (ex: Violons 1 et 2, Piano, Flute, Clarinette
etc., ou autres selon vos besoins), insérez-les dans la partie
correspondance du script et mettez-les en commentaires (%). De sorte que
vous n'aurez qu'à les décommenter si elles sont présentes dans une œuvre,
pour que le script les traite. Idem pour les scores (quatuor à cordes,
quintette de cuivres, formation big band, ou votre formation habituelle
etc.).
- nombre des parties et des scores illimité
- comme pour le script d'il y a 2 ans, rien ne vous empêche de créer une
partie "pour flûte baveuse en Fa dièse clé d'Ut 3, ou une partie pour
cornemuse percée en La bémol clé de Fa". Seul les parties de type "piano"
resteront en Ut.
- Pour les chœurs à 2 portées, de type SA-TB avec lyrics, il vous faudra
"assembler" dans la partie "scores" 2 portées individuelles. 1. la "SA" avec
lyrics associés; 2. la "TB" sans lyrics (s'ils sont identiques pour toutes
les voix). Evidemment, Pour cette dernière ("TB"), le pdf individuel ne vous
servira à rien (pas de lyrics associés). De même pour les pdf des grilles
d'accords (pas de musique).
- Une fois que le script à créé tous les fichiers à votre place, il ne vous
reste plus qu'à saisir patiemment votre musique, comme vous le faites
habituellement.
- Ce qui n'a pas été encore prévu: les instruments à 3 portées (orgue)
- Ce qu'il faudra impérativement faire: une partie test qui vérifiera si les
données ont été bien saisies avant le lancement de frecobaldi. Un peu d'aide
ne serait pas de refus.

Observation1: comme souvent, j'ai créé ce script pour répondre à des besoins
personnels. S'il vous est utile, à vous de l'agrémenter... de l'améliorer et
de le corriger... sans oublier de le partager avec le liste!

Observation2: les markups sont probablement dépassés ou "tordus". Pas eu le
temps de les vérifier. Mais bon, ce n'était pas la priorité.

Décompressez l'archive jointe et lancer le script avec:
bash scorenbash

Dernière info: gedit doit être installé sur votre machine; sinon
remplacez-le par votre éditeur favori dans le code du script.
Voilà en gros le topo.
Merci pour les retours!
scorenbash.gz
<http://lilypond-french-users.1298960.n2.nabble.com/file/n7582915/scorenbash.gz&gt;
Cordialement,
Laurent

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Petit-script-bash-2015-pour-vos-scores-et-parties-individuelles-tp7582915.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Mauvaise archive... en voici une autre:
scorenbash.zip
<http://lilypond-french-users.1298960.n2.nabble.com/file/n7582916/scorenbash.zip&gt;

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Petit-script-bash-2015-pour-vos-scores-et-parties-individuelles-tp7582915p7582916.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Bonjour,

Je viens de tester rapidement. Quelques remarques :
- Le find au début est assez moyen si on exécute le script depuis son dossier personnel par exemple. De plus, je ne comprends pas à quoi il sert.
- Le script manque de guillemets sur les variables (voir shellcheck pour toutes les autres erreurs)
- J'ai déjà un problème parce que je n'ai pas Gedit d'installé, il vaudrait mieux utiliser la commande xdg-open.
- Il faudrait aussi qu'il puisse mettre des valeurs par défaut pour certains paramètres comme \key ou \time.
- L'ajout de la bonne version pour Lilypond n'est pas non plus géré.

Sinon je trouve assez fastidieux l'édition de fichier à la main, la syntaxe n'est pas très intuitive.

Je me permets de donner un lien vers le mien :
https://github.com/acurl/digue

C'est en python donc plus portable et plus lisible, mais je ne l'ai testé que sous GNU/Linux.
J'ai aussi mis une interface graphique pour que ce soit plus simple à utiliser, mais il est aussi utilisable en ligne de commande, avec un fichier de configuration à éditer à la main.

J'ai essayé de l'écrire de telle sorte qu'il soit assez modulable. Là il est adapté à mes besoins mais il peux s'adapter facilement pour répondre aux besoins de chacun.

Actuellement il ne gère pas le remplissage des blocs \header ou \paper (volontairement, je n'en ai pas l'intérêt), mais seulement la création des parties.

Anton Curl

···

On 02/05/2015 15:34, legoss wrote:

Mauvaise archive... en voici une autre:
scorenbash.zip
<http://lilypond-french-users.1298960.n2.nabble.com/file/n7582916/scorenbash.zip&gt;

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Petit-script-bash-2015-pour-vos-scores-et-parties-individuelles-tp7582915p7582916.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

_______________________________________________
liste de diffusion lilypond-user-fr
lilypond-user-fr@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user-fr

Anton Curl wrote

- Le find... je ne comprends pas à quoi il sert.

A rien , c'est le reste de divers tâtonnements laborieux.

Anton Curl wrote

Le script manque de guillemets sur les variables (voir shellcheck pour
toutes les autres erreurs)

Je ne connaissais pas cet outils. Merci pour l'info.
Comme tu t'en doutes probablement, j'ai du mal avec les guillemets en bash.
En furetant ça et là, je me suis rendu compte que je n'étais pas le seul. Ça
ne me console pas pour autant!
Si tu veux bien prendre 2-3 exemple du script pour m'expliquer au sujet des
guillemets... merci!
J'ai terminé ce script à l'arrache, avec des "if" et des "for" qui dansaient
devant les yeux.
Je le reprendrai tranquillement... un peu plus tard, histoire d'avoir un
regard neuf. Si c'est possible.

Anton Curl wrote

J'ai déjà un problème parce que je n'ai pas Gedit d'installé, il
vaudrait mieux utiliser la commande xdg-open.

Je n'y ai pas pensé. Noté.

Anton Curl wrote

Il faudrait aussi qu'il puisse mettre des valeurs par défaut pour
certains paramètres comme \key ou \time.

Tu penses à de possibles oublis au cours de la saisie? sinon je vois pas à
quoi tu fais allusion.

Anton Curl wrote

L'ajout de la bonne version pour Lilypond n'est pas non plus géré.

Exact. Ce sera fait dans la prochaine version.

Anton Curl wrote

Sinon je trouve assez fastidieux l'édition de fichier à la main, la
syntaxe n'est pas très intuitive.

C'est sûr, mais à ce jour, je n'ai pas trouvé mieux... pour ce qui me
concerne.

Anton Curl wrote

Je me permets de donner un lien vers le mien :
https://github.com/acurl/digue

C'est en python donc plus portable et plus lisible, mais je ne l'ai
testé que sous GNU/Linux.

M'en vais regarder ça...

Merci pour le retour et tes suggestions!
Laurent

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Petit-script-bash-2015-pour-vos-scores-et-parties-individuelles-tp7582915p7582918.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Anton Curl wrote

Le script manque de guillemets sur les variables (voir shellcheck pour 
toutes les autres erreurs)

Je ne connaissais pas cet outils. Merci pour l'info.
Comme tu t'en doutes probablement, j'ai du mal avec les guillemets en bash.
En furetant ça et là, je me suis rendu compte que je n'étais pas le seul. Ça
ne me console pas pour autant!
Si tu veux bien prendre 2-3 exemple du script pour m'expliquer au sujet des
guillemets... merci!
J'ai terminé ce script à l'arrache, avec des "if" et des "for" qui dansaient
devant les yeux.
Je le reprendrai tranquillement... un peu plus tard, histoire d'avoir un
regard neuf. Si c'est possible.

Lignes 79-80 :

mkdir $projet
cd $projet

Si tu le laisses comme ça, tu ne peux pas avoir d'espace dans le nom du projet. Si l'utilisateur en met un, ton script va faire n'importe quoi (puisque tu ne vérifies pas que l'utilisateur a bien entré un nom sans espace ?), car :

mkdir mon projet

va créer deux dossiers : le dossier « mon » et le dossier « projet ». Alors que :

mkdir "mon projet"

créée un seul dossier « mon projet ».
Et c'est la même chose pour le cd de la ligne suivante.

La doc de shellcheck explique chacune des règles vérifiées :
https://github.com/koalaman/shellcheck/wiki/Sc2086

Anton Curl wrote

Il faudrait aussi qu'il puisse mettre des valeurs par défaut pour 
certains paramètres comme \key ou \time.

Tu penses à de possibles oublis au cours de la saisie? sinon je vois pas à
quoi tu fais allusion.

Oui c'est pour ça. Quand on écrit un programme il faut considérer que quoi qu'entre l'utilisateur, le programme ne va pas planter et donnera une sortie valide ou demandera à l'utilisateur de faire à nouveau sa saisie (bon c'est un peu extrême dans certains cas, mais il faut quand même appliquer ça au maximum).

ShellCheck est un très bon outil!
J'ai corrigé tout ce qui est guillemets. Pour le reste, je dois d'abord
piger les subtilités de bash.
Pour "digue", ça serait bien, je pense que tu puisses nous en parler sur la
liste...
(J'ai la version 3.4 de python, mais je n'ai pas réussi à le lancer...)

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Petit-script-bash-2015-pour-vos-scores-et-parties-individuelles-tp7582915p7582921.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

J'avais envoyé un message sur la liste anglophone, mais ça n'avait pas l'air d'avoir intéressé grand monde...

Donnes-moi les erreurs que tu as. Normalement ça ne doit pas poser de problème si tu as suivi le paragraphe « Installation » de la page Github.

···

On 02/05/2015 19:53, legoss wrote:

ShellCheck est un très bon outil!
J'ai corrigé tout ce qui est guillemets. Pour le reste, je dois d'abord
piger les subtilités de bash.
Pour "digue", ça serait bien, je pense que tu puisses nous en parler sur la
liste...
(J'ai la version 3.4 de python, mais je n'ai pas réussi à le lancer...)

legoss@legoss-550P5C-550P7C:~/bacasable/digue/digue-master/digue$ python3
--version
Python 3.4.0
legoss@legoss-550P5C-550P7C:~/bacasable/digue/digue-master/digue$ python
--version
Python 2.7.6
legoss@legoss-550P5C-550P7C:~/bacasable/digue/digue-master/digue$ python3 -m
digue
Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 2195, in
_find_and_load_unlocked
AttributeError: 'module' object has no attribute '__path__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.4/runpy.py", line 170, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.4/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/legoss/bacasable/digue/digue-master/digue/digue.py", line 3,
in <module>
    import digue.lilypond_snippets as ls
  File "/home/legoss/bacasable/digue/digue-master/digue/digue.py", line 3,
in <module>
    import digue.lilypond_snippets as ls
ImportError: No module named 'digue.lilypond_snippets'; 'digue' is not a
package
legoss@legoss-550P5C-550P7C:~/bacasable/digue/digue-master/digue$

Il se peut aussi que je n'aie rien compris à la manière de procéder.
Bizarre que le liste anglophone ne soit pas intéressé par l'outil que tu
présentes... l'interface étant en anglais.

@+
Laurent

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Petit-script-bash-2015-pour-vos-scores-et-parties-individuelles-tp7582915p7582923.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Je pense que tu es un dossier trop loin.
Essaie de lancer la commande depuis le dossier digue-master

Moi je vais voir si je peux mettre à jour le package pour pouvoir l'installer plus simplement avec pip.

···

On 02/05/2015 21:14, legoss wrote:

legoss@legoss-550P5C-550P7C:~/bacasable/digue/digue-master/digue$ python3
--version
Python 3.4.0
legoss@legoss-550P5C-550P7C:~/bacasable/digue/digue-master/digue$ python
--version
Python 2.7.6
legoss@legoss-550P5C-550P7C:~/bacasable/digue/digue-master/digue$ python3 -m
digue
Traceback (most recent call last):
   File "<frozen importlib._bootstrap>", line 2195, in
_find_and_load_unlocked
AttributeError: 'module' object has no attribute '__path__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
   File "/usr/lib/python3.4/runpy.py", line 170, in _run_module_as_main
     "__main__", mod_spec)
   File "/usr/lib/python3.4/runpy.py", line 85, in _run_code
     exec(code, run_globals)
   File "/home/legoss/bacasable/digue/digue-master/digue/digue.py", line 3,
in <module>
     import digue.lilypond_snippets as ls
   File "/home/legoss/bacasable/digue/digue-master/digue/digue.py", line 3,
in <module>
     import digue.lilypond_snippets as ls
ImportError: No module named 'digue.lilypond_snippets'; 'digue' is not a
package
legoss@legoss-550P5C-550P7C:~/bacasable/digue/digue-master/digue$

Il se peut aussi que je n'aie rien compris à la manière de procéder.
Bizarre que le liste anglophone ne soit pas intéressé par l'outil que tu
présentes... l'interface étant en anglais.

@+
Laurent

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Petit-script-bash-2015-pour-vos-scores-et-parties-individuelles-tp7582915p7582923.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

_______________________________________________
liste de diffusion lilypond-user-fr
lilypond-user-fr@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user-fr

Anton Curl wrote

Je pense que tu es un dossier trop loin.
Essaie de lancer la commande depuis le dossier digue-master

Yesssssssss
Vu l'heure tardive, je regarderai ça demain

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Petit-script-bash-2015-pour-vos-scores-et-parties-individuelles-tp7582915p7582925.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.