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…
   #})

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


LilyPond — Manuel de notation v2.23.82 (branche de développement).