Guida alla Notazione di LilyPond: 5.6.1 Sintassi della funzione di sostituzione

### 5.6.1 Sintassi della funzione di sostituzione

Creare una funzione che sostituisca una variabile presente nel codice LilyPond è semplice. La forma generica di queste funzioni è:

>     funzione =
>     #(define-music-function
>          (arg1 arg2 …)
>          (tipo1? tipo2? …)
>        #{
>          …musica…
>        #})

dove

> `argN` | L’nesimo argomento.
> `tipoN?` | Un tipo di predicato Scheme per il quale `argN` deve ritornare `#t`.
> `…musica…` | Il normale input LilyPond, usando `$` (nei punti in cui sono consentiti solo i costrutti LilyPond) o `#` (per usarlo come un valore Scheme o come argomento di una funzione musicale o come musica all’interno di liste di musica) per riferirsi agli argomenti (es: ‘`#arg1`’).

La lista del tipo di predicati è obbligatoria. Alcuni dei tipi di predicati più comuni usati nelle funzioni musicali sono:

>     boolean?
>     cheap-list?  (usarlo al posto di ‘list?’ per un'elaborazione più veloce)
>     ly:duration?
>     ly:music?
>     ly:pitch?
>     markup?
>     number?
>     pair?
>     string?
>     symbol?

Un elenco dei tipi di predicati disponibili si trova in Tipi di predicati predefiniti. Sono consentiti anche tipi di predicati definiti dagli utenti.

#### Vedi anche

Guida alla notazione: Tipi di predicati predefiniti.

Estendere LilyPond: Music functions.

File installati: ‘`lily/music-scheme.cc`’, ‘`scm/c++.scm`’, ‘`scm/lily.scm`’.

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