Subject: Structure de fichiers, arrangements et pdf multiples

From: Cécile Huneau <[email-masked]>
Date: Mon, 03 Aug 2009 01:00:45 +0200

Bonsoir la liste !
Je crois que je n'échapperai pas à une petite présentation avant de 
poser mes questions...
Je fais des transcriptions de pièces baroques/renaissances distribuée 
gratos, quand j'ose les partager puisque j'ai tendance à trouver tout ce 
que je fais moche et perfectionnable. Cela fait un moment que je tourne 
autour de lily sans oser franchir le pas (accroissement de possibilités 
= exigences sur les aspects "perfectionnables" amplifiées)

Vendredi, après avoir arraché mes derniers cheveux sur des aberrations 
absurdes j'ai donc rompu avec mon ex en espérant trouver mieux ailleurs.
Pour commencer soft j'ai décidé de me lancer sur un recueil de suites à 
2 basses de Philidor, sympa comme musique au passage, et pas difficile à 
jouer.
Prise en main plutôt facile, la première suite est bouclée niveau notes. 
Mais comme je n'aime pas prendre de mauvaises habitudes, surtout dès le 
départ, si quelqu'un avait la gentillesse de regarder comment j'organise 
mes fichiers pour me dire ce qui ne va pas du tout et ce qui va poser 
problème par la suite...
Si dessous le 1er mvt du morceau en cours :
---
\include "italiano.ly"

myName = "Air Allemand de la Nôce de Village"

myStructure = {
    \key sol \major
    \time 2/2
    \partial 2
    \repeat volta 2 { s2*12 }
    \repeat volta 2 { s2*16 }
}

myMusicVoixA = {
    sol4 sol |
    la si do si |
    la2\stopped re4 re |
    sol, fad mi la |
    re,2 re'4 sol, |
    do si la2\stopped |
    sol si4 si |
    la sol fad mi |
    red2\stopped fad4 sol |
    la si fad sol |
    mi2 mi'4 re |
    do si la2\stopped |
    fad\stopped re'4 sol, |
    do si la2\stopped |
    sol |
}

myMusicVoixB = {
    sol4 sol |
    fad sol do, sol |
    re'2 si |
    dod4 re la2 |
    re8 mi re do si4 do |
    la\stopped sol re' re, |
    sol2 sol4 sol |
    la si do la |
    si2 la4 sol |
    fad sol la si |
    mi re do si |
    la sol fad mi |
    re re'8 do si4 do |
    la\stopped sol re' re, |
    sol2 |
}

%%%%
%% Générer
%%%%
\score {
    \new StaffGroup
    <<
        \new Staff = "Voix A" { << \relative sol { \stemNeutral \clef F 
\myMusicVoixA } \\ \myStructure >> }
        \new Staff = "Voix B" { << \relative sol { \stemNeutral \clef F 
\myMusicVoixB } \\ \myStructure >> }
}
\header { piece = \myName }
---

En fait je crée un fichier par mouvement, chacun contenant les variables 
myName, myStructure, myMusicVoixA, myMusicVoixB. La partie "Générer" 
vient d'un autre fichier qui me concatène les mvts et ajoute les infos 
générales (titre, compositeur, etc.)
La façon de combiner structure et notes ne me convient pas entièrement, 
je suis persuadée qu'il y a moyen de faire plus élégamment, mais bon... 
ça marche...
Le dernier exemple de cette page (qui me semble un peu buggé) a beaucoup 
sollicité mon neurone solitaire, sans résultat : 
http://lilypond.org/doc/v2.11/Documentation/user/lilypond/Multiple-voices#Writing-music-in-parallel

J'ai aussi besoin de votre avis sur un autre point : je compte faire des 
arrangements pour différentes orchestrations, cela marche souvent avec 
de simples transpositions (trouvé) mais nécessite aussi parfois des 
octaviations ou petites modifs. Ah oui, j'ai encore un défaut en plus 
d'aimer la musique ancienne : j'ai horrrrreur de la redondance. Inutile 
de me proposer de faire un fichier par version ce qui rend angoissant 
toute petite modification. N'oublions pas Murphy et son dicton : "C'est 
quand tu auras 50 versions de tes 24 fichiers que tu te rendras compte 
que tu as oublié tous les si bémols"
Je suis partie sur l'utilisation de tags à l'intérieur de mes variables 
de notes, ça marche plutôt bien, sauf que l'écriture en relative devient 
lourde à gérer, et cela ne me plait pas trop de mettre autre chose que 
des notes dans mes variables notes... j'ai l'impression que ça va vite 
devenir un boxon monstrueux.
Si vous avez des suggestions... Avant de casser mes murs à coup de tête 
en cherchant une soluce...

Et une dernière question. Celle-là je suis sûre qu'en cherchant dans la 
doc je peux trouver. J'ai donc un fichier qui me génère plusieurs pdf : 
plusieurs orchestrations, parties séparées (inutiles pour ce morceau 
mais je voulais tester). Y a-t-il un moyen pour spécifier le nom de 
sortie, histoire de ne pas avoir à renommer chaque fichier ?

Voilà, c'est tout pour aujourd'hui, et c'est déjà pas mal.
Félicitations à ceux qui auront lu jusqu'au bout !
Cécile

---

From: Frédéric Bron <[email-masked]>
Date: Mon, 3 Aug 2009 07:03:27 +0200

Salut Cécile,

> La façon de combiner structure et notes ne me convient pas entièrement, je
> suis persuadée qu'il y a moyen de faire plus élégamment, mais bon... ça
> marche...

Il faut que tu enlèves "\\" et que tu mettes \myStructure entre
accolades { }. Tu peux alors enlever \stemNeutral:

\new Staff = "Voix A" { << \relative sol { \clef F \myMusicVoixA }
{\myStructure} >> }

Personnellement, je mettrais \relative sol juste après "myMusicVoixA =":

myMusicVoixA = \relative sol {
musique
}
puis
\new Staff = "Voix A" { << { \clef F \myMusicVoixA } {\myStructure} >> }

Frédéric

---

From: Martial <[email-masked]>
Date: Mon, 03 Aug 2009 08:36:58 +0200

Bonjour

Très propre comme script.
Bravo !

> Y a-t-il un moyen pour spécifier le nom de 

%%--------
%%Pour avoir en sortie mapiece-Orchestration-A.pdf
#(define output-suffix "Orchestration-A")
\book {
\score {
	\orchA
}
\header { piece = "Ma piece A" }
}

%%Pour avoir en sortie mapiece-flute.pdf
#(define output-suffix "flute")
\book {
\score {
	\autrepart
}
\header { piece = "Ma piece f" }
}
%%-------

-- 
Martial

---

From: Valentin Villenave <[email-masked]>
Date: Mon, 3 Aug 2009 11:13:09 +0200

> Bonsoir la liste !

Bonsoir et bienvenue,

juste un détail de terminologie :

> gratos, quand j'ose les partager puisque j'ai tendance à trouver tout ce que
> je fais moche et perfectionnable.

Tant qu'à faire que de partager des éditions "gratos", c'est encore
mieux de les partager _librement_ !
Là où la gratuité empêche quiconque de redistribuer une copie de ta
transcription, les diverses licences libres permettent non seulement
de redistribuer, mais aussi éventuellement d'inclure les oeuvres dans
d'autres recueils, de faire de nouvelles éditions, etc.
(Ce qui permet précisément de publier ton travail "perfectionnable" en
autorisant le public à le perfectionner.)

http://fr.wikipedia.org/wiki/Licence_libre
http://fr.creativecommons.org/

Il existe plusieurs bibliothèques de partitions LilyPond sous licences
libres, notamment :
http://www.mutopiaproject.org/

Cordialement,
V. Villenave.

---

From: Cile <[email-masked]>
Date: Mon, 03 Aug 2009 12:07:56 +0200

Bonjour,
Merci beaucoup pour tous ces conseils rapides qui vont me permettre 
d'avancer plus vite.
Pour ce qui est des différentes orchestrations à gérer je me réponds 
moi-même : ce qui met la zone avec l'emploi de tag c'est le \relative à 
gérer puis que quand je lis le fichier, d'instinct je saute les tags qui 
ne m'intéressent pas. Après avoir fait un test en notation "absolue" (< 
ne sais pas comment formuler), avec tags, indentations bien placées et 
numéros de mesure en commentaire le tout reste très correctement lisible 
et aisément modifiable. Il y a très certainement mieux mais pour 
l'instant c'est la solution retenue.

Pour Valentin > je me suis mal exprimée, déjà sous licence CC pour tout 
: pdf, docs, midi, éditions papier.
Je penserai à Mutopia pour les prochaines partitions.
Cécile

---

From: Nicolas Sceaux <[email-masked]>
Date: Mon, 3 Aug 2009 19:10:18 +0200

Le 3 août 09 à 01:00, Cécile Huneau a écrit :

> [...]
>
> %%%%
> %% Générer
> %%%%
> \score {
>     \new StaffGroup
>     <<
>         \new Staff = "Voix A" { << \relative sol { \stemNeutral  
> \clef F \myMusicVoixA } \\ \myStructure >> }
>         \new Staff = "Voix B" { << \relative sol { \stemNeutral  
> \clef F \myMusicVoixB } \\ \myStructure >> }
>     >>
> }

Je trouve qu'il serait plus clair de mettre les "\relative sol" au
niveau de la définition des voix (les variables myMusicVoixA et B),
de façon à ce que lorsqu'on lit ces définitions on sache qu'il faut
les lire en relatif plutôt qu'en absolu.

Il n'est pas rare de voir ta variable `myStructure' nommée `global'
dans les partitions LilyPond. D'ailleurs dans un premier temps en
voyant ce nom j'ai cru qu'il allait s'agir de la structure de la
partition (l'organisation des portées).

En supposant que les \relative sont déplacés au niveau définition
des voix, la structure de la partition devient :

\score {
   \new StaffGroup <<
     \new Staff << \myStructure \clef F \myMusicVoixA >>
     \new Staff << \myStructure \clef F \myMusicVoixB >>
}

ce qui est plus lisible.

Mais à part ça, la structure du fichier est correcte. Il est aussi  
souvent
d'usage de placer la définitions de voix dans un fichier, et la  
structure
dans un autre, le second incluant le premier.

> Le dernier exemple de cette page (qui me semble un peu buggé) a  
> beaucoup sollicité mon neurone solitaire, sans résultat : http://lilypond.org/doc/v2.11/Documentation/user/lilypond/Multiple-voices#Writing-music-in-parallel

A mon sens, quand on copie une partition existante, cette bidouille
de \parallelMusic n'est pas utile.

> [...]
> Je suis partie sur l'utilisation de tags à l'intérieur de mes  
> variables de notes, ça marche plutôt bien, sauf que l'écriture en  
> relative devient lourde à gérer, et cela ne me plait pas trop de  
> mettre autre chose que des notes dans mes variables notes... j'ai  
> l'impression que ça va vite devenir un boxon monstrueux.

Je trouve les \tag assez casse pied à utiliser, à cause des  
\removeWithTags
et compagnie que cela force à utiliser systématiquement.

Les \tags ajoutent un attribut à la musique saisie, et ensuite avec les
fonctions qui vont bien (\removeWithTag et \keepWithTag), on peut
sélectionner les bouts de musiques que l'on souhaite voir apparaître.  
Dans
l'exemple suivant :

   myMusic = { do-\tag #'partie \p }

myMusic est composé d'une séquence contenant une note avec une nuance,
laquelle est taggée `partie', le but pouvant être de ne faire apparaître
cette nuance que dans la partie séparée et non dans le conducteur où  
elle
pourrait être redondante avec une autre voix. Donc ensuite, dans le
conducteur il faudra inclure cette musique avec \removeWithTag  
#'partie et
dans la partie séparée \keepWithTag #'partie par exemple.

On peut faire autrement : avoir des fonctions qui, en fonction de la  
valeur
d'une propriété, va inclure au non la musique là où elle est saisie.
Par exemple :

   myMusic = { do-\whenPart \p }

où whenPart testerait la valeur d'une option `part' par exemple. Alors,
\myMusic contiendrait la nuance seulement si on compile la partition
avec l'option -dpart, et dans tous les cas on utilise \myMusic dans
la structure de la partition sans avoir à s'embêter avec des  
\keepWithTag.

Les deux approches ont leurs avantages et inconvénients : \tag et
\keepWithTag existent de base, tandis que quelque chose comme \whenPart,
\whenLeadSheet, \whenReduction, etc, serait à écrire ; d'un autre côté
l'utilisation des seconds peut rendre les parties structure plus  
claires.
A essayer éventuellement pour se faire une idée.

Nicolas