Zugegebenermaßen, ich weiß nicht ganz genau, was ich da tue ;)
Aber es funktioniert
#(define (make-a-list-all-chords-from-music music)
"Return a list of all Chords from @var{music}."
(reverse!
(let loop ((music music) (pitches '()))
(let ((p (music-name music)))
(if (eq? p 'EventChord)
(cons music pitches)
(let ((elt (ly:music-property music 'element)))
(fold loop
(if (ly:music? elt)
(loop elt pitches)
pitches)
(music-elts music))))))))
Allerdings habe ich zufällig bemerkt, dass z.B. markups nicht entfernt werden. Wie könnte ich das ändern?
Das lässt sich nicht kompilieren, music-name ist unbekannt, von ,,es funktioniert" kann also keine Rede sein. Bitte immer ein kompilierbares Minimalbeispiel mit Versionsangabe! Müsstest du doch inzwischen wissen ;) Und im Falle von Funktionen mit beispielhafter Verwendung.
Und wenn du nicht weißt, was du tust, wärs nett, wenigstens zu sagen, was du tun willst.
Sry, ich habe übersehen, dass da eine Menge Definitionen fehlen. :-[