LilyPond erweitern: 1.2.6 Interne musikalische Repräsentation

### 1.2.6 Interne musikalische Repräsentation

Intern werden Noten als Scheme-Liste dargestellt. Die Liste enthält verschiedene Elemente, die die Druckausgabe beeinflussen. Parsen nennt man den Prozess, der die Noten aus der LilyPond-Repräsentation in die interne Scheme-Repräsentation überführt.

Wenn ein musikalischer Ausdruck geparst wird, wird er in eine Gruppe von Scheme-Musikobjekten konvertiert. Die definierende Eigenschaft eines Musikobjektes ist, dass es Zeit einnimmt. Die Zeit, die ein Objekt braucht, wird Dauer (engl. duration) genannt. Dauern werden in rationalen Zahlen ausgedrückt, die die Länge des Musikobjekts in Ganzen Noten angeben.

Ein Musikobjekt hat drei Typen:

- Musikbezeichnung (music name): Jeder Musikausdruck hat eine Bezeichnung. Eine Note beispielsweise erzeugt ein NoteEvent und `\simultaneous` produziert SimultaneousMusic. Eine Liste aller möglichen Ausdrücke findet sich in der Referenz der Interna, unter Music expressions.
- Typ (type) oder Schnittstelle (interface): Jede Musikbezeichnung hat mehrere Typen oder Schnittstellen, beispielsweise eine Note ist ein Ereignis (`event`), aber auch ein Notenereignis (`note-event`), ein rhythmisches Ereignis (`rhythmic-event`) und ein Melodieereignis (`melodic-event`). Alle Musikklassen sind in der Referenz der Interna aufgelistet, unter Music classes.
- C++-Objekt: Jedes Musikobjekt ist durch ein Objekt der C++-Klasse `Music` repräsentiert.

Die eigentliche Information eines musikalischen Ausdrucks wird in Eigenschaften gespeichert. Ein NoteEvent beispielsweise hat die Eigenschaften Tonhöhe (`pitch`) und Dauer (`duration`), die die Dauer und die Tonhöhe der Note speichern. Eine Liste aller möglichen Eigenschaften findet sich in der Referenz der Interna, unter Music properties.

Ein zusammengesetzter musikalischer Ausdruck ist ein Musikobjekt, das andere Musikobjekte als Eigenschaften enthält. Eine Liste an Objekten kann in der `elements`-Eigenschaft eines Musikobjekts bzw. ein einziges Ableger-Musikelement in der `element`-Eigenschaft gespeichert werden. SequentialMusic beispielsweise hat sein einziges Argument in `element`. Der Körper einer Wiederholung wird in der `element`-Eigenschaft von RepeatedMusic gespeichert, und die alternativen Endungen in `elements`.

Andere Sprachen: English, español.

#### LilyPond – Extending