2.8 Code Scheme intégré

À REVOIR : depuis la rédaction de cette section, LilyPond en est arrivé à un point tel que trouver un exemple simple où l’on se retrouve obligé d’en venir à utiliser du code Scheme devient chose ardue.

En attendant un remaniement de cette section, faisons comme si nous l’ignorions.

L’inconvénient principal de la commande \tweak est la rigidité de sa syntaxe. Par exemple, le code suivant produit une erreur de syntaxe (du moins, c’était le cas auparavant).

F = \tweak font-size #-3 -\flageolet

\relative c'' {
  c4^\F c4_\F
}

C’est en se servant du langage Scheme que l’on peut résoudre ce problème. Dans cet exemple, on a recours aux méthodes décrites dans Ajout d’articulation à des notes (exemple), en particulier quant à l’emploi de \displayMusic.

F = #(let ((m (make-music 'ArticulationEvent
                          'articulation-type "flageolet")))
       (set! (ly:music-property m 'tweaks)
             (acons 'font-size -3
                    (ly:music-property m 'tweaks)))
       m)

\relative c'' {
  c4^\F c4_\F
}

Ici les propriétés tweak de l’objet flageolet nommé ‘m’ (créé au moyen de make-music) sont extraites par ly:music-property, une nouvelle valeur de la taille de fonte est ajoutée à la liste de ses propriétés (grâce à la fonction Scheme acons), et le résultat de cette opération est renvoyé par set!. Le dernier élément, dans ce bloc let, est la valeur finale de ‘m’ lui-même.


Autres langues : English, deutsch, español.
About automatic language selection.

LilyPond — Extension des fonctionnalités v2.18.2 (branche stable).