Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: barrio am Donnerstag, 3. März 2016, 21:45
-
Hallo zusammen,
ich möchte gern die folgende interne Schemeliste
(make-music
'SequentialMusic
'elements
(list (make-music
'NoteEvent
'pitch
(ly:make-pitch -1 0 0)
'duration
(ly:make-duration 2 0 1))))
welche durch { c } erzeugt wird selber in Scheme nachbauen und zwar in der Weise, dass zunächst das SequentialMusic-Objekt mit einer leeren Liste als elements-property gebaut wird. Dann soll das NoteEvent hinzugefügt, danach die beiden properties pitch & duration gesetzt werden, sodass exakt obige Liste entsteht. Leider scheitere ich kläglich, könnte daher jemand so nett sein den Schemecode der obige Liste auf diese Weise erzeugt zu posten?
Besten Dank
barrio
-
\version "2.19.36"
#(let ((music (make-music 'SequentialMusic))
(note (make-music 'NoteEvent)))
(ly:music-set-property! music 'elements (list note))
(ly:music-set-property! note 'pitch #{ c #})
(ly:music-set-property! note 'duration #{ 4 #})
#{ \displayMusic #music #})
Edit: Mit Version 2.18 musst du die Dauer noch per ly:make-duration ausschreiben, alleinstehende Dauern wie oben gibts erst ab 2.19.
-
Danke vielmals, das leuchtet mir ein so. Wenn ich jetzt daraus wieder ein score machen möchte, tue ich dies:
\version "2.18.2"
\schemusic =
#(let ((music (make-music 'SequentialMusic))
(note (make-music 'NoteEvent)))
(ly:music-set-property! music 'elements (list note))
(ly:music-set-property! note 'pitch #{ c #} )
(ly:music-set-property! note 'duration
(ly:make-duration 2 0 1))
music)
{ \schemusic }
Das funktioniert auch wunderbar, das score wird erzeugt, gleichzeitig wirft Lily
Fehler: Ungültige Fluchtsequenz: »\schemusic«
raus???
-
\schemusic =
Ein Backslash zu viel ;) Wird auch im log erwähnt, dass das in Zeile 3 passiert.
Ach ja, was mir noch aufgefallen ist: Die geschweiften Klammern brauchst du nicht. Damit packst du nur die SequentialMusic, die schon da ist, nochmal in ne SequentialMusic ein (siehe output von \displayMusic).
-
oh ja, Flüchtigkeitsfehler, danke!