GNU LilyPond – Manuel de notation : 6.7 Using Scheme code instead of \tweak
Description: GNU LilyPond – Manuel de notation: 6.7 Using Scheme code instead of \tweak
Keywords: GNU LilyPond – Manuel de notation: 6.7 Using Scheme code instead of \tweak

## 6.7 Using Scheme code instead of `\tweak`

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 Adding articulation to notes (example), 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.

#### Manuel de notation