3.4.1 Organisation du code source avec des variables

Lorsque l’on combine tous les éléments étudiés précédemment pour écrire des partitions plus longues, les expressions musicales prennent de l’ampleur et, dans le cas des pièces polyphoniques, deviennent profondément imbriquées, jusqu’au point où il devient difficile de se repérer dans le fichier source. Cet inconvénient peut être résolu par l’utilisation de variables.

En utilisant des variables, parfois appelées identificateurs ou macros, on peut scinder des expressions musicales complexes en des expressions plus simples. Une variable se définit comme suit :

musiqueToto = { … }

Le contenu de l’expression musicale musiqueToto pourra être utilisé plus loin en faisant précéder son nom d’un anti-slash, c’est-à-dire \musiqueToto, tout comme n’importe quelle commande LilyPond. Toute variable doit être définie avant son utilisation dans une autre expression musicale.

violin = \new Staff {
  \relative {
    a'4 b c b
  }
}

cello = \new Staff {
  \relative {
    \clef bass
    e2 d
  }
}

{
  <<
    \violin
    \cello
  >>
}

[image of music]

Par convention, un nom de variable ne comporte que des caractères alphabétiques non accentués, aucun nombre ni tiret. Pour de plus amples informations, voir Structure de fichier.

On peut utiliser une variable déjà définie autant de fois que l’on veut, y compris dans la définition d’une nouvelle variable ; par exemple, cela peut servir à saisir un motif qu’une seule fois, même s’il se répète un grand nombre de fois dans la pièce.

tripletA = \tuplet 3/2 { c,8 e g }
barA = { \tripletA \tripletA \tripletA \tripletA }

\relative c'' {
 \barA \barA
}

[image of music]

Il est possible d’utiliser des variables de types variés. Par exemple,

maLargeur = 60   % un nombre transmis à une variable \paper
                 % (unité = millimètre)
monNom = "Wendy" % une chaîne transmise à un markup
aCinqPapier = \paper { #(set-paper-size "a5") }

En fonction de son contenu, un identificateur peut être utilisé à différents endroits. L’exemple suivant utilise les variables définies ci-dessus.

\paper {
  \aFivePaper
  line-width = \maLargeur
}

{
  c4^\monNom
}

GNU LilyPond – Manuel d’initiation v2.25.22 (development-branch).