22.3.2 Ejemplos de funciones de sustitución

Esta sección introduce algunos ejemplos de funciones de sustitución. No pretenden ser exhaustivos, sino más bien mostrar algunas de las posibilidades de las funciones de sustitución sencillas.

En el primer ejemplo, se define una función que simplifica el establecimiento de un espacio de relleno para un objeto gráfico 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]

Además de números, se pueden usar expresiones como notas en los argumentos de las funciones musicales:

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]

Ambas funciones son expresiones únicas sencillas en las que solo falta el último elemento de una llamada de función o una sobreescritura. Para esas definiciones de función en particular existe una sintaxis alternativa más simple, que consiste en escribir solo la parte constante de la expresión y sustituir el elemento final que falta con \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]

Se pueden definir funciones de sustitución con más de un argumento:

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]

Referencia de la notación de GNU LilyPond v2.25.30 (development-branch).