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
     (parser location arg1 arg2 …)
     (type1? type2? …)
   #{
     …musique…
   #})

argNniè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’).

Les arguments parser et location sont obligatoires ; ils sont utilisés dans certaines situations évoluées, comme indiqué dans le manuel d’extension des fonctionnalités à au chapitre Fonctions musicales. Assurez-vous bien de ne pas les omettre dans vos fonctions de substitution.

La liste des types de prédicat est elle 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’.


Autres langues : English, deutsch, español, italiano, 日本語.
About automatic language selection.

LilyPond — Manuel de notation