Subject: structurer un bouquin

From: Loïc Chahine <[email-masked]>
Date: Sun, 20 May 2012 15:55:11 +0200

Bonjour à tous !
Je me suis lancé dans un petit projet, et j'ai besoin de vos lumières 
pour m'aider à bien le structurer.

Tout d'abord, quelques mots sur le projet dont il est question. Il 
s'agit d'un recueil de fables à chanter d'après celles de La Fontaine, 
sur des chansons connues du XVIIIe siècle --- chansons appelées à 
l'époque "vaudevilles" (et aussi par les chercheurs d'aujourd'hui qui 
travaillent dessus, comme moi par exemple). Pour chaque fable, il y a 
une mélodie (dessus) et une basse chiffrées. Il y a généralement 
plusieurs couplets (entre deux et huit pour celles que j'ai faites) : le 
premier est mis sous la mélodie, les suivants en texte, à la suite. (Il 
y a un exemple de ça dans le manuel de Lily.)
Maintenant, ça se corse. En réalité, chaque fable de la partition n'a 
pas sa propre mélodie, et plusieurs peuvent être chantées sur la même. 
Par exemple là j'ai fait le "livre VI", qui a 23 fables, et il n'y a que 
10 mélodies.

J'ai déjà donc gravé les 10 fables avec mélodie du livre VI, avec tous 
leurs couplets, mais chacune indépendamment. Pour l'instant je compile 
une à la fois, et chacune fait une page ou moins. J'ai déjà une 
structure de base qui est la suivante.
Un dossier général "fables", puis un dossier par livre, donc de "1" à 
"6", puis dans chaque dossier pour chaque fable un autre dossier, aussi 
nommé d'un nombre. Dans chaque dossier de fable, il y a six fichiers :
- basse.ly (les notes de la basse)
- chiffres.ly (les chiffrages de la basse)
- voix.ly (les notes de la voix)
- paroles.ly (les paroles sous la portée)
- couplets.ly (les autres couplets)
- fableM-N.ly (le tout mis ensemble, où M est le numéro du livre et N 
celui de la fable dans le livre)
Et dans le dossier "fables" il y a trois fichiers :
- layout.ly (pour les paramètres de mise en page)
- fableC.ly et fableG.ly, qui sont tous deux des blocs \score, mais avec 
soit la clef d'ut 1 pour la ligne de voix (C), soit la clef de sol 2 
pour la ligne de voix (G).
J'utilise aussi deux fichiers de définitions : un pour les incipits, un 
pour les vers. Eux sont dans mon dossier "ly".
Je vous joins un exemple !
Pour compiler, je joue sur le fait que les include ne sont pas relatifs, 
et donc dans le fichier fables/M/N/fableM-N.ly je fais appel à 
fables/fableC.ly (qui est donc deux dossiers plus haut), et qui lui fait 
appel à tous les autres depuit fables/M/N/. J'espère que c'est assez clair !

Maintenant, les problèmes.

1. Le texte seul. C'est assez lourd à gérer, comme vous pourrez le voir 
dans couplets.ly. Une mini-explication à la fin de ce mail sur les 
commandes que j'utilise et leur pourquoi.
Comme c'est assez lourd, je me demande comment faire pour les fables qui 
n'ont que du texte, et pas de mélodie. Donc si possible j'aimerais 
beaucoup simplifier la saisie du texte. Le but serait bien entendu (ça 
va faire plaisir à Bertrand) de tout faire en LilyPond cette fois.
Pistes : déjà faudrait améliorer nettement la gestion des colonnes. Les 
couplets pourraient aussi être numérotés tout seuls, je pense... Tout un 
tas de trucs que j'aurais plus ou moins sûr faire en LaTeX, mais que là, 
en tout-Lily, plouf, je ne sais pas.

2. Tout mettre ensemble. J'aimerais à terme faire un seul fichier avec 
toutes les fables. Chacune devrait avoir son titre, bien sûr... Si 
possible, l'idéal serait que les fables soient numérotées 
automatiquement en continu pour MON bouquin, et on pourrait indiquer 
plus ou moins à la main le numéro d'origine. Un exemple très simple. 
Admettons que là je fasse MON bouquin avec les fables que j'ai déjà : 
j'en ai dix, donc la dernière (celle que je vous envoie) sera la n° 10 
du bouquin, mais je peux indiquer qu'originellement c'est la n° 18 du 
livre VI. Ce qui est très facile à récupérer, vu que c'est les noms des 
dossiers qui la contienne...
Alors pour l'instant, je pense tout de même faire deux versions 
différentes du bouquin : une avec seulement les fables qui ont leur 
mélodies (et pas celle qui ont que du texte), et une avec toutes.

3. La table des matières. Évidemment qu'il en faudra une. Je ne sais pas 
la personnaliser. J'aimerais qu'elle ait, outre le numéro et le titre de 
chaque fable, l'air sur laquelle elle se chante.

%%% L'explication du texte dans couplets.ly
Je veux, bien entendu, présenter les vers comme on fait 
traditionnellement, c'est-à-dire les marger en fonction de leur longueur 
métrique. Mais je ne veux pas que ça prenne trop de place. Alors je 
considère que le plus long, je ne marque rien, et que je décale les 
autres en fonction de lui. Dans l'exemple que j'envoie, la plupart des 
vers font 7 syllabes métriques (càd -e féminin de la fin exclu), sauf 
deux, qui ne font que 5. Alors ces deux-là sont marqués avec \plusDeux 
(càd décallé de deux "crans" [un cran = une syllabe métrique] vers la 
droite).

Voilà, c'est tout pour l'instant !
Je remercie grandement par avance ceux qui auront des idées !
Et merci à ceux qui ont lu. Si vous téléchargez et compilez pas la 
fable, voici un PDF quand même 
<http://y.note.free.fr/scores/fables/fable6-18.pdf> !
L.C.

P.S. : Toutes réflexions faites en revoyant l'exemple, je pense qu'il 
faut disposer les couplets en colonnes (et non en lignes comme dans 
l'original, j'ai juste refait pareil en fait...), autrement dit colonne 
1: couplets 2 et 3, colonne 2: couplets 4 et 5. Mais je vais attendre 
les propositions pour faire des changements ;-)

---

From: Nicolas Sceaux <[email-masked]>
Date: Sun, 20 May 2012 17:01:33 +0200

Le 20 mai 2012 à 15:55, Loïc Chahine a écrit :
> 1. Le texte seul. C’est assez lourd à gérer, comme vous pourrez le voir dans couplets.ly. Une mini-explication à la fin de ce mail sur les commandes que j’utilise et leur pourquoi.
> Comme c’est assez lourd, je me demande comment faire pour les fables qui n’ont que du texte, et pas de mélodie. Donc si possible j’aimerais beaucoup simplifier la saisie du texte. Le but serait bien entendu (ça va faire plaisir à Bertrand) de tout faire en LilyPond cette fois.
> Pistes : déjà faudrait améliorer nettement la gestion des colonnes. Les couplets pourraient aussi être numérotés tout seuls, je pense… Tout un tas de trucs que j’aurais plus ou moins sûr faire en LaTeX, mais que là, en tout-Lily, plouf, je ne sais pas.

Dans le fichier ci-joint, un exemple qui montre comment on peut simplifier
la saisie : les couplets sont placés automatiquement dans des colonnes, dont
le nombre est paramétrable, et le numéro est calculé automatiquement.

---

From: Loïc Chahine <[email-masked]>
Date: Sun, 20 May 2012 17:19:40 +0200

Super bien ! Merci beaucoup !
Si tu as des idées pour la structuration, ça sera bienvenu.

Pour les titres : Est-ce que tu me conseillerais de créer mes propres 
markups de titrage (top-level, c’est ça ?) et de les détacher du \header 
{ } ? Si c’est ça, je pourrais essayer de le faire à partir de ce modèle 
et de l’autre que j’ai, qui vient de toi aussi ;-)

Reste le problème des \score { … } ensuite, qui est celui pour lequel je 
commence juste à avoir une idée, avec deux-trois variables… faut que 
j’essaie de faire ça en Scheme ! Excellent exercice. On peut utiliser 
des variables dans les chemins de fichiers ? Mon idée serait une 
fonction où on a trois variables :
- nom (= numéro) du premier dossier (= livre) (M)
- nom (= numéro) du second dossier (= fable) (N)
- une variable pour choisir si la clef de la voix du haut c’est C1 ou G2.
Peut-être mettre les titrages des fables dans un fichier à part du 
dossier M/N/, du coup…

(H.S. pour Nicolas : je t’écrirais prochainement à propos du récitatif, 
le projet pour lequel j’en aurais besoin se précise.)

Par contre je ne comprends pas comment le “nombre [de colonnes] est 
paramétrable”.

---

From: Nicolas Sceaux <[email-masked]>
Date: Sun, 20 May 2012 17:37:21 +0200

> Si tu as des idées pour la structuration, ça sera bienvenu.

J'ai bien entendu des idées sur les autres problèmes, mais je veux finir
le Turc généreux avant ce soir ;-)

> Par contre je ne comprends pas comment le “nombre [de colonnes] est paramétrable”.

Tu peux changer le nombre de colonnes avec :

\markup\override #'(column-number . 3) \couplets {
  ...
}

Dans l'exemple, j'ai rendu paramétrable le nombre des colonnes, l'espace
horizontal entre les colonnes, l'espace vertical entre les couplets, et
le numéro attribué au premier couplet.  Repère la directive #:properties
dans la définition de la commande \couplets.

Nicolas

---

From: Loïc Chahine <[email-masked]>
Date: Sun, 20 May 2012 17:58:30 +0200

Le 20/05/12 17:19, Loïc Chahine a écrit :
> Reste le problème des \score { … } ensuite, qui est celui pour lequel 
> je commence juste à avoir une idée, avec deux-trois variables… faut 
> que j’essaie de faire ça en Scheme ! Excellent exercice. On peut 
> utiliser des variables dans les chemins de fichiers ? Mon idée serait 
> une fonction où on a trois variables :
Bon bah le moins qu’on puisse dire c’est que j’y arrive pas du tout…

Merci, Nicolas, pour les précisions dans ton message ! Bon Turc !

---

From: Loïc Chahine <[email-masked]>
Date: Sun, 20 May 2012 18:21:50 +0200

Ah si, ça y est ! Je confondais tout : define, let, set… Pfiou ! ça 
prend forme ! Ne vous prenez pas la tête dessus !
(C’est bien, je fais les questions et les réponses…)

Par contre on peut pas mettre directement \score dans une 
music-fonction… mais on s’en passera, hein.
À bientôt pour les solutions provisoires et peut-être d’autres problèmes !

---

From: Loïc Chahine <[email-masked]>
Date: Sun, 20 May 2012 19:31:55 +0200

Et me revoici avec une solution !
En l’état, elle ne me déplaît pas, mais je pense qu’elle pourrait être 
améliorée. Elle consiste en deux fonctions : une pour les titres, une 
autre pour la partition. À quoi il faut donc ajouter les couplets.
L’idéal, le rêve, aurait été une seule fonction pour tout. Comme vous 
verrez, j’appelle chacune avec trois arguments. Une seule avec six (pour 
les couplets aussi, ce serait encore les mêmes) ça serait génial. Mais 
ça implique d’inclure markup + score + markup dans une seule fonction.
Ça permettrait aussi de mettre un \noPageBreak.

J’attends aussi vos remarques qui ne seraient pas la solution tout-en-un 
que je viens de décrire. Par exemple j’ai pas su faire une chaîne pour 
stocker le chemin puis l’utiliser dans une autre chaîne, du coup il y a 
un bout de code, dans la définition de fableScore, qui est répété plein 
de fois.

Voici donc le tout, compilable en l’état (il suffit de dézipper et de 
compiler "fonction-fable.ly". Chez moi il n’y a aucune erreur !
L.C.

---

From: Loïc Chahine <[email-masked]>
Date: Sun, 20 May 2012 22:21:13 +0200

Et pour ne pas changer, je réponds encore. J’ai totalement échoué pour 
mettre mes markups de titres (dans fableTitre) dans une table des matières.
L.C.