1.3.1 Musikalische Funktionen darstellen
Wenn man eine musikalische Funktion erstellt, ist es oft
hilfreich sich anzuschauen, wie musikalische Funktionen
intern gespeichert werden. Das kann mit der Funktion
\displayMusic
erreicht werden:
{ \displayMusic { c'4\f } }
zeigt:
(make-music 'SequentialMusic 'elements (list (make-music 'NoteEvent 'articulations (list (make-music 'AbsoluteDynamicEvent 'text "f")) 'duration (ly:make-duration 2 0 1/1) 'pitch (ly:make-pitch 0 0 0))))
Normalerweise gibt LilyPond diese Ausgabe auf der Konsole mit allen anderen Nachrichten aus. Um die wichtigen Nachrichten in einer Datei zu speichern, kann die Ausgabe in eine Datei umgeleitet werden:
lilypond file.ly >display.txt
Mit LilyPond- und Scheme-Magie kann man LilyPond anweisen, genau diese Ausgabe an eine eigene Datei zu senden:
{ #(with-output-to-file "display.txt" (lambda () #{ \displayMusic { c'4\f } #})) }
Mit etwas Umformatierung ist die gleiche Information sehr viel einfacher zu lesen:
(make-music 'SequentialMusic 'elements (list (make-music 'NoteEvent 'articulations (list (make-music 'AbsoluteDynamicEvent 'text "f")) 'duration (ly:make-duration 2 0 1/1) 'pitch (ly:make-pitch 0 0 0))))
Eine musikalische { ... }
-Sequenz hat die Bezeichnung
SequentialMusic
und ihre inneren Ausdrücke werden als
Liste in seiner 'elements
-Eigenschaft gespeichert. Eine
Note ist als als ein EventChord
-Objekt dargestellt (welches Dauer und
Tonhöhe speichert) und zusätzliche Information enthält (in
diesem Fall ein AbsoluteDynamicEvent
mit einer
"f"
-Text-Eigenschaft).
\displayMusic
gibt die Noten aus, die dargestellt werden, sodass
sie sowohl angezeigt als auch ausgewertet werden. Um die Auswertung zu
vermeiden, kann \void
vor \displayMusic
geschrieben werden.