Chord tensions

Natural chord tensions form corresponding arpeggios on top of chords.

For example:

This relationship results in the following table:

chord From 7th From 9th
Minor 7th 7b+9+11+13 = Maj7 9+11+13+R = Min 7th
Min 7th b5 7b+9+11+b13 = Full diminished 9+11+b13+R = Min 7th b5
Dom 7th 7b+9+#11+13 = 5# 7th 9+11#+13+R = Dom 7th
Maj 7th 7+9+#11+13 = Min 7th 9+11#+13+R = Dom 7th

* (R = Root, 8va) Patterns start to emerge, as some tensions produce the same kind of chords (but a tone away).
Extremely fun stuff.

As for altered tensions in dominant 7ths, the possibilities explode:

For example:

Dom 7th tensions From 7th From 9th
#9 #11 7+#9+#11 = 2nd inv Min/sus4? #9+#11(+b13!)+R = Full diminished

Once you get ahold of these possibilitys, you realize you can play chord superimpositions that emphatize tensions. A good practice routine should build up the memory of these relationships between chord types and what kind of upper structure harmonic structures one can create.

So let’s do that, and take a systematic approach to this information, by chord quality:

Minor 7th chords

How many upper structure arpeggios can we build from minor 7th chords and tensions?

Interval Tensions and chord tones Resulting chord
R - -
9 9+11+13+R Min 7
3b 3b+5+7+9 Maj 7
11 11+13+R+b3rd Dom 7
5 5+7+9+11 Min 7
13 13+R+3rd+5 Min 7 (5b)
7th 7b+9+11+13 Maj 7

The result is quite pedestrian: you build… the chords of the majord scale (gasp!). Note that I’ve not included 9b, even if it’s in there in the phrygian mode, since it’s usually considered pretty disonant over minor 7ths. Most people also consider the b13 as an unavailable tension.

Some interesting notes here and there:

Major 7th

[To be expanded]

Dominant 7th

By far the most versatile chord, as you can build almost any chord quality over them. [To be expanded]

And how the hell am I supposed to practice this?

Now, imagine you have a ii-V-I to play over, and you want to try some of these combinations. If you follow this page, you’ll quickly notice that with all the possibilities of dominant alterations, you can get 702 combinations of chord superimpositions, specially if you consider each diminished chord as distinct (though we know in practice that’s not the case). It’s hard to navigate this space of possibilities.

The good news is that this is one of those problems a computer can quickly solve, so I wrote a small program that, given a ii-V-I chord, gives you a random combination of chord superimpositions for those. Similar to repeatition learning, the purpose of this program is to give you:

  1. Chord possibilities that you wouldn’t have considered otherwise.
  2. A way to get used to the sound of these subtitutions
  3. Spaced repetition is necessary for long-term memory. Interleaved repetition is then the best approach to practice this

God bless Python:

import sys
import numpy as np
import random
np.set_printoptions(threshold=sys.maxsize)


# creating various numpy arrays for each of the chord qualities
minors = np.array(["1: Min7", "2: Min7","b3: Maj7", "4: Dom7", "5: Min7", "b7:Maj7"])
dom = np.array(["1: Dom7", "1: Min7 (b5)", "1: Dim7", 
                "b2: Dim7", "b2: MinMaj7",
                "2: Dom7", "2: Maj7",
                "b3: Min7", "b3: Dom7", "b3: Maj7", "b3: Min7(b5)", "b3: Dim7",
                "3: Min7(b5)", "3: Dim7",
                "#4: Min7", "#4: Dom7", "#4: Min7(b5)","#4: Dim7",
                "5: Dim7", "5: MinMaj7",
                "b6: Maj7","b6: Dim7",
                "6: Min7", "6: Dom7", "6: Maj7", "6: Min7(b5)", "6: Dim7",
                "b7: Dim7",
                ])
majors = np.array(["1: Maj7", "1: Maj6", "2: Dom7", "3: Min7", "5: Maj7", "6: Min7", "7: Min7"])

# Arranging them to get all possible II-V-I possibilities
combinations = np.array(np.meshgrid(minors, dom, majors)).T.reshape(-1, 3)
# just get combinations out to a file to see all possible combinations

# if you just want a random one, do something like this:          
allchords = {"I" : majors,
            "II" : minors,
            "V" : dom}

for key, val in allchords.items():
    print(key, "from",  random.choice(val))
# plus, if you want any other combination of chords,
# like minor, minor and major,
# just change the dictionary

This is a very easy, kind of brute force implementation of a II-V-I superimposition ramdomizer. Each time you call this program it’ll give you a randomized superimposition option - in a certain sense, very similar to the anki approach to learning, if a bit more modular. The output is composed of the degree of the chord from which you build a chord quality. For example, consider this output:

II from 2: Min7
V from 3: Dim7
I from 1: Maj7

What this output is telling you, is that over a minor chord of a II-V-I you could try to play a minor 7th arpeggio from the second degree (, a diminished arpeggio from the third degree of the dominant (so, a V(b9) after all) and finish with a regular major chord over the I. In C, that would mean that over D-7 / G7 / CMaj7 you could try playing E-7 / Bdim7 / C-Maj7. Maybe not the best combination, but interesting still.

Further developments I’d like to implement:

Exploring II-V-Is superimposed lines

This way, I’ve found some otherwise unlikely combinations that I particularly like:

Backlinking