2.8 Code Scheme intégré

TODO: the example for this section is ill-chosen since

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

(note the ‘-’ marking it as a post event) will actually work fine for the stated purpose. Until this section gets a rewrite, let’s pretend we don’t know.

L’inconvénient principal de la commande \tweak est la rigidité de sa syntaxe. Par exemple, le code suivant produit une erreur.

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

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

En d’autres termes, \tweak ne se comporte pas comme une articulation : il ne peut notamment pas être accolé avec les symboles ‘^’ ou ‘_’.

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