Extender LilyPond: A.2.6 Representación interna de la música

### A.2.6 Representación interna de la música

Internamente, la música se representa como una lista de Scheme. La lista contiene varios elementos que afectan a la salida impresa. El análisis sintáctico es el proceso de convertir la música de la representación de entrada de LilyPond a la representación interna de Scheme.

Cuando se analiza una expresión musical, se convierte en un conjunto de objetos musicales de Scheme. La propiedad definitoria de un objeto musical es que ocupa un tiempo. El tiempo que ocupa se llama duración. Las duraciones se expresan como un número racional que mide la longitud del objeto musical en redondas.

Un objeto musical tiene tres clases de tipos:

- nombre musical: Cada expresión musical tiene un nombre. Por ejemplo, una nota lleva a un NoteEvent, y `\simultaneous` lleva a una SimultaneousMusic. Hay una lista de todas las expresiones disponibles en el manual de Referencia de funcionamiento interno, bajo el epígrafe expressions Music expressions.
- ‘type’ (tipo) o interface: Cada nombre musical tiene varios ‘tipos’ o interfaces, por ejemplo, una nota es un `event`, pero también es un `note-event`, un `rhythmic-event`, y un `melodic-event`. Todas las clases de música están listadas en el manual de Referencia de funcionamiento interno, bajo el epígrafe Music classes.
- objeto de C++: Cada objeto musical está representado por un objeto de la clase `Music` de C++.

La información real de una expresión musical se almacena en propiedades. Por ejemplo, un NoteEvent tiene propiedades `pitch` y `duration` que almacenan la altura y la duración de esa nota. Hay una lista de todas la propiedades disponibles en el manual de Referencia de funcionamiento interno, bajo el epígrafe Music properties.

Una expresión musical compuesta es un objeto musical que contiene otros objetos musicales dentro de sus propiedades. Se puede almacenar una lista de objetos dentro de la propiedad `elements` de un objeto musical, o un único objeto musical ‘hijo’ dentro de la propiedad `element`. Por ejemplo, SequentialMusic tiene su hijo dentro de `elements`, y GraceMusic tiene su argumento único dentro de `element`. El cuerpo de una repetición se almacena dentro de la propiedad `element` de RepeatedMusic, y las alternativas dentro de `elements`.

Otros idiomas: English, deutsch.

#### LilyPond — Extender