Extender LilyPond: A.3.2 Propiedades musicales

### A.3.2 Propiedades musicales

Veamos un ejemplo:

>     someNote = c'
>     \displayMusic \someNote
>     ===>
>     (make-music
>       'NoteEvent
>       'duration
>       (ly:make-duration 2 0 1/1)
>       'pitch
>       (ly:make-pitch 0 0 0))

El objeto `NoteEvent` es la representación de `someNote`. Sencillo. ¿Y si ponemos el c’ dentro de un acorde?

>     someNote = <c'>
>     \displayMusic \someNote
>     ===>
>     (make-music
>       'EventChord
>       'elements
>       (list (make-music
>               'NoteEvent
>               'duration
>               (ly:make-duration 2 0 1/1)
>               'pitch
>               (ly:make-pitch 0 0 0))))

Ahora el objeto `NoteEvent` es el primer objeto de la propiedad `'elements` de `someNote`.

La función `display-scheme-music` es la función que se usa por parte de `\displayMusic` para imprimir la representación de Scheme de una expresión musical.

>     #(display-scheme-music (first (ly:music-property someNote 'elements)))
>     ===>
>     (make-music
>       'NoteEvent
>       'duration
>       (ly:make-duration 2 0 1/1)
>       'pitch
>       (ly:make-pitch 0 0 0))

Después se accede a la altura de la nota a través de la propiedad `'pitch` del objeto `NoteEvent`:

>     #(display-scheme-music
>        (ly:music-property (first (ly:music-property someNote 'elements))
>                           'pitch))
>     ===>
>     (ly:make-pitch 0 0 0)

La altura de la nota se puede cambiar estableciendo el valor de esta propiedad `'pitch`.

>     #(set! (ly:music-property (first (ly:music-property someNote 'elements))
>                               'pitch)
>            (ly:make-pitch 0 1 0)) ;; establecer la altura a d'.
>     \displayLilyMusic \someNote
>     ===>
>     d'4

#### LilyPond — Extender v2.22.2 (rama estable).