Posted May 2, 20169 yr Is there a more elegant way to do this? ;; create major scale (defun majorScale (root) (make-scale root 16 :alt '(2 2 1 2 2 2 1))) ;; usage: (majorScale 'c4) ;; 4 part root position harmony of every degree of a major scale (defun harmonizeMajorScale (root) (harmonic-progression '(0 1 2 3 4 5 6 7) (majorScale root) :size 4)) ;; usage: (harmonizeMajorScale 'c4) ;; 4 part drop 2 of every degree of a major scale, with every chord in a specific inversion (defun 4PartDrop2 (chords inversion) (loop for chord in chords collect (chordize (pitch-transpose-n '(0 0 -12 0) (pitch-melodize (list (chord-inversion inversion chord) ) ) ) ) ) ) ;; usage: (4PartDrop2 (harmonizeMajorScale 'c4) 3) Any advice very much appreciated. Kind regards, Wim Dijkgraaf
May 3, 20169 yr (mapcar (lambda(x) ;; mapcar will apply the inversion to each chord (chord-inversion 3 x)) (harmonic-progression ;; harmonic progression definition (integer-transpose -1 '(1 2 3 4 5 6 7)) ;;degree for the chords '(c4 major) ;; scale used :size 4 ;; chords size )) SB.
May 3, 20169 yr Author Thanks Stephane for your reply. Interesting solution! If I'm not mistaken, your solution doesn't include the Drop 2 (transpose second voice from the top an octave down). Any idea how to incorporate that into this approach? Kind regards, Wim Dijkgraaf
May 4, 20169 yr Hi Wim, a possible solution: (setf chords (mclist (mapcar (lambda(x) ;; mapcar will apply the inversion to each chord (chord-inversion 3 x)) (harmonic-progression ;; harmonic progression definition (integer-transpose -1 '(1 2 3 4 5 6 7)) ;;degree for the chords '(c4 major) ;; scale used :size 4 ;; chords size )))) (setf drop2 (chordize-list (pitch-transpose-n '(0 0 -12 0) (pitch-melodize chords)))) SB.
Create an account or sign in to comment