structurer un bouquin

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 !
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 :wink:

6-18.zip (2.18 KB)

fableC.ly (529 Bytes)

layout.ly (1.89 KB)

def-versFables.ly (926 Bytes)

def-incipit.ly (10.9 KB)

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.

couplets.ly (3.11 KB)

···

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.

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 :wink:

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

···

Le 20/05/12 17:01, Nicolas Sceaux a écrit :

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.

Super bien ! Merci beaucoup !
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 :wink:

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

···

Le 20 mai 2012 à 17:19, Loïc Chahine a écrit :

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 !

···

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

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 !

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.

exemple-fable.zip (9.96 KB)

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.