|
1 | 1 | #!/usr/bin/env python3 |
2 | 2 |
|
3 | | -# Copyright (c) 2019-2020 Ludovic Drolez |
| 3 | +# Copyright (c) 2019-2021 Ludovic Drolez |
4 | 4 |
|
5 | 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy |
6 | 6 | # of this software and associated documentation files (the "Software"), to deal |
7 | 7 | # in the Software without restriction, including without limitation the rights |
8 | 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
9 | 9 | # copies of the Software, and to permit persons to whom the Software is |
10 | 10 | # furnished to do so, subject to the following conditions: |
11 | | - |
| 11 | +# |
12 | 12 | # The above copyright notice and this permission notice shall be included in all |
13 | 13 | # copies or substantial portions of the Software. |
14 | | - |
| 14 | +# |
15 | 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
16 | 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
17 | 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|
50 | 50 | deg_maj = ['I', 'ii', 'iii', 'IV', 'V', 'vi', 'vii'] |
51 | 51 | deg_min = ['i', 'ii', 'III', 'iv', 'v', 'VI', 'VII'] |
52 | 52 |
|
| 53 | +# Major progressions |
| 54 | +prog_maj = [ |
| 55 | + "I bIIM I iii", |
| 56 | + "I bIIM bIIIM bIIM", |
| 57 | + "I bIIIM bVIM bVIIM", |
| 58 | + "I bIIIM bVIIM IV", |
| 59 | + "I iii IV vi", |
| 60 | + "I iii vi IV", |
| 61 | + "I IV ii V", |
| 62 | + "I IV vi V", |
| 63 | + "I IV V V", |
| 64 | + "I IV V bVIIM", |
| 65 | + "I IV bIIIM bVIM", |
| 66 | + "I IV bVIIM IV", |
| 67 | + "I V vi ii", |
| 68 | + "I V vi IV", |
| 69 | + "I V vi iii IV", |
| 70 | + "I V vi V", |
| 71 | + "I V bVIIM IV", |
| 72 | + "I V vi iii IV I IV V", |
| 73 | + "I bVIM I bIIM", |
| 74 | + "I vi IV V", |
| 75 | + "I bVIIM bVIM bIIM", |
| 76 | + "I bVIIM IV I", |
| 77 | + "ii bIIM I bVIIM", |
| 78 | + "ii IV V V", |
| 79 | + "ii V I I", |
| 80 | + "ii V I IV", |
| 81 | + "ii bVIIM7 I", "ii7 V9 I7 I7", |
| 82 | + "iim7 V7 iiim7 vi7 iim7 V7", |
| 83 | + "bIIIM ii bIIM I", |
| 84 | + "iii vi IV I", |
| 85 | + "IV I ii vi", |
| 86 | + "IV I iii IV", |
| 87 | + "IV I V vi", |
| 88 | + "V I vi V", |
| 89 | + "V IV vi I", |
| 90 | + "V vi IV I", |
| 91 | + "vi IV I V", |
| 92 | + "vi bVIM bVIIM I", |
| 93 | + "vi V IV V", |
| 94 | +] |
| 95 | + |
| 96 | +# minor progressions |
| 97 | +prog_min = [ |
| 98 | + "i ii v i", |
| 99 | + "i iv v iv", |
| 100 | + "i iv VI v", |
| 101 | + "i iv VII i", |
| 102 | + "i iv VII v i i ii V", |
| 103 | + "i v iv VII", |
| 104 | + "i VI III bii", |
| 105 | + "i VI iv ii", |
| 106 | + "i VI III VII", |
| 107 | + "i VI VII VII", |
| 108 | + "i VI VII v", |
| 109 | + "i VI III VII i VI9 III VII", |
| 110 | + "i bVIIM bVIM bVIIM", |
| 111 | + "i bVIIM VI bii", |
| 112 | + "i VII i v", |
| 113 | + "i VII i v III VII i v i", |
| 114 | + "i VII VI III", |
| 115 | + "i VII VI VII", |
| 116 | + "ii v i i", |
| 117 | + "ii v i iv", |
| 118 | + "ii VI i iv", |
| 119 | + "ii7 v9 i7", |
| 120 | + "iv i v VI", |
| 121 | + "iv VI VII i", |
| 122 | + "iv III VII i", |
| 123 | + "iv v VI VII", |
| 124 | + "v i iv VII", |
| 125 | + "v iv i i", |
| 126 | + "v VI III i", |
| 127 | + "v VI v i", |
| 128 | + "VI i v v", |
| 129 | + "VI VI i VII", |
| 130 | + "VI VII i III", |
| 131 | + "VI VII v III", |
| 132 | + "VII iv VII i", |
| 133 | + "VII iv v i", |
| 134 | +] |
| 135 | + |
53 | 136 | # |
54 | 137 | # Generate a single chord |
55 | 138 | # |
@@ -161,39 +244,12 @@ def genprog(dir, key, chords, prefix, style = ''): |
161 | 244 |
|
162 | 245 | # Major progressions |
163 | 246 | 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 | | - ]: |
| 247 | + for n in prog_maj: |
180 | 248 | genprog(f'{base}/4 Progression/Major', root_maj, n, root_maj, style) |
181 | 249 |
|
182 | 250 | # Minor progressions |
183 | 251 | 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 | | - ]: |
| 252 | + for n in prog_min: |
197 | 253 | genprog(f'{base}/4 Progression/Minor', root_min.lower(), n, root_min, style) |
198 | 254 |
|
199 | 255 | # next key |
|
0 commit comments