GNU LilyPond – Manuel d'initiation: 3.1.1 Introduction à la structure de fichier LilyPond

### 3.1.1 Introduction à la structure de fichier LilyPond

Un fichier d’entrée LilyPond ressemble à :

>     \version "2.22.2"
>     \header { }
>     \score {
>        … expression musicale composite …   % c'est là qu'est la musique !
>       \layout { }
>       \midi { }
>     }

Il existe de nombreuses variantes à ce schéma simpliste, mais cet exemple est un préambule à notre propos.

Jusqu’à présent, les exemples que nous avons pu voir ne faisaient pas appel à la commande `\score{}`. En fait, LilyPond ajoute automatiquement les commandes nécessaires au traitement d’un code simpliste. LilyPond considère

>     \relative {
>       c''4 a b c
>     }

comme un raccourci de

>     \book {
>       \score {
>         \new Staff {
>           \new Voice {
>             \relative {
>               c''4 a b c
>             }
>           }
>         }
>         \layout { }
>       }
>     }

En d’autres termes, si le code n’est constitué que d’une expression musicale simple, LilyPond interprétera le fichier tout comme si cette expression était incluse dans les commandes de notre premier exemple.

Attention : de nombreux exemples, dans la documentation de LilyPond, ne font pas apparaître les commandes `\new Staff` ou `\new Voice`, qui sont créées implicitement. Ce qui n’est pas primordial pour des exemples simples le devient dès que la situation se complexifie un tant soit peu. Le fait de ne pas déclarer explicitement un contexte peut alors amener à des résultats quelque peu surprenants, comme la création d’une portée supplémentaire et indésirable. La manière de créer explicitement des contextes est traitée plus en détails au chapitre Contextes et graveurs.

Note : Dès lors que votre musique dépasse quelques lignes, nous vous engageons fortement à créer explicitement les voix et portées.

Mais revenons à notre premier exemple, et penchons-nous tout d’abord sur la commande `\score`.

Un bloc `\score` doit contenir une et une seule expression musicale, exprimée immédiatement à la suite de la commande `\score`. Rappelez-vous que cette expression peut être n’importe quoi, d’une note isolée à un gigantesque

>     {
>       \new StaffGroup <<
>          … collez ici la partition complète d'un opéra de Wagner…
>       >>
>     }

Dès lors que tout cela est entre accolades : `{ … }`, LilyPond le considère comme une et une seule expression musicale.

Comme nous l’avons vu précédemment, un bloc `\score` peut contenir d’autres informations :

>     \score {
>       { c'4 a b c' }
>       \header { }
>       \layout { }
>       \midi { }
>     }

Gardez à l’esprit que ces trois commandes – `\header`, `\layout` et `\midi` – sont spécifiques : à l’inverse de toutes les commandes débutant par une oblique inversée `\` (backslash en anglais), elles ne constituent pas des expressions musicales et ne peuvent pas faire partie d’expressions musicales. Elles peuvent de ce fait être placées à l’intérieur du bloc `\score`, ou bien à l’extérieur. En réalité, ces commandes sont la plupart du temps indépendantes du bloc `\score` – par exemple, la commande `\header` intervient souvent avant le bloc `\score`, comme le montre l’exemple ci-dessus.

Les deux autres commandes – `\layout {}` et `\midi {}` – que nous n’avons pas détaillées pour l’instant, auront respectivement pour effet, lorsqu’elles interviennent, de produire une sortie imprimable et un fichier MIDI. Nous nous y intéressons plus particulièrement dans le manuel de notation, aux chapitres Mise en forme de la partition et Génération de fichiers MIDI.

Vous pouvez tout à fait mentionner plusieurs blocs `\score`. Ils seront traités comme autant de partitions indépendantes qui seront regroupées dans un seul fichier résultant. La commande `\book` (recueil ou ouvrage) n’est pas obligatoire – elle sera créée implicitement. Néanmoins, le recours à la commande `\book` vous permettra d’obtenir des fichiers résultants distincts à partir d’un même fichier source ‘`.ly`’ – par exemple un fichier par pupitre.

En résumé :

Dès que LilyPond rencontre un bloc `\book`, il crée un fichier distinct (‘`.pdf`’ par exemple). Dans le cas où il n’est pas mentionné explicitement, LilyPond regroupera l’intégralité du code dans un bloc `\book`.

Tout bloc `\score` inclus dans un bloc `\book` constitue un fragment de musique, par exemple un mouvement d’une symphonie.

Tout bloc `\layout` affecte le bloc `\score` ou `\book` au sein duquel il intervient : si c’est à l’intérieur d’un bloc `\score`, seul celui-ci en sera affecté. Dans le cas où le bloc `\layout` se trouve à l’extérieur du bloc `\score`, que le bloc `\book` soit explicite ou non, il affectera chacun des `\score` compris dans ce `\book`.

Pour plus de détail à ce sujet, consultez Plusieurs partitions dans un même ouvrage.

Un autre raccourci pratique est la possibilité de définir des variables, également appelées « identificateurs » – voir Organisation du code source avec des variables à ce sujet. Dans tous les modèles, vous trouverez :

>     melodie = \relative {
>       c'4 a b c
>     }

>     \score {
>       { \melodie }
>     }

Lorsque LilyPond examinera ce fichier, il va prendre la valeur de la variable `melodie`, c’est-à-dire tout ce qui suit le signe `=`, et l’insérer partout où il rencontrera `\melodie`. Vous êtes libre de choisir comment dénommer vos variables1 ; ce peut être `melodie`, `global`, `maindroitepiano`, ou `laTeteAToto`, tant qu’il ne s’agit pas de « mot réservé ». Pour plus de détails, voir Économie de saisie grâce aux identificateurs et fonctions.

#### Voir aussi

Pour une description complète du format des fichiers d’entrée, voir Structure de fichier.

### Notes de bas de page

[1] Les noms de variables sont sensibles à la casse, et ne peuvent contenir ni chiffre, ni ponctuation, ni caractère accentué, ni espace.

#### LilyPond — Manuel d’initiation v2.22.2 (branche stable).