4.4.4 Estalvi de tecleig mitjançant variables i funcions
Arribats a aquest punt, heu vist coses d’aquest tipus:
hornNotes = \relative { c''4 b dis c } \score { { \hornNotes } }
Fins i tot us adonareu que això pot ser útil en música minimalista:
fragmentA = \relative { a'4 a8. b16 } fragmentB = \relative { a'8. gis16 ees4 } violí = \new Staff { \fragmentA \fragmentA | \fragmentB \fragmentA | } \score { { \violí } }
Tot i així també es pot fer servir aquests identificadors (que també es coneixen com a variables, macros o instruccions definides per l’usuari) per fer trucs:
dolce = \markup { \italic \bold dolce } padText = { \once \override TextScript.padding = #5.0 } fthenp =_\markup { \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p } violí = \relative { \repeat volta 2 { c''4._\dolce b8 a8 g a b | \padText c4.^"hi there!" d8 e' f g d | c,4.\fthenp b8 c4 c-. | } } \score { { \violí } \layout { ragged-right = ##t } }
Òbviament aquests identificadors són útils per estalviar tecleig. Però són dignes de tenir en compte fins i tot si s’utilitzaran un sol cop: redueixen la complexitat. Examinem l’exemple anterior reescrit sense cap identificador. Trobareu que és molt més difícil de llegir, sobretot l’última línia.
violí = \relative { \repeat volta 2 { c''4._\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-. | } }
Fins ara hem contemplat la substitució estàtica: quan el LilyPond
es troba amb \padText
, el substitueix amb allò que hem
definit que sigui (és a dir, tot el que està a la dreta de
padtext=
).
El LilyPond també pot gestionar substitucions no estàtiques (penseu en elles com funcions).
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" d e f | \padText #2.6 c4^"piu mosso" fis a g | }
La utilització d’identificadors també és una bona forma de reduir
el treball si la sintaxis d’entrada del LilyPond canvia (vegeu
Actualització de fitxers amb convert-ly). Si teniu una sola
definició (com ara \dolce
) per a tots els fitxers (vegeu
Fulls d’estil), i després la sintaxis es
modifica, sols haurà d’actualitzar la seva definició \dolce
única, enlloc de haver de fer canvis a cadascú dels fitxers
‘.ly’.