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’.