• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

{ c }-Scheme-Repräsentation in Scheme erzeugen?

Begonnen von barrio, Donnerstag, 3. März 2016, 21:45

Vorheriges Thema - Nächstes Thema

barrio

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

fugenkomponist

#1
\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.

barrio

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???

fugenkomponist

#3
Zitat von: barrio am Freitag, 25. März 2016, 10:08
\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).

barrio