diff --git a/Docs/SDM_N00191671_Y4_MangoSynth_Dissertation-FINAL.pdf b/Docs/SDM_N00191671_Y4_MangoSynth_Dissertation-FINAL.pdf new file mode 100644 index 0000000..2d28f93 Binary files /dev/null and b/Docs/SDM_N00191671_Y4_MangoSynth_Dissertation-FINAL.pdf differ diff --git a/Release/ms24_electron-1.0.0 Setup.exe b/Release/ms24_electron-1.0.0 Setup.exe new file mode 100644 index 0000000..6ab2f68 Binary files /dev/null and b/Release/ms24_electron-1.0.0 Setup.exe differ diff --git a/index.html b/index.html index e0aa65e..e1f8a77 100644 --- a/index.html +++ b/index.html @@ -196,48 +196,6 @@
BPM
diff --git a/public/presets/Alien Drone.ms24preset b/public/presets/Alien Drone.ms24preset new file mode 100644 index 0000000..4142f40 --- /dev/null +++ b/public/presets/Alien Drone.ms24preset @@ -0,0 +1,102 @@ +{ + "METADATA": { + "name": "Alien Drone", + "type": "Lead", + "author": "MangoSynth", + "rating": "3" + }, + "MASTER": { + "gain": 1, + "octaveOffset": 0, + "bpm": 120 + }, + "OSC_A": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": -5, + "shape": 2, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 10, + "modulationIndex": 24, + "modulationShape": 0 + }, + "OSC_B": { + "enabled": 1, + "octave": 1, + "detune": 0, + "volume": -5, + "shape": 1, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 0, + "modulationIndex": 0, + "modulationShape": 0 + }, + "OSC_C": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": 0, + "shape": 1, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 3, + "spread": 10, + "harmonicity": 15, + "modulationShape": 0 + }, + "FILTER": { + "enabled": 1, + "frequency": 5000, + "Q": 0, + "gain": 0, + "rolloff": 0, + "type": 1, + "osc_a": 1, + "osc_b": 1, + "osc_c": 0, + "cutoff": 5000 + }, + "LFO": { + "enabled": 0, + "target": "FilterFrequency", + "type": 0, + "grid": 5, + "min": 0, + "max": 5000, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "FX": { + "enabled": 1, + "type": "Distortion", + "param1": 0, + "param2": 0, + "param3": 0.5, + "param4": 0, + "mix": 0.5, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "ARP": { + "A_enabled": 0, + "B_enabled": 0, + "C_enabled": 0, + "pattern": "up", + "playbackRate": 2 + } +} \ No newline at end of file diff --git a/public/presets/buddhabass.ms24preset b/public/presets/BuddyBass.ms24preset similarity index 85% rename from public/presets/buddhabass.ms24preset rename to public/presets/BuddyBass.ms24preset index f9ca68a..ac57c79 100644 --- a/public/presets/buddhabass.ms24preset +++ b/public/presets/BuddyBass.ms24preset @@ -1,12 +1,14 @@ { "METADATA":{ - "name":"BuddhaBass", + "name":"BuddyBass", "type":"Bass", - "author":"Buddha", - "rating":5 + "author":"MangoSynth", + "rating":3 }, "MASTER":{ - "gain":1 + "gain": 1, + "octaveOffset": 0, + "bpm": 120 }, "OSC_A":{ "enabled":1, @@ -89,5 +91,12 @@ "osc_a":1, "osc_b":1, "osc_c":1 + }, + "ARP":{ + "A_enabled": 0, + "B_enabled": 0, + "C_enabled": 0, + "pattern": "up", + "playbackRate": 2 } } diff --git a/public/presets/Cheery Arp.ms24preset b/public/presets/Cheery Arp.ms24preset new file mode 100644 index 0000000..f6944b6 --- /dev/null +++ b/public/presets/Cheery Arp.ms24preset @@ -0,0 +1,101 @@ +{ + "METADATA": { + "name": "Cheery Arp", + "type": "Arp", + "author": "MangoSynth", + "rating": "3" + }, + "MASTER": { + "gain": 2, + "octaveOffset": 0, + "bpm": 120 + }, + "OSC_A": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": 0, + "shape": 1, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 2.75, + "count": 1, + "spread": 0, + "harmonicity": 0, + "modulationIndex": 0, + "modulationShape": 0 + }, + "OSC_B": { + "enabled": 1, + "octave": 1, + "detune": 0, + "volume": -9, + "shape": 1, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 0, + "modulationIndex": 0, + "modulationShape": 0 + }, + "OSC_C": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": -7, + "shape": 1, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 0.25, + "count": 1, + "spread": 0, + "harmonicity": 0, + "modulationShape": 0 + }, + "FILTER": { + "enabled": 0, + "frequency": 5000, + "Q": 0, + "gain": 0, + "rolloff": 0, + "type": 0, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "LFO": { + "enabled": 0, + "target": "FilterFrequency", + "type": 0, + "grid": 5, + "min": 0, + "max": 1000, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "FX": { + "enabled": 1, + "type": "FreqShift", + "param1": 1, + "param2": 0, + "param3": 0.5, + "param4": 0, + "mix": 0.5, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "ARP": { + "A_enabled": 1, + "B_enabled": 0, + "C_enabled": 1, + "pattern": 2, + "playbackRate": 3 + } +} diff --git a/public/presets/Dark FM.ms24preset b/public/presets/Dark FM.ms24preset new file mode 100644 index 0000000..1c908e4 --- /dev/null +++ b/public/presets/Dark FM.ms24preset @@ -0,0 +1,101 @@ +{ + "METADATA": { + "name": "Dark FM", + "type": "Bass", + "author": "MangoSynth", + "rating": 5 + }, + "MASTER": { + "gain": 1, + "octaveOffset": 0, + "bpm": 120 + }, + "OSC_A": { + "enabled": 1, + "octave": -2, + "detune": 0, + "volume": 0, + "shape": 1, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 4, + "spread": 26, + "harmonicity": 0.5, + "modulationIndex": 40, + "modulationShape": 0 + }, + "OSC_B": { + "enabled": 0, + "octave": 1, + "detune": 0, + "volume": 0, + "shape": 2, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 0, + "modulationIndex": 0, + "modulationShape": 0 + }, + "OSC_C": { + "enabled": 1, + "octave": 0, + "detune": 7, + "volume": -7, + "shape": 2, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 4, + "spread": 6, + "harmonicity": 0, + "modulationShape": 0 + }, + "FILTER": { + "enabled": 1, + "frequency": 1000, + "Q": 1, + "gain": 0, + "rolloff": 0, + "type": 0, + "osc_a": 1, + "osc_b": 1, + "osc_c": 0 + }, + "LFO": { + "enabled": 0, + "target": "FilterFrequency", + "type": 0, + "grid": 5, + "min": 0, + "max": 1000, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "FX": { + "enabled": 1, + "type": "Distortion", + "param1": 0.2, + "param2": 0, + "param3": 0.5, + "param4": 0, + "mix": 0.5, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "ARP": { + "A_enabled": 0, + "B_enabled": 0, + "C_enabled": 0, + "pattern": "up", + "playbackRate": 2 + } +} \ No newline at end of file diff --git a/public/presets/Daylight.ms24preset b/public/presets/Daylight.ms24preset new file mode 100644 index 0000000..fe03051 --- /dev/null +++ b/public/presets/Daylight.ms24preset @@ -0,0 +1,102 @@ +{ + "METADATA": { + "name": "Daylight", + "type": "Lead", + "author": "MangoSynth", + "rating": "3" + }, + "MASTER": { + "gain": 1, + "octaveOffset": 0, + "bpm": 120 + }, + "OSC_A": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": -10, + "shape": 2, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1.75, + "count": 1, + "spread": 1, + "harmonicity": 1, + "modulationIndex": 7.5, + "modulationShape": 0 + }, + "OSC_B": { + "enabled": 1, + "octave": 1, + "detune": -5, + "volume": -7, + "shape": 2, + "attack": 0.20500000000000002, + "decay": 0.1, + "sustain": 0.3, + "release": 0.25, + "count": 2, + "spread": 2, + "harmonicity": 0, + "modulationIndex": 0, + "modulationShape": 0 + }, + "OSC_C": { + "enabled": 0, + "octave": 1, + "detune": 0, + "volume": 0, + "shape": 3, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.45, + "release": 3.25, + "count": 2, + "spread": 6, + "harmonicity": 1.5, + "modulationShape": 0 + }, + "FILTER": { + "enabled": 1, + "frequency": 5000, + "Q": 0, + "gain": 0, + "rolloff": 0, + "type": 0, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1, + "cutoff": 8500 + }, + "LFO": { + "enabled": 0, + "target": "FilterFrequency", + "type": 0, + "grid": 5, + "min": 0, + "max": 8500, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "FX": { + "enabled": 1, + "type": "Reverb", + "param1": 1, + "param2": 0.2, + "param3": 0, + "param4": 0, + "mix": 0.5, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "ARP": { + "A_enabled": 1, + "B_enabled": 0, + "C_enabled": 1, + "pattern": "up", + "playbackRate": 2 + } +} \ No newline at end of file diff --git a/public/presets/fm2.ms24preset b/public/presets/Delirium.ms24preset similarity index 86% rename from public/presets/fm2.ms24preset rename to public/presets/Delirium.ms24preset index 12d15a8..060b53e 100644 --- a/public/presets/fm2.ms24preset +++ b/public/presets/Delirium.ms24preset @@ -1,12 +1,14 @@ { "METADATA":{ - "name":"FM 02", - "type":"Bass", + "name":"Delirium", + "type":"FX", "author":"MangoSynth", - "rating":4 + "rating":5 }, "MASTER":{ - "gain":1 + "gain": 1, + "octaveOffset": 0, + "bpm": 120 }, "OSC_A":{ "enabled":1, @@ -89,5 +91,12 @@ "osc_a":1, "osc_b":1, "osc_c":1 + }, + "ARP":{ + "A_enabled": 0, + "B_enabled": 0, + "C_enabled": 0, + "pattern": "up", + "playbackRate": 2 } } diff --git a/public/presets/Digital Flute.ms24preset b/public/presets/Digital Flute.ms24preset new file mode 100644 index 0000000..73fd291 --- /dev/null +++ b/public/presets/Digital Flute.ms24preset @@ -0,0 +1,101 @@ +{ + "METADATA": { + "name": "Digital Flute", + "type": "Lead", + "author": "MangoSynth", + "rating": "3" + }, + "MASTER": { + "gain": 1, + "octaveOffset": 0, + "bpm": 120 + }, + "OSC_A": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": -2, + "shape": 2, + "attack": 0.505, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 4, + "spread": 26, + "harmonicity": 0, + "modulationIndex": 0, + "modulationShape": 0 + }, + "OSC_B": { + "enabled": 1, + "octave": 1, + "detune": 0, + "volume": 3, + "shape": 1, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 2, + "count": 4, + "spread": 11, + "harmonicity": 0, + "modulationIndex": 0, + "modulationShape": 0 + }, + "OSC_C": { + "enabled": 0, + "octave": 0, + "detune": 0, + "volume": 13, + "shape": 2, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 2, + "spread": 6, + "harmonicity": 0, + "modulationShape": 0 + }, + "FILTER": { + "enabled": 1, + "frequency": 5000, + "Q": 0, + "gain": 0, + "rolloff": 0, + "type": 0, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "LFO": { + "enabled": 0, + "target": "FilterFrequency", + "type": 0, + "grid": 5, + "min": 0, + "max": 1000, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "FX": { + "enabled": 1, + "type": "Reverb", + "param1": 0, + "param2": 0, + "param3": 0.5, + "param4": 0, + "mix": 0.5, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "ARP": { + "A_enabled": 1, + "B_enabled": 0, + "C_enabled": 1, + "pattern": 1, + "playbackRate": 3 + } +} \ No newline at end of file diff --git a/public/presets/Eff Emm.ms24preset b/public/presets/Eff Emm.ms24preset new file mode 100644 index 0000000..c8791c5 --- /dev/null +++ b/public/presets/Eff Emm.ms24preset @@ -0,0 +1,102 @@ +{ + "METADATA": { + "name": "Eff Emm", + "type": "Bass", + "author": "MangoSynth", + "rating": "3" + }, + "MASTER": { + "gain": 1, + "octaveOffset": -1, + "bpm": 120 + }, + "OSC_A": { + "enabled": 1, + "octave": 1, + "detune": 0, + "volume": 0, + "shape": 0, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 13, + "modulationIndex": 15, + "modulationShape": 0 + }, + "OSC_B": { + "enabled": 1, + "octave": -1, + "detune": 7, + "volume": 0, + "shape": 3, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 4, + "spread": 21, + "harmonicity": 15, + "modulationIndex": 29, + "modulationShape": 0 + }, + "OSC_C": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": 10, + "shape": 3, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 1, + "modulationShape": 0 + }, + "FILTER": { + "enabled": 1, + "frequency": 1000, + "Q": 0, + "gain": 0, + "rolloff": 0, + "type": 0, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1, + "cutoff": 6544 + }, + "LFO": { + "enabled": 0, + "target": "FilterFrequency", + "type": 0, + "grid": 5, + "min": 0, + "max": 6544, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "FX": { + "enabled": 1, + "type": "Phaser", + "param1": 1.1, + "param2": 0, + "param3": 1, + "param4": 0, + "mix": 0.5, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "ARP": { + "A_enabled": 0, + "B_enabled": 0, + "C_enabled": 0, + "pattern": "up", + "playbackRate": 2 + } +} \ No newline at end of file diff --git a/public/presets/Elysian FM.ms24preset b/public/presets/Elysian FM.ms24preset new file mode 100644 index 0000000..db3870e --- /dev/null +++ b/public/presets/Elysian FM.ms24preset @@ -0,0 +1,102 @@ +{ + "METADATA": { + "name": "Elysian FM", + "type": "Bass", + "author": "MangoSynth", + "rating": 4 + }, + "MASTER": { + "gain": 1.4000000000000001, + "octaveOffset": -1, + "bpm": 120 + }, + "OSC_A": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": 0, + "shape": 0, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 9, + "modulationIndex": 12, + "modulationShape": 0 + }, + "OSC_B": { + "enabled": 1, + "octave": 1, + "detune": 7, + "volume": -5, + "shape": 2, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 7, + "spread": 6, + "harmonicity": 4, + "modulationIndex": 12, + "modulationShape": 1 + }, + "OSC_C": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": 0, + "shape": 2, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 5, + "spread": 16, + "harmonicity": 21, + "modulationShape": 2 + }, + "FILTER": { + "enabled": 1, + "frequency": 1000, + "Q": 1, + "gain": 0, + "rolloff": 0, + "type": 0, + "osc_a": 0, + "osc_b": 1, + "osc_c": 0, + "cutoff": 1504 + }, + "LFO": { + "enabled": 0, + "target": "FilterFrequency", + "type": 0, + "grid": 5, + "min": 0, + "max": 1504, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "FX": { + "enabled": 1, + "type": "Distortion", + "param1": 0.1, + "param2": 1, + "param3": 0.5, + "param4": 0, + "mix": 0.5, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "ARP": { + "A_enabled": 0, + "B_enabled": 0, + "C_enabled": 0, + "pattern": "up", + "playbackRate": 2 + } +} \ No newline at end of file diff --git a/public/presets/Hyperspace.ms24preset b/public/presets/Hyperspace.ms24preset new file mode 100644 index 0000000..513f678 --- /dev/null +++ b/public/presets/Hyperspace.ms24preset @@ -0,0 +1,101 @@ +{ + "METADATA": { + "name": "Hyperspace", + "type": "FX", + "author": "MangoSynth", + "rating": "3" + }, + "MASTER": { + "gain": 1.5, + "octaveOffset": 0, + "bpm": 240 + }, + "OSC_A": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": 0, + "shape": 1, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 0.05, + "modulationIndex": 10, + "modulationShape": 1 + }, + "OSC_B": { + "enabled": 1, + "octave": -1, + "detune": 0, + "volume": 0, + "shape": 0, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 0.3, + "modulationIndex": 2.5, + "modulationShape": 0 + }, + "OSC_C": { + "enabled": 0, + "octave": 0, + "detune": 0, + "volume": 0, + "shape": 2, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 0, + "modulationShape": 0 + }, + "FILTER": { + "enabled": 0, + "frequency": 5000, + "Q": 0, + "gain": 0, + "rolloff": 0, + "type": 0, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "LFO": { + "enabled": 0, + "target": "FilterFrequency", + "type": 0, + "grid": 5, + "min": 0, + "max": 1000, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "FX": { + "enabled": 1, + "type": "Chebyshev", + "param1": 11, + "param2": 0, + "param3": 0.5, + "param4": 0, + "mix": 0.5, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "ARP": { + "A_enabled": 0, + "B_enabled": 0, + "C_enabled": 0, + "pattern": 3, + "playbackRate": 4 + } +} diff --git a/public/presets/Sharp Pluck.ms24preset b/public/presets/Sharp Pluck.ms24preset new file mode 100644 index 0000000..387076f --- /dev/null +++ b/public/presets/Sharp Pluck.ms24preset @@ -0,0 +1,102 @@ +{ + "METADATA": { + "name": "Sharp Pluck", + "type": "Arp Bass", + "author": "MangoSynth", + "rating": "3" + }, + "MASTER": { + "gain": 0.4, + "octaveOffset": 0, + "bpm": 120 + }, + "OSC_A": { + "enabled": 1, + "octave": -1, + "detune": 0, + "volume": 0, + "shape": 1, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 0, + "modulationIndex": 0, + "modulationShape": 0 + }, + "OSC_B": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": 0, + "shape": 1, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 0, + "modulationIndex": 0, + "modulationShape": 0 + }, + "OSC_C": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": 6, + "shape": 2, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 0, + "modulationShape": 0 + }, + "FILTER": { + "enabled": 1, + "frequency": 5000, + "Q": 7.300000000000001, + "gain": 0, + "rolloff": 0, + "type": 1, + "osc_a": 1, + "osc_b": 0, + "osc_c": 1, + "cutoff": 1005 + }, + "LFO": { + "enabled": 1, + "target": "FilterFrequency", + "type": 0, + "grid": 2, + "min": 0, + "max": 1005, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "FX": { + "enabled": 1, + "type": "Distortion", + "param1": 1, + "param2": 0, + "param3": 0.5, + "param4": 0, + "mix": 0.5, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "ARP": { + "A_enabled": 0, + "B_enabled": 1, + "C_enabled": 1, + "pattern": "up", + "playbackRate": 3 + } +} diff --git a/public/presets/Space Engine.ms24preset b/public/presets/Space Engine.ms24preset new file mode 100644 index 0000000..e8d8c23 --- /dev/null +++ b/public/presets/Space Engine.ms24preset @@ -0,0 +1,102 @@ +{ + "METADATA": { + "name": "Space Engine", + "type": "FM Bass", + "author": "MangoSynth", + "rating": 4 + }, + "MASTER": { + "gain": 1, + "octaveOffset": 0, + "bpm": 120 + }, + "OSC_A": { + "enabled": 1, + "octave": -2, + "detune": 0, + "volume": -20, + "shape": 2, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 4, + "spread": 26, + "harmonicity": 2, + "modulationIndex": 50, + "modulationShape": 0 + }, + "OSC_B": { + "enabled": 1, + "octave": -3, + "detune": 0, + "volume": 0, + "shape": 1, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 0, + "modulationIndex": 0, + "modulationShape": 0 + }, + "OSC_C": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": 0, + "shape": 2, + "attack": 0.005, + "decay": 0.3, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 26, + "harmonicity": 17, + "modulationShape": 0 + }, + "FILTER": { + "enabled": 1, + "frequency": 1000, + "Q": 5, + "gain": 0, + "rolloff": 0, + "type": 0, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1, + "cutoff": 3000 + }, + "LFO": { + "enabled": 0, + "target": "FilterFrequency", + "type": 0, + "grid": 5, + "min": 0, + "max": 3000, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "FX": { + "enabled": 1, + "type": "Distortion", + "param1": 2.5, + "param2": 2, + "param3": 0.3, + "param4": 0, + "mix": 0.3, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "ARP": { + "A_enabled": 0, + "B_enabled": 0, + "C_enabled": 0, + "pattern": "up", + "playbackRate": 2 + } +} \ No newline at end of file diff --git a/public/presets/Temple Bass.ms24preset b/public/presets/Temple Bass.ms24preset new file mode 100644 index 0000000..7aaf4a7 --- /dev/null +++ b/public/presets/Temple Bass.ms24preset @@ -0,0 +1,101 @@ +{ + "METADATA": { + "name": "Temple Bass", + "type": "Bass", + "author": "MangoSynth", + "rating": "5" + }, + "MASTER": { + "gain": 1, + "octaveOffset": -1, + "bpm": 120 + }, + "OSC_A": { + "enabled": 1, + "octave": 1, + "detune": 4, + "volume": 2, + "shape": 0, + "attack": 0.705, + "decay": 0.1, + "sustain": 0.3, + "release": 2.25, + "count": 1, + "spread": 1, + "harmonicity": 0, + "modulationIndex": 0, + "modulationShape": 0 + }, + "OSC_B": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": 5, + "shape": 1, + "attack": 0, + "decay": 0.1, + "sustain": 0.3, + "release": 3.25, + "count": 1, + "spread": 0, + "harmonicity": 0, + "modulationIndex": 0, + "modulationShape": 0 + }, + "OSC_C": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": 0, + "shape": 2, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 2, + "spread": 6, + "harmonicity": 0.5, + "modulationShape": 0 + }, + "FILTER": { + "enabled": 0, + "frequency": 5000, + "Q": 0, + "gain": 0, + "rolloff": 0, + "type": 0, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "LFO": { + "enabled": 0, + "target": "FilterFrequency", + "type": 0, + "grid": 5, + "min": 0, + "max": 1000, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "FX": { + "enabled": 1, + "type": "Distortion", + "param1": 0.1, + "param2": 0, + "param3": 0.5, + "param4": 0, + "mix": 0.5, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "ARP": { + "A_enabled": 0, + "B_enabled": 0, + "C_enabled": 0, + "pattern": "up", + "playbackRate": 2 + } +} diff --git a/public/presets/Wubber.ms24preset b/public/presets/Wubber.ms24preset new file mode 100644 index 0000000..7f59f02 --- /dev/null +++ b/public/presets/Wubber.ms24preset @@ -0,0 +1,101 @@ +{ + "METADATA": { + "name": "Wubber", + "type": "Bass", + "author": "MangoSynth", + "rating": "3" + }, + "MASTER": { + "gain": 0.8, + "octaveOffset": 0, + "bpm": 120 + }, + "OSC_A": { + "enabled": 1, + "octave": -3, + "detune": 0, + "volume": 5, + "shape": 1, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 4, + "spread": 31, + "harmonicity": 3, + "modulationIndex": 26, + "modulationShape": 2 + }, + "OSC_B": { + "enabled": 0, + "octave": 1, + "detune": 0, + "volume": 0, + "shape": 1, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 0, + "modulationIndex": 0, + "modulationShape": 0 + }, + "OSC_C": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": 0, + "shape": 3, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 4.5, + "modulationShape": 0 + }, + "FILTER": { + "enabled": 1, + "frequency": 5000, + "Q": 0, + "gain": 0, + "rolloff": 0, + "type": 0, + "osc_a": 0, + "osc_b": 1, + "osc_c": 1 + }, + "LFO": { + "enabled": 1, + "target": "FilterFrequency", + "type": 0, + "grid": 6, + "min": 500, + "max": 4500, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "FX": { + "enabled": 1, + "type": "Distortion", + "param1": 1, + "param2": 0, + "param3": 0.5, + "param4": 0, + "mix": 0.5, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "ARP": { + "A_enabled": 0, + "B_enabled": 0, + "C_enabled": 0, + "pattern": "up", + "playbackRate": 2 + } +} diff --git a/public/presets/Yes FM.ms24preset b/public/presets/Yes FM.ms24preset new file mode 100644 index 0000000..8e90acf --- /dev/null +++ b/public/presets/Yes FM.ms24preset @@ -0,0 +1,101 @@ +{ + "METADATA": { + "name": "Yes FM", + "type": "FM Bass", + "author": "MangoSynth", + "rating": "3" + }, + "MASTER": { + "gain": 1, + "octaveOffset": 0, + "bpm": 120 + }, + "OSC_A": { + "enabled": 1, + "octave": -1, + "detune": 0, + "volume": -2, + "shape": 2, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 0.5, + "modulationIndex": 20, + "modulationShape": 0 + }, + "OSC_B": { + "enabled": 0, + "octave": 1, + "detune": 0, + "volume": -5, + "shape": 1, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 0, + "modulationIndex": 0, + "modulationShape": 0 + }, + "OSC_C": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": 0, + "shape": 1, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 1.5, + "modulationShape": 0 + }, + "FILTER": { + "enabled": 1, + "frequency": 5000, + "Q": 0, + "gain": 0, + "rolloff": 0, + "type": 0, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "LFO": { + "enabled": 0, + "target": "FilterFrequency", + "type": 0, + "grid": 5, + "min": 0, + "max": 1000, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "FX": { + "enabled": 1, + "type": "Distortion", + "param1": 2, + "param2": 0, + "param3": 0.5, + "param4": 0, + "mix": 0.5, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "ARP": { + "A_enabled": 0, + "B_enabled": 0, + "C_enabled": 0, + "pattern": "up", + "playbackRate": 3 + } +} \ No newline at end of file diff --git a/public/presets/aliendrone.ms24preset b/public/presets/aliendrone.ms24preset deleted file mode 100644 index 1497881..0000000 --- a/public/presets/aliendrone.ms24preset +++ /dev/null @@ -1,93 +0,0 @@ -{ - "METADATA":{ - "name":"Alien Drone", - "type":"Pad", - "author":"MangoSynth", - "rating":4 - }, - "MASTER":{ - "gain":1 - }, - "OSC_A":{ - "enabled":1, - "octave":0, - "detune":0, - "volume":-5, - "shape":2, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":1, - "spread":0, - "harmonicity":10, - "modulationIndex":24, - "modulationShape":0 - }, - "OSC_B":{ - "enabled":1, - "octave":1, - "detune":0, - "volume":-5, - "shape":1, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":1, - "spread":0, - "harmonicity":0, - "modulationIndex":0, - "modulationShape":0 - }, - "OSC_C":{ - "enabled":1, - "octave":0, - "detune":0, - "volume":0, - "shape":2, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":3, - "spread":10, - "harmonicity":15, - "modulationShape":0 - }, - "FILTER":{ - "enabled":1, - "frequency":5000, - "Q":0, - "gain":0, - "rolloff":0, - "type":1, - "osc_a":1, - "osc_b":1, - "osc_c":0, - "cutoff":5000 - }, - "LFO":{ - "enabled":0, - "target":"FilterFrequency", - "type":0, - "grid":5, - "min":0, - "max":5000, - "osc_a":1, - "osc_b":1, - "osc_c":1 - }, - "FX":{ - "enabled":1, - "type":"Distortion", - "param1":0, - "param2":0, - "param3":0.5, - "param4":0, - "mix":0.5, - "osc_a":1, - "osc_b":1, - "osc_c":1 - } -} diff --git a/public/presets/angrydrone.ms24preset b/public/presets/angrydrone.ms24preset deleted file mode 100644 index 5f723e3..0000000 --- a/public/presets/angrydrone.ms24preset +++ /dev/null @@ -1,93 +0,0 @@ -{ - "METADATA":{ - "name":"Angry Drone", - "type":"Pad/Bass", - "author":"MangoSynth", - "rating":4 - }, - "MASTER":{ - "gain":1 - }, - "OSC_A":{ - "enabled":1, - "octave":-1, - "detune":0, - "volume":0, - "shape":2, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":4, - "spread":21, - "harmonicity":5, - "modulationIndex":24, - "modulationShape":1 - }, - "OSC_B":{ - "enabled":0, - "octave":1, - "detune":0, - "volume":0, - "shape":1, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":1, - "spread":0, - "harmonicity":0, - "modulationIndex":0, - "modulationShape":0 - }, - "OSC_C":{ - "enabled":0, - "octave":0, - "detune":0, - "volume":0, - "shape":2, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":1, - "spread":0, - "harmonicity":0, - "modulationShape":0 - }, - "FILTER":{ - "enabled":1, - "frequency":5000, - "Q":5, - "gain":0, - "rolloff":2, - "type":0, - "osc_a":1, - "osc_b":1, - "osc_c":1, - "cutoff":1140 - }, - "LFO":{ - "enabled":1, - "target":"FilterFrequency", - "type":0, - "grid":0, - "min":420, - "max":1140, - "osc_a":1, - "osc_b":1, - "osc_c":1 - }, - "FX":{ - "enabled":1, - "type":"Distortion", - "param1":1.2000000000000002, - "param2":1, - "param3":0.5, - "param4":0, - "mix":0.5, - "osc_a":1, - "osc_b":1, - "osc_c":1 - } -} diff --git a/public/presets/darkfm.ms24preset b/public/presets/darkfm.ms24preset deleted file mode 100644 index f1d5cd5..0000000 --- a/public/presets/darkfm.ms24preset +++ /dev/null @@ -1,92 +0,0 @@ -{ - "METADATA":{ - "name":"Dark FM", - "type":"Bass", - "author":"MangoSynth", - "rating":5 - }, - "MASTER":{ - "gain":1 - }, - "OSC_A":{ - "enabled":1, - "octave":-2, - "detune":0, - "volume":0, - "shape":1, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":4, - "spread":26, - "harmonicity":1, - "modulationIndex":50, - "modulationShape":0 - }, - "OSC_B":{ - "enabled":0, - "octave":1, - "detune":0, - "volume":0, - "shape":2, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":1, - "spread":0, - "harmonicity":0, - "modulationIndex":0, - "modulationShape":0 - }, - "OSC_C":{ - "enabled":0, - "octave":2, - "detune":0, - "volume":0, - "shape":0, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":1, - "spread":0, - "harmonicity":0, - "modulationShape":0 - }, - "FILTER":{ - "enabled":1, - "frequency":1000, - "Q":1, - "gain":0, - "rolloff":0, - "type":0, - "osc_a":1, - "osc_b":1, - "osc_c":1 - }, - "LFO":{ - "enabled":0, - "target":"FilterFrequency", - "type":0, - "grid":5, - "min":0, - "max":1000, - "osc_a":1, - "osc_b":1, - "osc_c":1 - }, - "FX":{ - "enabled":1, - "type":"Distortion", - "param1":0.2, - "param2":0, - "param3":0.5, - "param4":0, - "mix":0.5, - "osc_a":1, - "osc_b":1, - "osc_c":1 - } -} diff --git a/public/presets/fm1.ms24preset b/public/presets/fm1.ms24preset deleted file mode 100644 index 20dcaa9..0000000 --- a/public/presets/fm1.ms24preset +++ /dev/null @@ -1,93 +0,0 @@ -{ - "METADATA":{ - "name":"FM 01", - "type":"Bass", - "author":"MangoSynth", - "rating":4 - }, - "MASTER":{ - "gain":1 - }, - "OSC_A":{ - "enabled":1, - "octave":0, - "detune":0, - "volume":0, - "shape":0, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":1, - "spread":0, - "harmonicity":9, - "modulationIndex":12, - "modulationShape":0 - }, - "OSC_B":{ - "enabled":1, - "octave":1, - "detune":7, - "volume":-5, - "shape":2, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":7, - "spread":6, - "harmonicity":4, - "modulationIndex":12, - "modulationShape":1 - }, - "OSC_C":{ - "enabled":1, - "octave":0, - "detune":0, - "volume":0, - "shape":2, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":5, - "spread":16, - "harmonicity":21, - "modulationShape":2 - }, - "FILTER":{ - "enabled":1, - "frequency":1000, - "Q":1, - "gain":0, - "rolloff":0, - "type":0, - "osc_a":1, - "osc_b":1, - "osc_c":1, - "cutoff":1504 - }, - "LFO":{ - "enabled":0, - "target":"FilterFrequency", - "type":0, - "grid":5, - "min":0, - "max":1504, - "osc_a":1, - "osc_b":1, - "osc_c":1 - }, - "FX":{ - "enabled":1, - "type":"Distortion", - "param1":0.1, - "param2":1, - "param3":0.5, - "param4":0, - "mix":0.5, - "osc_a":1, - "osc_b":1, - "osc_c":1 - } -} diff --git a/public/presets/fm3.ms24preset b/public/presets/fm3.ms24preset deleted file mode 100644 index d74e35d..0000000 --- a/public/presets/fm3.ms24preset +++ /dev/null @@ -1,93 +0,0 @@ -{ - "METADATA":{ - "name":"FM 03", - "type":"FM", - "author":"MangoSynth", - "rating":3 - }, - "MASTER":{ - "gain":1 - }, - "OSC_A":{ - "enabled":1, - "octave":-1, - "detune":0, - "volume":0, - "shape":1, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":7, - "spread":16, - "harmonicity":6, - "modulationIndex":22, - "modulationShape":0 - }, - "OSC_B":{ - "enabled":1, - "octave":1, - "detune":7, - "volume":-5, - "shape":2, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":7, - "spread":6, - "harmonicity":4, - "modulationIndex":12, - "modulationShape":1 - }, - "OSC_C":{ - "enabled":1, - "octave":0, - "detune":0, - "volume":0, - "shape":2, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":5, - "spread":21, - "harmonicity":33, - "modulationShape":2 - }, - "FILTER":{ - "enabled":1, - "frequency":1000, - "Q":16, - "gain":0, - "rolloff":0, - "type":0, - "osc_a":1, - "osc_b":1, - "osc_c":1, - "cutoff":118 - }, - "LFO":{ - "enabled":0, - "target":"FilterFrequency", - "type":0, - "grid":5, - "min":0, - "max":118, - "osc_a":1, - "osc_b":1, - "osc_c":1 - }, - "FX":{ - "enabled":1, - "type":"Distortion", - "param1":3.1, - "param2":2, - "param3":0.5, - "param4":0, - "mix":0.5, - "osc_a":1, - "osc_b":1, - "osc_c":1 - } -} diff --git a/public/presets/fm4.ms24preset b/public/presets/fm4.ms24preset deleted file mode 100644 index b3ec6ff..0000000 --- a/public/presets/fm4.ms24preset +++ /dev/null @@ -1,93 +0,0 @@ -{ - "METADATA":{ - "name":"FM 04", - "type":"Bass", - "author":"MangoSynth", - "rating":5 - }, - "MASTER":{ - "gain":1 - }, - "OSC_A":{ - "enabled":1, - "octave":1, - "detune":0, - "volume":0, - "shape":0, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":1, - "spread":0, - "harmonicity":13, - "modulationIndex":15, - "modulationShape":0 - }, - "OSC_B":{ - "enabled":1, - "octave":-1, - "detune":7, - "volume":0, - "shape":3, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":4, - "spread":21, - "harmonicity":15, - "modulationIndex":29, - "modulationShape":0 - }, - "OSC_C":{ - "enabled":1, - "octave":0, - "detune":0, - "volume":10, - "shape":3, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":1, - "spread":0, - "harmonicity":0, - "modulationShape":0 - }, - "FILTER":{ - "enabled":1, - "frequency":1000, - "Q":0, - "gain":0, - "rolloff":0, - "type":0, - "osc_a":1, - "osc_b":1, - "osc_c":1, - "cutoff":6544 - }, - "LFO":{ - "enabled":0, - "target":"FilterFrequency", - "type":0, - "grid":5, - "min":0, - "max":6544, - "osc_a":1, - "osc_b":1, - "osc_c":1 - }, - "FX":{ - "enabled":1, - "type":"Phaser", - "param1":1.1, - "param2":0, - "param3":1, - "param4":0, - "mix":0.5, - "osc_a":1, - "osc_b":1, - "osc_c":1 - } -} diff --git a/public/presets/fm5.ms24preset b/public/presets/fm5.ms24preset deleted file mode 100644 index af2a598..0000000 --- a/public/presets/fm5.ms24preset +++ /dev/null @@ -1,93 +0,0 @@ -{ - "METADATA":{ - "name":"FM 05", - "type":"FM", - "author":"MangoSynth", - "rating":4 - }, - "MASTER":{ - "gain":1 - }, - "OSC_A":{ - "enabled":1, - "octave":-2, - "detune":0, - "volume":-20, - "shape":2, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":4, - "spread":26, - "harmonicity":2, - "modulationIndex":50, - "modulationShape":0 - }, - "OSC_B":{ - "enabled":1, - "octave":0, - "detune":0, - "volume":0, - "shape":1, - "attack":0.005, - "decay":0.1, - "sustain":0.3, - "release":1, - "count":1, - "spread":0, - "harmonicity":0, - "modulationIndex":0, - "modulationShape":0 - }, - "OSC_C":{ - "enabled":1, - "octave":0, - "detune":0, - "volume":0, - "shape":2, - "attack":0.005, - "decay":0.3, - "sustain":0.3, - "release":1, - "count":4, - "spread":26, - "harmonicity":17, - "modulationShape":0 - }, - "FILTER":{ - "enabled":1, - "frequency":1000, - "Q":5, - "gain":0, - "rolloff":0, - "type":0, - "osc_a":1, - "osc_b":1, - "osc_c":1, - "cutoff":3000 - }, - "LFO":{ - "enabled":0, - "target":"FilterFrequency", - "type":0, - "grid":5, - "min":0, - "max":3000, - "osc_a":1, - "osc_b":1, - "osc_c":1 - }, - "FX":{ - "enabled":1, - "type":"Distortion", - "param1":1.5, - "param2":2, - "param3":0.3, - "param4":0, - "mix":0.3, - "osc_a":1, - "osc_b":1, - "osc_c":1 - } -} diff --git a/public/presets/init.ms24preset b/public/presets/init.ms24preset index 8847045..b51e521 100644 --- a/public/presets/init.ms24preset +++ b/public/presets/init.ms24preset @@ -1,92 +1,101 @@ { - "METADATA": { - "name": "Init", - "type": "Default", - "author": "MangoSynth", - "rating": 0 - }, - "MASTER": { - "gain": 1 - }, - "OSC_A": { - "enabled": 1, - "octave": 0, - "detune": 0, - "volume": 0, - "shape": 0, - "attack": 0.005, - "decay": 0.1, - "sustain": 0.3, - "release": 1, - "count": 1, - "spread": 0, - "harmonicity": 0, - "modulationIndex": 0, - "modulationShape": 0 - }, - "OSC_B": { - "enabled": 0, - "octave": 1, - "detune": 0, - "volume": 0, - "shape": 1, - "attack": 0.005, - "decay": 0.1, - "sustain": 0.3, - "release": 1, - "count": 1, - "spread": 0, - "harmonicity": 0, - "modulationIndex": 0, - "modulationShape": 0 - }, - "OSC_C": { - "enabled": 0, - "octave": 0, - "detune": 0, - "volume": 0, - "shape": 2, - "attack": 0.005, - "decay": 0.1, - "sustain": 0.3, - "release": 1, - "count": 1, - "spread": 0, - "harmonicity": 0, - "modulationShape": 0 - }, - "FILTER": { - "enabled": 1, - "frequency": 5000, - "Q": 0, - "gain": 0, - "rolloff": 0, - "type": 0, - "osc_a": 1, - "osc_b": 1, - "osc_c": 1 - }, - "LFO": { - "enabled": 0, - "target": "FilterFrequency", - "type": 0, - "grid": 5, - "min": 0, - "max": 1000, - "osc_a": 1, - "osc_b": 1, - "osc_c": 1 - }, - "FX": { - "enabled": 1, - "type": "Distortion", - "param1": 0, - "param2": 0, - "param3": 0.5, - "param4": 0, - "mix": 0.5, - "osc_a": 1, - "osc_b": 1, - "osc_c": 1 - } -} + "METADATA": { + "name": "Init", + "type": "Default", + "author": "MangoSynth", + "rating": 0 + }, + "MASTER": { + "gain": 1, + "octaveOffset": 0, + "bpm": 120 + }, + "OSC_A": { + "enabled": 1, + "octave": 0, + "detune": 0, + "volume": 0, + "shape": 0, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 0, + "modulationIndex": 0, + "modulationShape": 0 + }, + "OSC_B": { + "enabled": 0, + "octave": 1, + "detune": 0, + "volume": 0, + "shape": 1, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 0, + "modulationIndex": 0, + "modulationShape": 0 + }, + "OSC_C": { + "enabled": 0, + "octave": 0, + "detune": 0, + "volume": 0, + "shape": 2, + "attack": 0.005, + "decay": 0.1, + "sustain": 0.3, + "release": 1, + "count": 1, + "spread": 0, + "harmonicity": 0, + "modulationShape": 0 + }, + "FILTER": { + "enabled": 1, + "frequency": 5000, + "Q": 0, + "gain": 0, + "rolloff": 0, + "type": 0, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "LFO": { + "enabled": 0, + "target": "FilterFrequency", + "type": 0, + "grid": 5, + "min": 0, + "max": 1000, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "FX": { + "enabled": 1, + "type": "Distortion", + "param1": 0, + "param2": 0, + "param3": 0.5, + "param4": 0, + "mix": 0.5, + "osc_a": 1, + "osc_b": 1, + "osc_c": 1 + }, + "ARP": { + "A_enabled": 0, + "B_enabled": 0, + "C_enabled": 0, + "pattern": "up", + "playbackRate": 2 + } +} \ No newline at end of file diff --git a/src/synth.js b/src/synth.js index 484d223..44ac6f7 100644 --- a/src/synth.js +++ b/src/synth.js @@ -14,17 +14,16 @@ await register(await connect()) .catch((err) => {console.error(err)}) // TODO: -// 1. TOOLTIPS / HELP TEXT -// 2. RANDOMIZE PRESET -// 3. PHRASE RECORDER? (Arpeggiator Latch) -// 4. FIX LFO SWITCHING -// 5. DISPLAY REVERB LOAD (If possible) +// 1. SMART PRESET RANDOMIZATION +// 2. PHRASE RECORDER? (Arpeggiator Latch / Pattern Mode) +// 3. EXTRA LFO MODULATION TARGETS +// 4. DISPLAY REVERB LOAD (If possible) // TODO: BONUS SYNTH FEATURES // - Glide (Figure out why it's not working) // - Partials control (Will require strange dynamic controls for each partial) // - FX Buses (Will require using Tone.Channel: send generators to bus and receive on FX) -// - Noise Generators (Will require using Tone.Noise) +// - Noise Generators (Will require using Tone.Noise instead of synths) // -- TONE.JS SETUP -- // @@ -813,7 +812,8 @@ function connectTone() { } // Connect master waveform - OUTPUT.chain(master_waveform_gain, master_waveform) + OUTPUT.connect(master_waveform_gain) + master_waveform_gain.connect(master_waveform) // Reconnect Master Record OUTPUT.connect(REC_DEST) @@ -1170,9 +1170,7 @@ settingsHomeButton.addEventListener("click", function () { toggleDropdown(settingsDropdown) } }) -settingsThemeButton.addEventListener("click", function () { - - // toggleDropdown(settingsDropdown) +function toggleTheme() { if (SYNTH.THEME.current === "dark") { console.log("Changing theme from " + SYNTH.THEME.current + " to light") // Set theme to light @@ -1202,6 +1200,8 @@ settingsThemeButton.addEventListener("click", function () { updateHtmlClasses("border-blue-400", "bg-blue-400") updateHtmlClasses("border-red-400", "bg-red-400") updateHtmlClasses("border-green-400", "bg-green-400") + // Set localStorage + localStorage.setItem("ms24_opposite_theme", "dark") } else { console.log("Changing theme from " + SYNTH.THEME.current + " to dark") // Set theme to dark @@ -1230,7 +1230,12 @@ settingsThemeButton.addEventListener("click", function () { updateHtmlClasses("bg-blue-400", "border-blue-400") updateHtmlClasses("bg-red-400", "border-red-400") updateHtmlClasses("bg-green-400", "border-green-400") + // Set localStorage + localStorage.setItem("ms24_opposite_theme", "light") } +} +settingsThemeButton.addEventListener("click", function () { + toggleTheme() }) settingsVisualisationsButton.addEventListener("click", function () { if (SYNTH.STATE.visualisationsEnabled) { @@ -1523,9 +1528,7 @@ function loadPreset(preset) { "playbackRate": arpSpeedValues[PRESET.ARP.playbackRate] }) // MASTER - MASTER_GAIN.set({ - "gain": PRESET.MASTER.gain - }) + MASTER_GAIN.gain.value = PRESET.MASTER.gain Tone.Transport.set({ "bpm": PRESET.MASTER.bpm }) @@ -1537,16 +1540,22 @@ function loadPreset(preset) { // These have to be hardcoded in, because you can't read files from a folder client-side function loadDefaultPresets(){ let presetFiles = [ - "init.ms24preset", - "fm1.ms24preset", - "fm2.ms24preset", - "fm3.ms24preset", - "fm4.ms24preset", - "fm5.ms24preset", - "darkfm.ms24preset", - "aliendrone.ms24preset", - "angrydrone.ms24preset", - "buddhabass.ms24preset", + "Alien Drone.ms24preset", + "BuddyBass.ms24preset", + "Cheery Arp.ms24preset", + "Dark FM.ms24preset", + "Daylight.ms24preset", + "Delirium.ms24preset", + "Digital Flute.ms24preset", + "Eff Emm.ms24preset", + "Elysian FM.ms24preset", + "Hyperspace.ms24preset", + "Init.ms24preset", + "Sharp Pluck.ms24preset", + "Space Engine.ms24preset", + "Temple Bass.ms24preset", + "Wubber.ms24preset", + "Yes FM.ms24preset", ] for(let i = 0; i < presetFiles.length; i++){ @@ -2641,9 +2650,7 @@ for (let i = 0; i < controls.length; i++) { // -------------- // case "master_gain": PRESET.MASTER.gain = e.target.value - MASTER_GAIN.set({ - "gain": e.target.value - }) + MASTER_GAIN.gain.value = e.target.value break; case "master_bpm": // Set preset value @@ -3405,6 +3412,14 @@ consentButton.addEventListener("click", function () { new p5(p5_sketch, "p5_canvas"); SYNTH.STATE.enabled = true; firstEntry = false; + // If theme does not exist in localStorage, set it to dark, otherwise use the value to set SYNTH.THEME.current + // Then run changeTheme() to update the page colours + if (localStorage.getItem("ms24_opposite_theme") === null) { + localStorage.setItem("ms24_opposite_theme", "light") + } else { + SYNTH.THEME.current = localStorage.getItem("ms24_opposite_theme") + toggleTheme() + } } else if (!SYNTH.STATE.enabled && !firstEntry){ SYNTH.STATE.enabled = true; } @@ -3651,7 +3666,7 @@ let tooltips = { bottom: "Load a preset, or save your own!" }, random_preset_button: { - top: "Randomise synth settings", + top: "Randomise synth settings [DISABLED]", bottom: "Careful! This can result in VERY loud sounds!" } },