B.5.2 Eine Funktion auf alle Layout-Objekte anwenden
Der vielfältigste Weg, ein Objekt zu beeinflussen, ist
\applyOutput
. Die Syntax lautet:
\applyOutput Kontext proc
wobei proc eine Scheme-Funktion ist, die drei Argumente benötigt.
Während der Interpretation wird die Funktion proc für jedes Layoutobjekt aufgerufen, dass im Kontext Kontext vorgefunden wird, und zwar mit folgenden Argumenten:
- dem Layoutobjekt
- dem Kontext, in dem das Objekt erstellt wurde
- dem Kontext, in welchem
\applyOutput
bearbeitet wird.
Zusätzlich findet sich der Grund für das Layoutobjekt, etwa
der musikalische Ausdruck oder das Objekt, das für seine Erstellung
verantwortlich war, in der Objekteigenschaft cause
.
Für einen Notenkopf beispielsweise ist das ein
NoteHead-Ereignis, und für einen Notenhals
(ein
Stem-Objekt) ist es ein
NoteHead-Objekt.
Hier ist eine Funktion, die mit \applyOutput
benutzt
werden kann; sie macht Notenköpfe auf der Mittellinie unsichtbar:
#(define (blanker grob grob-origin context) (if (and (memq 'note-head-interface (ly:grob-interfaces grob)) (eq? (ly:grob-property grob 'staff-position) 0)) (set! (ly:grob-property grob 'transparent) #t))) \relative { e4 g8 \applyOutput #'Voice #blanker b d2 }