LilyPond erweitern: 2.6.2 Eine Funktion auf alle Layout-Objekte anwenden

### 2.6.2 Eine Funktion auf alle Layout-Objekte anwenden

Der vielfältigste Weg, ein Objekt zu beeinflussen, ist `\applyOutput`. Das funktioniert, indem ein musikalisches Ereignis in den angegebenen Kontext eingefügt wird ( ApplyOutputEvent). 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 ist es ein Stem-Objekt.

Hier ist eine Funktion, die mit `\applyOutput` benutzt werden kann; sie macht Notenköpfe auf und neben der Mittellinie unsichtbar:

>     #(define (blanker grob grob-origin context)
>        (if (and (memq 'note-head-interface (ly:grob-interfaces grob))
>                 (< (abs (ly:grob-property grob 'staff-position)) 2))
>            (set! (ly:grob-property grob 'transparent) #t)))

>     \relative {
>       a'4 e8 <<\applyOutput Voice #blanker a c d>> b2
>     }

#### LilyPond – Extending v2.22.2 (stabiler Zweig).