Guida alla Notazione di LilyPond: 5.6.2 Esempi della funzione di sostituzione

### 5.6.2 Esempi della funzione di sostituzione

Questa sezione presenta alcuni esempi di funzione di sostituzione. L’obiettivo non è fornire un elenco esaustivo, ma mostrare soltanto alcune delle possibilità di semplici funzioni di sostituzione.

Nel primo esempio, viene definita una funzione che semplifica il padding di un oggetto TextScript:

>     padText =
>     #(define-music-function
>          (padding)
>          (number?)
>        #{
>          \once \override TextScript.padding = #padding
>        #})

>     \relative {
>       c''4^"più mosso" b a b
>       \padText #1.8
>       c4^"più mosso" b a b
>       \padText #2.6
>       c4^"più mosso" b a b
>     }

Oltre ai numeri, si possono usare come argomenti delle funzioni musicali anche le espressioni musicali, come le note:

>     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 }

Entrambe queste funzioni sono semplici espressioni singole dove manca soltanto l’ultimo elemento di una chiamata di una funzione o di una sovrascrittura. Per queste particolari definizioni di funzione, esiste una sintassi alternativa più semplice, che consiste nello scrivere interamente la parte costante dell’espressione e sostituire il suo elemento finale mancante con `\etc`:

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

>     \relative {
>       c''4^"più mosso" b a b
>       \padText #1.8
>       c4^"più mosso" b a b
>       \padText #2.6
>       c4^"più mosso" b a b
>     }

>     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 }

Si possono definire funzioni di sostituzione con molteplici argomenti:

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

>     \relative {
>       \tempo \markup { "Tempo basso" }
>       c''4 d e f g1
>       \tempoPadded #4.0 "Tempo alto"
>       g4 f e d c1
>     }

#### LilyPond — Guida alla Notazione v2.22.2 (ramo stabile).