Skip to content

Commit 0211665

Browse files
committed
Added the missing m7b9b5 chords
All chord progressions are now available in 4 styles
1 parent 79951bb commit 0211665

File tree

2 files changed

+48
-41
lines changed

2 files changed

+48
-41
lines changed

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ with your favorite DAW.
77
This collection is FREE and you can contribute to it using the issue tracker above.
88
Please use the bug tracker if you find incorrect chords!
99

10-
All the files are licensed under the MIT license, and you can use in any project freely.
10+
All the MIDI files are licensed under the MIT license, and **you can them use in any musical project freely**.
1111

1212
* More details in [my blog](https://drolez.com/blog/music/free-midi-chords-progressions.php)
1313
* Quick [Video demo](https://youtu.be/mNBI6uQXltY) with Ableton
@@ -28,9 +28,11 @@ The chords collection is organized using 3 levels of directories:
2828
* 1/ Triads
2929
* 2/ 7ths and 9ths chords
3030
* 3/ All other chords
31-
* 4/ And progressions
31+
* 4/ Chord progressions
3232
* 3rd level: Major and Minor scales
3333

34+
Below the progressions directory, you'll find 3 more directories. They contain the same MIDI chord progressions files but with different timings: basic4 style, alt4 style and hiphop style.
35+
3436
## Related
3537

3638
The script uses chords2midi from Rich Jones, and Python Mingus.

gen.py

Lines changed: 44 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -64,17 +64,21 @@ def gen(dir, key, chords, prefix):
6464
#
6565
# Generate a chord progression
6666
#
67-
def genprog(dir, key, chords, prefix):
68-
if not os.path.exists(dir):
69-
os.makedirs(dir)
67+
def genprog(dir, key, chords, prefix, style = ''):
7068
c2m_obj = c2m.Chords2Midi()
7169
args = chords.split(" ")
72-
args.extend(["-t", "5", "-p", "long", "-d", "4", "-B",
70+
if style != '':
71+
args.extend(["-p", style])
72+
dir = dir + "/" + style + " style"
73+
else:
74+
args.extend(["-d", "4", "-p", "long"])
75+
args.extend(["-t", "5", "-B",
7376
"--key", f"{key}", "-N", f"{prefix} - {chords}", "--output",
7477
f"{dir}/{prefix} - {chords}.mid"])
78+
if not os.path.exists(dir):
79+
os.makedirs(dir)
7580
c2m_obj.handle(args)
7681

77-
7882
num = 1
7983
# Iterate for each key
8084
for key in keys:
@@ -101,18 +105,17 @@ def genprog(dir, key, chords, prefix):
101105

102106
# Major 7th
103107
i = 0
104-
# bug: pychord cannot create a m7-5add9
105108
for n in [['M7', 'M9'], ['m7', 'm9'], ['m7', 'm9'],
106109
['M7', 'M9'], ['7', '9'], ['m7', 'm9'],
107-
['m7-5']]:
110+
['m7-5', 'm7b9b5']]:
108111
for c in n:
109112
chord = scale_maj[i] + c
110113
gen(f'{base}/2 7th and 9th/Major', root_maj, chord, deg_maj[i])
111114
i = i + 1
112115

113116
# Minor 7th
114117
i = 0
115-
for n in [['m7', 'm9'], ['m7-5'], ['M7', 'M9'],
118+
for n in [['m7', 'm9'], ['m7-5', 'm7b9b5'], ['M7', 'M9'],
116119
['m7', 'm9'], ['m7', 'm9'],
117120
['M7', 'M9'], ['7', '9']]:
118121
for c in n:
@@ -157,39 +160,41 @@ def genprog(dir, key, chords, prefix):
157160
i = i + 1
158161

159162
# Major progressions
160-
for n in [
161-
"I iii vi IV", "I iii IV vi", "I bIIM I iii", "I bIIM bIIIM bIIM",
162-
"I bIIIM bVIM bVIIM", "I bIIIM bVIIM IV",
163-
"I bVIM I bIIM", "I bVIIM bVIM bIIM", "I IV ii V",
164-
"I IV vi V", "I IV V V", "I IV V bVIIM", "I IV bIIIM bVIM",
165-
"I IV bVIIM IV", "I V vi ii", "I V vi IV",
166-
"I V vi iii IV", "I V vi V", "I V bVIIM IV", "I vi IV V",
167-
"I V vi iii IV I IV V",
168-
"I bVIIM IV I",
169-
"ii bIIM I bVIIM", "ii IV V V", "ii V I I", "ii V I IV",
170-
"ii bVIIM7 I", "ii7 V9 I7 I7", "iim7 V7 iiim7 vi7 iim7 V7",
171-
"bIIIM ii bIIM I", "iii vi IV I",
172-
"IV I ii vi", "IV I iii IV", "IV I V vi",
173-
"V I vi V", "V IV vi I", "V vi IV I",
174-
"vi IV I V", "vi bVIM bVIIM I", "vi V IV V",
175-
]:
176-
genprog(f'{base}/4 Progression/Major', root_maj, n, root_maj)
163+
for style in [ '', 'basic4', 'alt4', 'hiphop' ]:
164+
for n in [
165+
"I iii vi IV", "I iii IV vi", "I bIIM I iii", "I bIIM bIIIM bIIM",
166+
"I bIIIM bVIM bVIIM", "I bIIIM bVIIM IV",
167+
"I bVIM I bIIM", "I bVIIM bVIM bIIM", "I IV ii V",
168+
"I IV vi V", "I IV V V", "I IV V bVIIM", "I IV bIIIM bVIM",
169+
"I IV bVIIM IV", "I V vi ii", "I V vi IV",
170+
"I V vi iii IV", "I V vi V", "I V bVIIM IV", "I vi IV V",
171+
"I V vi iii IV I IV V",
172+
"I bVIIM IV I",
173+
"ii bIIM I bVIIM", "ii IV V V", "ii V I I", "ii V I IV",
174+
"ii bVIIM7 I", "ii7 V9 I7 I7", "iim7 V7 iiim7 vi7 iim7 V7",
175+
"bIIIM ii bIIM I", "iii vi IV I",
176+
"IV I ii vi", "IV I iii IV", "IV I V vi",
177+
"V I vi V", "V IV vi I", "V vi IV I",
178+
"vi IV I V", "vi bVIM bVIIM I", "vi V IV V",
179+
]:
180+
genprog(f'{base}/4 Progression/Major', root_maj, n, root_maj, style)
177181

178182
# Minor progressions
179-
for n in [
180-
"i ii v i", "i iv v iv", "i iv VI v", "i iv VII i",
181-
"i iv VII v i i ii V", "i v iv VII",
182-
"i VI III bii", "i VI iv ii", "i VI III VII", "i VI VII VII",
183-
"i VI VII v", "i VI III VII i VI9 III VII",
184-
"i bVIIM VI bii", "i VII VI III", "i VII VI VII", "i VII i v",
185-
"i VII i v III VII i v i", "i bVIIM bVIM bVIIM",
186-
"ii v i i", "ii v i iv", "ii VI i iv", "ii7 v9 i7",
187-
"iv i v VI", "iv VI VII i", "iv III VII i", "iv v VI VII",
188-
"v i iv VII", "v iv i i", "v VI v i", "v VI III i",
189-
"VI i v v", "VI VI i VII", "VI VII i III", "VI VII v III",
190-
"VII iv VII i", "VII iv v i",
191-
]:
192-
genprog(f'{base}/4 Progression/Minor', root_min.lower(), n, root_min)
183+
for style in [ '', 'basic4', 'alt4', 'hiphop' ]:
184+
for n in [
185+
"i ii v i", "i iv v iv", "i iv VI v", "i iv VII i",
186+
"i iv VII v i i ii V", "i v iv VII",
187+
"i VI III bii", "i VI iv ii", "i VI III VII", "i VI VII VII",
188+
"i VI VII v", "i VI III VII i VI9 III VII",
189+
"i bVIIM VI bii", "i VII VI III", "i VII VI VII", "i VII i v",
190+
"i VII i v III VII i v i", "i bVIIM bVIM bVIIM",
191+
"ii v i i", "ii v i iv", "ii VI i iv", "ii7 v9 i7",
192+
"iv i v VI", "iv VI VII i", "iv III VII i", "iv v VI VII",
193+
"v i iv VII", "v iv i i", "v VI v i", "v VI III i",
194+
"VI i v v", "VI VI i VII", "VI VII i III", "VI VII v III",
195+
"VII iv VII i", "VII iv v i",
196+
]:
197+
genprog(f'{base}/4 Progression/Minor', root_min.lower(), n, root_min, style)
193198

194199
# next key
195200
num = num + 1

0 commit comments

Comments
 (0)