[ << Scheme-Tutorium ] | [Top][Contents][Index] | [ Schnittstellen für Programmierer >> ] |
[ < Zusammengesetzte LilyPond-Variablen ] | [ Up : Scheme in LilyPond ] | [ Komplizierte Funktionen erstellen > ] |
1.2.7 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 VoltaRepeatedMusic gespeichert, und die alternativen Endungen
in elements
.
[ << Scheme-Tutorium ] | [Top][Contents][Index] | [ Schnittstellen für Programmierer >> ] |
[ < Zusammengesetzte LilyPond-Variablen ] | [ Up : Scheme in LilyPond ] | [ Komplizierte Funktionen erstellen > ] |