|
|
@@ -0,0 +1,128 @@ |
|
|
|
import json |
|
|
|
import os |
|
|
|
|
|
|
|
scales = """ |
|
|
|
Ionian (Major) 1-2-3-4-5-6-7 |
|
|
|
Dorian 1-2-b3-4-5-6-b7 |
|
|
|
Phrygian 1-b2-b3-4-5-b6-b7 |
|
|
|
Lydian 1-2-3-#4-5-6-7 |
|
|
|
Mixolydian 1-2-3-4-5-6-b7 |
|
|
|
Aeolian (Minor) 1-2-b3-4-5-b6-b7 |
|
|
|
Locrian 1-b2-b3-4-b5-b6-b7 |
|
|
|
Aeolian 7 (Harmonic Minor) 1-2-b3-4-5-b6-7 |
|
|
|
Locrian 6 1-b2-b3-4-b5-6-b7 |
|
|
|
Ionian #5 1-2-3-4-#5-6-7 |
|
|
|
Dorian #4 1-2-b3-#4-5-6-b7 |
|
|
|
Phrygian 3 1-b2-3-4-5-b6-b7 |
|
|
|
Lydian #2 1-#2-3-#4-5-6-7 |
|
|
|
Locrian b4 bb7 1-b2-b3-b4-b5-b6-bb7 |
|
|
|
Aeolian 6 7 (Melodic Minor) 1-2-b3-4-5-6-7 |
|
|
|
Phrygian 6 1-b2-b3-4-5-6-b7 |
|
|
|
Lydian #5 1-2-3-#4-#5-6-7 |
|
|
|
Lydian b7 1-2-3-#4-5-6-b7 |
|
|
|
Aeolian 3 1-2-3-4-5-b6-b7 |
|
|
|
Locrian 2 1-2-b3-4-b5-b6-b7 |
|
|
|
Locrian b4 1-b2-b3-b4-b5-b6-b7 |
|
|
|
Bebop Dominant 1-2-3-4-5-6-#6-7 |
|
|
|
Bebob Major 1-2-3-4-5-b6-6-7 |
|
|
|
Bebob Minor 1-2-b3-3-4-5-6-b7 |
|
|
|
Bebob Melodic Minor 1-2-b3-4-5-b6-6-7 |
|
|
|
Blues Major 1-2-b3-3-5-6 |
|
|
|
Blues Minor 1-b3-4-b5-5-b7 |
|
|
|
Blues Diminished 1-b2-b3-3-b5-5-6-b7 |
|
|
|
Blues Pentatonic 1-b3-4-5-b7 |
|
|
|
Blues Rock'n'Roll 1-2-b3-3-4-b5-5-6-b7 |
|
|
|
Byzantine 1-b2-3-4-5-b6-7 |
|
|
|
Hungarian Minor 1-2-b3-b5-5-b6-7 |
|
|
|
Hungarian Gypsy 1-2-b3-#4-5-b6-b7 |
|
|
|
Spanish Gypsy 1-b2-3-4-5-b6-b7 |
|
|
|
Major Pentatonic 1-2-3-5-6 |
|
|
|
Neutral Pentatonic 1-2-4-5-b7 |
|
|
|
Rock Pentatonic 1-b3-4-#5-b7 |
|
|
|
Scottish Pentatonic 1-2-4-5-6 |
|
|
|
Minor Pentatonic 1-b3-4-5-b7 |
|
|
|
Whole 1-2-3-#4-#5-#6 |
|
|
|
Whole-Half 1-2-b3-4-#4-#5-6-7 |
|
|
|
Half-Whole 1-b2-b3-3-b5-5-6-b7 |
|
|
|
Augmented 1-#2-3-5-#5-7 |
|
|
|
Byzantine 1-b2-3-4-5-b6-7 |
|
|
|
Chromatic 1-#1-2-#2-3-4-#4-5-#5-6-#6-7 |
|
|
|
Enigmatic (Ascending) 1-b2-3-#4-#5-#6-7 |
|
|
|
Enigmatic (Descending) 1-b2-3-4-b6-b7-7 |
|
|
|
Hungarian Major 1-b3-3-b5-5-6-b7 |
|
|
|
Hungarian Minor 1-2-b3-b5-5-b6-7 |
|
|
|
Neapolitan Major 1-b2-b3-4-5-6-7 |
|
|
|
Neapolitan Minor 1-b2-b3-4-5-b6-7 |
|
|
|
Overtone 1-2-3-#4-5-6-b7 |
|
|
|
Prometheus 1-2-3-b5-6-b7 |
|
|
|
Prometheus Neapolitan 1-b2-3-b5-6-b7 |
|
|
|
Spanish 8 Tone 1-b2-b3-3-4-b5-b6-b7 |
|
|
|
""" |
|
|
|
|
|
|
|
note_indexes = { |
|
|
|
"1": 0, |
|
|
|
"#1": 1, |
|
|
|
"b2": 1, |
|
|
|
"2": 2, |
|
|
|
"#2": 3, |
|
|
|
"b3": 3, |
|
|
|
"3": 4, |
|
|
|
"b4": 4, |
|
|
|
"4": 5, |
|
|
|
"#4": 6, |
|
|
|
"b5": 6, |
|
|
|
"5": 7, |
|
|
|
"#5": 8, |
|
|
|
"b6": 8, |
|
|
|
"6": 9, |
|
|
|
"bb7": 9, |
|
|
|
"#6": 10, |
|
|
|
"b7": 10, |
|
|
|
"7": 11, |
|
|
|
} |
|
|
|
|
|
|
|
dir = "presets/Quantizer" |
|
|
|
os.makedirs(dir, exist_ok=True) |
|
|
|
count = 0 |
|
|
|
|
|
|
|
for line in scales.splitlines(): |
|
|
|
if not line: |
|
|
|
continue |
|
|
|
|
|
|
|
data = { |
|
|
|
"plugin": "Fundamental", |
|
|
|
"model": "Quantizer", |
|
|
|
"version": "2.0.0", |
|
|
|
"params": [], |
|
|
|
"data": { |
|
|
|
"enabledNotes": [ |
|
|
|
False, |
|
|
|
False, |
|
|
|
False, |
|
|
|
False, |
|
|
|
False, |
|
|
|
False, |
|
|
|
False, |
|
|
|
False, |
|
|
|
False, |
|
|
|
False, |
|
|
|
False, |
|
|
|
False, |
|
|
|
] |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
name, notes = line.split("\t") |
|
|
|
notes = notes.split("-") |
|
|
|
|
|
|
|
for note in notes: |
|
|
|
note_index = note_indexes[note] |
|
|
|
data["data"]["enabledNotes"][note_index] = True |
|
|
|
|
|
|
|
path = os.path.join(dir, f"{count:02d}_{name}.vcvm") |
|
|
|
print(path) |
|
|
|
print(data) |
|
|
|
with open(path, "w") as f: |
|
|
|
json.dump(data, f, indent=2) |
|
|
|
|
|
|
|
count += 1 |