opmo Posted January 18, 2016 Share Posted January 18, 2016 CHORD-INVERSION now with correct octave rotation. chord-inversion n chord &key list root [Function] Arguments and Values: n inversion (rotation) number. chord a chord. list rotation in a sequence. root root chord and inversions together. Description: The function CHORD-INVERSION will generate all the inversions (rotations) of a chord up to and including N. For example, the first inversion of C major will give us: (chord-inversion 1 'c4e4g4) => e4g4c5 (chord-inversion -1 'c4e4g4) => g3c4e4 Root position and 1st inversion together. (chord-inversion 1 'c4e4g4 :root t) => (c4e4g4 e4g4c5) However, requesting the second inversion will give us both the first and second, and so on. Use the LISP primitive REVERSE to place the 2nd inversion before the first. (chord-inversion 2 'c4e4g4 :list t) => (e4g4c5 g4c5e5) (reverse (chord-inversion 2 'c4e4g4 :list t)) => (g4c5e5 e4g4c5) We can also rotate the chords downwards in pitch, for example the rotation of the fifth order below: (chord-inversion -5 'c4e4g4 :list t) => (g3c4e4 e3g3c4 c3e3g3 g2c3e3 e2g2c3) To get only the final rotation in a series: (chord-inversion -2 'c4e4g4) => e3g3c4 Examples: Generate rotations of a chord: (chord-inversion 3 'c4eb4 :list t :root t) => (c4eb4 eb4c5 c5eb5 eb5c6) Link to comment Share on other sites More sharing options...
Recommended Posts