Suivant : , Précédent : Projets d’envergure, Haut : Suggestions de saisie des fichiers LilyPond


5.1.4 Économies de saisie grâce aux identificateurs et fonctions

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

     
     corNotes = \relative c'' { c4 b dis c }
     \score {
       {
         \corNotes
       }
     }

[image of music]

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 }
     violon = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA }
     \score {
       {
         \violon
       }
     }

[image of music]

Cependant, 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 }
     decallageTexte = { \once \override TextScript #'padding = #5.0 }
     fpuisp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
     violon = \relative c'' {
       \repeat volta 2 {
         c4._\dolce b8 a8 g a b |
         \decallageTexte
         c4.^"hi there!" d8 e' f g d |
         c,4.\fpuisp b8 c4 c-. |
       }
     }
     \score {
       {
         \violon
       }
     \layout{ragged-right=##t}
     }

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

     
     decallageTexte =
     #(define-music-function (parser location padding) (number?)
       #{
         \once \override TextScript #'padding = #$padding
       #})
     
     \relative c''' {
       c4^"piu mosso" b a b
       \decallageTexte #1.8
       c4^"piu mosso" d e f
       \decallageTexte #2.6
       c4^"piu mosso" fis a g
     }

[image of music]

Utiliser les identificateurs est aussi un bon moyen pour vous épargner du travail si la syntaxe de LilyPond change un jour — voir Mise à jour d’anciens fichiers. 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.

Cette page documente LilyPond-2.11.58 (branche de développement).

Rapportez toute anomalie en français à lilypond-user-fr@gnu.org ou en anglais à http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs

Vos suggestions à propos de la documentation sont les bienvenues.

Autres langues : English, español, deutsch.