2.5 Scheme-Code innerhalb LilyPonds
Der hauptsächliche Nachteil von \tweak ist seine
syntaktische Inflexibilität. Folgender Code beispielsweise
ergibt einen Syntaxfehler:
F = \tweak #'font-size #-3 -\flageolet
\relative c'' {
c4^\F c4_\F
}
Anders gesagt verhält sich \tweak nicht wie eine Artikulation
und kann auch nicht deren Syntax verwenden: man kann es nicht
mit ^ oder _ anfügen.
Durch die Verwendung von Scheme kann dieses Problem umgangen werden.
Der Weg zum Resultat wird gezeigt in
Artikulationszeichen zu Noten hinzufügen (Beispiel), insbesondere
wie \displayMusic benutzt wird, hilft hier weiter.
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
}
In diesem Beispiel werden die tweaks-Eigenschaften
des Flageolet-Objekts m (mit make-music erstellt)
werden mit ly:music-property ausgelesen, ein neues
Schlüssel-Wert-Paar, um die Schriftgröße zu ändern, wird
der Eigenschaftenliste mithilfe der acons-Schemefunktion
vorangestellt, und das Resultat wird schließlich mit
set! zurückgeschrieben. Das letzte Element des
let-Blocks ist der Wiedergabewert, m.