Extender LilyPond: B.3.2 Ejecutar una función sobre todos los objetos de la presentación

### B.3.2 Ejecutar una función sobre todos los objetos de la presentación

La manera más versátil de realizar el ajuste fino de un objeto es `\applyOutput`, que funciona insertando un evento dentro del contexto especificado ( ApplyOutputEvent). Su sintaxis es

>     \applyOutput contexto proc

donde `proc` es una función de Scheme que toma tres argumentos.

Al interpretarse, la función `proc` se llama para cada objeto de presentación que se encuentra en el contexto `contexto` en el tiempo actual, con los siguientes argumentos:

- el propio objeto de presentación,
- el contexto en que se creó el objeto de presentación, y
- el contexto en que se procesa `\applyOutput`.

Además, la causa del objeto de presentación, es decir el objeto o expresión musical que es responsable de haberlo creado, está en la propiedad `cause` del objeto. Por ejemplo, para la cabeza de una nota, éste es un evento NoteHead, y para un objeto plica, éste es un objeto Stem.

He aquí una función que usar para `\applyOutput`; borra las cabezas de las notas que están sobre la línea central y junto a ella:

>     #(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 c' {
>       a'4 e8 <<\applyOutput #'Voice #blanker a c d>> b2
>     }

Otros idiomas: English, deutsch.

#### LilyPond — Extender