3.4.4 Économie de saisie grâce aux identificateurs et fonctions
Jusqu’à maintenant, vous avez vu ce type de code :
hornNotes = \relative c'' { c4 b dis c }
\score {
{
\hornNotes
}
}
Vous comprendrez combien cela peut être utile pour écrire de la musique minimaliste :
fragmentA = \relative c'' { a4 a8. b16 }
fragmentB = \relative c'' { a8. gis16 ees4 }
violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA }
\score {
{
\violin
}
}
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 }
padText = { \once \override TextScript #'padding = #5.0 }
fthenp =_\markup {
\dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p
}
violin = \relative c'' {
\repeat volta 2 {
c4._\dolce b8 a8 g a b |
\padText
c4.^"hi there!" d8 e' f g d |
c,4.\fthenp b8 c4 c-. |
}
}
\score {
{
\violin
}
\layout { ragged-right = ##t }
}
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 c'' {
\repeat volta 2 {
c4._\markup { \italic \bold dolce } b8 a8 g a b |
\once \override TextScript #'padding = #5.0
c4.^"hi there!" d8 e' f g d |
c,4.\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 \padText, il le remplace par le contenu que
nous lui avons défini – c’est-à-dire le contenu à droite de
padText=.
LilyPond gère également des substitutions non-statiques – vous pouvez les voir comme des fonctions.
padText =
#(define-music-function
(parser location padding)
(number?)
#{
\once \override TextScript #'padding = $padding
#})
\relative c''' {
c4^"piu mosso" b a b |
\padText #1.8
c4^"piu mosso" d e f |
\padText #2.6
c4^"piu mosso" fis a g |
}
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’.
Autres langues : English, česky, deutsch, español, magyar, italiano, 日本語, nederlands.