GNU LilyPond – Manuel de notation: 5.6.1 Syntaxe d'une fonction de substitution

### 5.6.1 Syntaxe d’une fonction de substitution

La rédaction d’une fonction chargée de substituer du code LilyPond à une variable est chose relativement aisée. Une telle fonction est de la forme

>     fonction =
>     #(define-music-function
>          (arg1 arg2…)
>          (type1? type2?…)
>        #{
>          …musique…
>        #})

où

`argN` | nième argument.
`typeN?` | un type de prédicat Scheme pour lequel `argN` doit renvoyer `#t`.
`…musique…` | du code LilyPond tout ce qu’il y a de plus ordinaire, avec des `$` (là où seule une construction LilyPond est autorisée) et des `#` (lorsqu’il s’agit d’une valeur en Scheme, d’un argument de fonction musicale ou de musique faisant partie d’une liste) pour référencer les arguments (par ex. ‘`#arg1`’).

La liste des types de prédicat est aussi obligatoire. Voici quelques uns des types de prédicat les plus utilisés dans les fonctions musicales :

>     boolean?
>     cheap-list?  (au lieu de « list? », pour accélérer le traitement)
>     ly:duration?
>     ly:music?
>     ly:pitch?
>     markup?
>     number?
>     pair?
>     string?
>     symbol?

Une liste plus fournie est disponible à l’annexe Types de prédicats prédéfinis. Vous pouvez par ailleurs définir vos propres types de prédicat.

#### Voir aussi

Manuel de notation : Types de prédicats prédéfinis.

Manuel d’extension : Fonctions musicales.

Fichiers d’initialisation : ‘`lily/music-scheme.cc`’, ‘`scm/c++.scm`’, ‘`scm/lily.scm`’.

#### LilyPond — Manuel de notation v2.22.2 (branche stable).