2.8 Scheme-Code innerhalb LilyPonds

TODO: das Beispiel für diesen Abschnitt ist nicht gut gewähtl:

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

(beachte ‘-’, was ein Nachereignis anzeigt) funktioniert für den geschilderten Zweck sehr gut. Aber bis der Abschnitt neu geschrieben wird, nehmen wir einfach an, dass wir das nicht wissen.

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''4^\F c4_\F
}

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''4^\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.

LilyPond erweitern v2.25.22 (development-branch).