5.6.2 Exemples de funcions de substitució

Aquesta secció presenta alguns exemples de funcions de substitució. No pretenen ésser exhaustives, sinó demostrar algunes de les possibilitats de les funcions de substitució senzilles.

En el primer exemple es defineix una funció que simplifica l’ajustament del farcit d’un element d’inscripció de text TextScript:

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]

A més de nombre, podem usar expressions musicals, com notes, per als arguments de les funcions musicals:

custosNote =
#(define-music-function
     (note)
     (ly:music?)
   #{
     \tweak NoteHead.stencil #ly:text-interface::print
     \tweak NoteHead.text
        \markup \musicglyph "custodes.mensural.u0"
     \tweak Stem.stencil ##f
     #note
   #})

\relative { c'4 d e f \custosNote g }

[image of music]

Ambdues funcions són expressions úniques senzilles en les quals sols falta l’últim element d’una crida de funció o sobreescriptura. Per a aquestes definicions de funció en particular, hi ha una sintaxi alternativa més simple que consisteix simplement a escriure la part constant de l’expressió i substituir l’element final que falta per \etc:

padText =
  \once \override TextScript.padding = \etc

\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]

custosNote =
  \tweak NoteHead.stencil #ly:text-interface::print
  \tweak NoteHead.text
     \markup \musicglyph "custodes.mensural.u0"
  \tweak Stem.stencil ##f
  \etc

\relative { c'4 d e f \custosNote g }

[image of music]

Es poden definir funcions de substitució amb més d’un argument:

tempoPadded =
#(define-music-function
     (padding tempotext)
     (number? markup?)
   #{
     \once \override Score.MetronomeMark.padding = #padding
     \tempo \markup { \bold #tempotext }
   #})

\relative {
  \tempo \markup { "Low tempo" }
  c''4 d e f g1
  \tempoPadded #4.0 "High tempo"
  g4 f e d c1
}

[image of music]


Referència de la notació del GNU LilyPond v2.25.22 (development-branch).