• 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ü

Transponieren von Musiklisten / map /append-map

Begonnen von Manuela, Samstag, 26. März 2016, 19:43

Vorheriges Thema - Nächstes Thema

Manuela

Einen großen Teil meines Vorhabens habe ich schon gelöst, dank Harm  :D
Die Ausgabe klappt auch ganz wunderbar

Ich kriege es wieder einmal nicht gebacken  :(

Ich möchte eine Liste von Musikausdrücken transponieren, sodass ich eine Liste erhalte, die zunächst die untransponierte Musik, dann die mit dem 1. Pitch transponierte, dann die mit dem 2. Pitch transponierte usw erhalte

\version "2.19.38"

\language "deutsch"

Tonleitern=< des d es >

ChordI = \chordmode { c:1 }
ChordII = \chordmode { c:2 }
ChordIII = \chordmode { c:3 }
ChordIV = \chordmode { c:4 }
ChordV = \chordmode { c:5 }
ChordVI = \chordmode { c:6 }
ChordVII = \chordmode { c:7 }
ChordVIII = \chordmode { c:8 }
ChordIX = \chordmode { c:9 }
ChordX = \chordmode { c:10 }
ChordXI = \chordmode { c:11 }
ChordXII = \chordmode { c:12 }
ChordXIII = \chordmode { c:13 }
ChordXIV = \chordmode { c:13.11 }
ChordXV = \chordmode { c:14 }
ChordXVI = \chordmode { c:m }
ChordXVII = \chordmode { c:m6 }
ChordXVIII = \chordmode { c:m7 }

#(define MusLis (list
                 ChordI
                 ChordII
                 ChordIII
                 ChordIV
                 ChordV
                 ChordVI
                 ChordVII
                 ChordVIII
                 ChordIX
                 ChordX
                 ChordXI
                 ChordXII
                 ChordXIII
                 ChordXIV
                 ChordXV
                 ChordXVI
                 ChordXVII
                 ChordXVIII ))

#(define Transpo
   (define-music-function (m music)(ly:music? ly:music?)
     (music-clone m
       'elements
       (map (lambda (pitch)
              (ly:music-property #{ \transpose c $pitch $music #} 'element))
         (event-chord-pitches m)
         )
       )
     )
   )

#(define Anzahl (length MusLis))
#(define Mehr-Leitern (make-list Anzahl Tonleitern))

#(define Alles (map Transpo Mehr-Leitern MusLis))
#(display (length Alles))



Map ergibt natürlich eine Liste mit 18 Elementen, also nicht das, was ich will, nämlich eine Liste mit 3x18 Elementen. Ersetze ich map durch append-map, erhalte ich jedoch eine Fehlermeldung.

In der letzten Ausbaustufe möchte ich noch die Chordnamen darunter schreiben, habe dazu noch keine Idee.

Sry Harm dass ich dich so oft belästige  :-[

Manuela

#1
Inzwischen kann ich transponieren, das Ergebnis aber dürfte noch irgendeinen Haken haben, weil meine bereits frühere funktionierende Funktion nicht mehr funktioniert.


\version "2.19.38"

\language "deutsch"

Tonleitern=< des d es >

#(define ( Akkorde-in-allen-Tonleitern Pitch Musik)
   (append-map
    (lambda (p)
      (map
       (lambda (music)
         #{ { \transpose c $p $music } #})
       Musik
       )
      )
    (event-chord-pitches Pitch)
    )
   )


Update: es passt doch, ich muss einfach ein "c" bei der Variable Tonleitern hinzufügen  ;D