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