3.4.4 Économie de saisie grâce aux identificateurs et fonctions

Jusqu’à maintenant, vous avez vu ce type de code :

hornNotes = \relative { c''4 b dis c }
\score {
 {
 \hornNotes
 }
}

[image of music]

Vous comprendrez combien cela peut être utile pour écrire de la musique minimaliste :

fragmentA = \relative { a'4 a8. b16 }
fragmentB = \relative { a'8. gis16 ees4 }
violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA }
\score {
 {
 \violin
 }
}

[image of music]

Néanmoins vous pouvez aussi utiliser ces identificateurs – aussi connus sous le nom de variables, macros, ou commandes (définies par l’utilisateur) – pour des retouches :

dolce = \markup { \italic \bold dolce }
centerText = { \once \override TextScript.self-alignment-X = #CENTER }
fthenp =_\markup {
 \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p
}
violin = \relative {
 \repeat volta 2 {
 c''4._\dolce b8 a8 g a b |
 \centerText
 c4.^"hi there!" d8 e f g d |
 c4.\fthenp b8 c4 c-. |
 }
}
\score {
 {
 \violin
 }
}

[image of music]

Ces identificateurs sont évidemment utiles pour économiser de la frappe. Mais ils peuvent l’être même si vous ne les utilisez qu’une seule fois : ils réduisent la complexité. Regardons l’exemple précédent sans aucun identificateur. C’est beaucoup plus laborieux à lire, et particulièrement la dernière ligne.

violin = \relative {
 \repeat volta 2 {
 c''4._\markup { \italic \bold dolce } b8 a8 g a b |
 \once \override TextScript.self-alignment-X = #CENTER
 c4.^"hi there!" d8 e f g d |
 c4._\markup {
 \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p
 }
 b8 c4 c-. |
 }
}

Jusqu’ici nous avons vu des substitutions statiques : quand LilyPond rencontre \centerText, il le remplace par le contenu que nous lui avons défini – c’est-à-dire le contenu à droite de centerText=.

LilyPond gère également des substitutions non-statiques – vous pouvez les voir comme des fonctions.

padText =
#(define-music-function
 (padding)
 (number?)
 #{
 \once \override TextScript.padding = #padding
 #})
\relative {
 c''4^"piu mosso" b a b
 \padText #1.8
 c4^"piu mosso" b a b
 \padText #2.6
 c4^"piu mosso" b a b
}

[image of music]

Utiliser des identificateurs est aussi un bon moyen pour vous épargner du travail si la syntaxe de LilyPond change un jour – voir Mise à jour avec convert-ly. Si vous avez une seule définition, par exemple \dolce, pour tous vos fichiers (voir Feuilles de style) et que la syntaxe change, alors vous n’aurez qu’à mettre à jour votre seule définition \dolce, au lieu de devoir modifier chaque fichier ‘.ly’.


<< Retour à l'accueil de la documentation

LilyPond — Manuel d’initiation v2.21.82 (branche de développement).

AltStyle によって変換されたページ (->オリジナル) /