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.