Jump to content

Opusmodus 3.0.29422 (Update)


opmo

Recommended Posts

New function: DIATONIC-CHORD

 

The DIATONIC-CHORD function generates chord sequences based on diatonic chord symbols relative to a specified key. It allows for flexible chord progression creation in both major and minor keys by interpreting chord degrees (e.g., I, ii, V7) within the context of the given key signature. The function supports key signature specification, inversions, and drop voicings, enabling composers and music theorists to programmatically generate chords with varied harmonic textures and smoother voice leading.

 

This function is ideal for composers and arrangers who wish to streamline the creation of chord progressions, allowing for rapid experimentation with different harmonic ideas. Music theorists and educators can use it as a practical tool for demonstrating concepts related to harmony, chord functions, and voice leading.

 

Chord Progressions and Scale Degrees

 

Major Key Scale Degrees:

I Tonic (root) chord

ii Supertonic (minor)

iii Mediant (minor)

IV Subdominant (major)

V Dominant (major)

vi Submediant (minor)

vii° Leading-tone (diminished)

 

Minor Key Scale Degrees:

i Tonic minor chord

ii° Supertonic diminished chord

♭III Mediant major chord (flattened third degree)

iv Subdominant (minor)

V Dominant (major) (often borrowed from harmonic minor)

VI Submediant (major)

vii° Leading-tone (diminished) on the seventh degree

 

Chord Progressions:

A chord progression is a sequence of chords outlining the harmonic structure of a piece. Common progressions create a sense of movement and resolution, such as:

 

ii–V–I: Common in jazz.

I–IV–V: Found in blues and rock.

I–vi–IV–V: Classic pop progression.

 

By specifying chords using scale degrees, you can create progressions relative to the key, making transposition effortless. The function interprets chord symbols based on the provided key signature and generates appropriate chords according to diatonic harmony rules.

 

The list starts with a key symbol followed by chord degrees. Major key: (:c I IV V) for C major. Minor key: (:am i iv V) for A minor. You can include chords from different keys by specifying new key symbols within the list: (:c I IV V :fm i v) uses chords from C major and F minor. Use (=) to repeat the previous chord in the progression: (:c I = IV = V = ).

 

The chord symbols you provide (e.g., i, ii, III, IV, v, etc.) do not need to follow any capitalisation rules. The function is designed to interpret the chord symbols correctly regardless of their case.

Examples:

Progression in C Major:

 

(diatonic-chord '(:c I IV V))
=> (c4e4g4 f4a4c4 g4b4d4)

 

 

Progression in G Major:

(diatonic-chord '(:g I V vi IV))
=> (g4b4d5 d5fs5a4 e5g4b4 c5e5g4)

 

 

Progression in E Minor:

(diatonic-chord '(:em i iv V i))
=> (e4g4b4 a4c5e4 b4eb5fs4 e4g4b4)

 

 

Circle of Fifths Progression in C Major:

(diatonic-chord '(:c I IV viio iii vi ii V I))
=> (c4e4g4 f4a4c4 b4d4f4 e4g4b4 a4c4e4 d4f4a4 g4b4d4 c4e4g4)

 

 

Pachelbel’s Canon Progression in D Major:

(diatonic-chord '(:d I V vi iii IV I IV V))
=> (d4fs4a4 a4cs5e4 b4d4fs4 fs4a4cs5 g4b4d4 d4fs4a4 g4b4d4 a4cs5e4)

 

 

Modal Mixture Progression in C Major:

(diatonic-chord '(:c I vi7 bVII IV V7 I))
=> (c4e4g4 a4c4e4g4 bb4d4f4 f4a4c4 g4b4d4f4 c4e4g4)

 

 

Applying Inversions and Drop Voicings:

(setf chords '(:c i i i i iv iv v v))

(list
 (diatonic-chord chords :drop 1 :inv -1)
 (diatonic-chord chords :drop 2 :inv 1)
 (diatonic-chord chords :drop 1 :inv 0)
 (diatonic-chord chords :drop 2 :ink -1)
)

 

Randomized Inversions and Voicings:

(diatonic-chord '(:fs i i ii i iv iv v v)
                :inv (rnd-sample 8 '(1 2 -1 2 -3 0))
                :drop (rnd-sample 8 '(1 2)))

(diatonic-chord '((:e i = = =)
                  (:e vi7 = = =)
                  (:e imaj7 = = =)
                  (:e v11 = = =))
                :inv (gen-loop 4 (rnd-sample 4 '(0 -1 -2 -3)))
                :drop (gen-loop 4 (rnd-sample 4 '(1 0))))

 

Chord Progression for an Entire Song:

(setf intro '(:c I vi IV V))
(setf verse '(:c I V vi IV ii V7/vi vi IV I V))
(setf chorus '(:am i iv VI III iv i V7))
(setf bridge '(:eb IV V7/V V7 I vi ii V7 I))
(setf outro '(:c vi IV I ii V7 I IV I))

(setf song-progression
      (append intro verse chorus bridge chorus outro))

(setf song-chords
      (diatonic-chord
       song-progression
       :inv '(0 1 0 1                 ; Introduction inversions
              2 0 -1 0 1 0 1 0 -1 -2  ; Verse inversions
              0 1 2 0 1 2 0           ; Chorus inversions
              0 0 1 0 1 2 0 1         ; Bridge inversions
              0 1 2 0 1 2 0           ; Chorus inversions
              0 0 0 1 0 1 1 -2))      ; Outro inversions
      )
(make-omn
:pitch song-chords
:length '(q q h q  q h q q q q q q h q  q q q q q q h
           q h q q h q q h  q q q q q q h  h h h q q h h w))

 

Best wishes,

Janusz

Link to comment
Share on other sites

  • opmo changed the title to Opusmodus 3.0.29422 (Update)
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy