Subject: Petit script bash 2015 pour vos scores et parties individuelles

From: legoss <[email-masked]>
Date: Sat, 2 May 2015 06:32:55 -0700 (MST)

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>  
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>  
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.

---

From: legoss <[email-masked]>
Date: Sat, 2 May 2015 06:34:56 -0700 (MST)

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

--
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.

---

From: Anton Curl <[email-masked]>
Date: Sat, 02 May 2015 16:31:17 +0200

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:
> _______________________________________________
> liste de diffusion lilypond-user-fr
> [email-masked]
> https://lists.gnu.org/mailman/listinfo/lilypond-user-fr

---

From: legoss <[email-masked]>
Date: Sat, 2 May 2015 08:47:49 -0700 (MST)

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 

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 

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

Anton Curl wrote
> Il faudrait aussi qu'il puisse mettre des valeurs par défaut pour 

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
> 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
> 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.

---

From: Anton Curl <[email-masked]>
Date: Sat, 02 May 2015 18:21:38 +0200

> 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
> Tu penses à de possibles oublis au cours de la saisie? sinon je vois pas à
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).

---

From: legoss <[email-masked]>
Date: Sat, 2 May 2015 10:53:14 -0700 (MST)

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.

---

From: Anton Curl <[email-masked]>
Date: Sat, 02 May 2015 20:32:25 +0200

> (J'ai la version 3.4 de python, mais je n'ai pas réussi à le lancer...)

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.

---

From: legoss <[email-masked]>
Date: Sat, 2 May 2015 12:14:31 -0700 (MST)

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.

---

From: Anton Curl <[email-masked]>
Date: Sat, 02 May 2015 21:36:51 +0200

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.

---

From: legoss <[email-masked]>
Date: Sat, 2 May 2015 14:05:50 -0700 (MST)

Anton Curl wrote
> 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.