diff --git a/src/assets/instruments/keyboards/organ.json b/src/assets/instruments/keyboards/organ.json new file mode 100644 index 0000000..3eb9eae --- /dev/null +++ b/src/assets/instruments/keyboards/organ.json @@ -0,0 +1,249 @@ +{ + "metadata": { + "name": "Organ", + "description": "Classic drawbar organ with vibrato and reverb (polyphonic)", + "author": "Lightningbeam", + "version": 1, + "tags": ["organ", "keyboard", "drawbar"] + }, + "midi_targets": [0], + "output_node": 4, + "nodes": [ + { + "id": 0, + "node_type": "MidiInput", + "name": "MIDI In", + "parameters": {}, + "position": [100.0, 200.0] + }, + { + "id": 1, + "node_type": "VoiceAllocator", + "name": "Voice Allocator", + "parameters": { + "0": 8.0 + }, + "position": [400.0, 200.0], + "template_graph": { + "metadata": { + "name": "Voice Template", + "description": "Per-voice organ patch with drawbar harmonics", + "author": "Lightningbeam", + "version": 1, + "tags": [] + }, + "midi_targets": [0], + "output_node": 15, + "nodes": [ + { + "id": 0, + "node_type": "TemplateInput", + "name": "Template Input", + "parameters": {}, + "position": [-200.0, 0.0] + }, + { + "id": 1, + "node_type": "MidiToCV", + "name": "MIDI→CV", + "parameters": {}, + "position": [100.0, 0.0] + }, + { + "id": 2, + "node_type": "Constant", + "name": "-1V", + "parameters": { + "0": -1.0 + }, + "position": [250.0, -300.0] + }, + { + "id": 3, + "node_type": "Constant", + "name": "+1V", + "parameters": { + "0": 1.0 + }, + "position": [250.0, 200.0] + }, + { + "id": 4, + "node_type": "Oscillator", + "name": "16'", + "parameters": { + "0": 440.0, + "1": 0.8, + "2": 0.0 + }, + "position": [700.0, -300.0] + }, + { + "id": 5, + "node_type": "Oscillator", + "name": "8'", + "parameters": { + "0": 440.0, + "1": 0.65, + "2": 0.0 + }, + "position": [700.0, -100.0] + }, + { + "id": 6, + "node_type": "Math", + "name": "Oct Down", + "parameters": { + "0": 0.0 + }, + "position": [450.0, -300.0] + }, + { + "id": 7, + "node_type": "Math", + "name": "Oct Up", + "parameters": { + "0": 0.0 + }, + "position": [450.0, 200.0] + }, + { + "id": 8, + "node_type": "Oscillator", + "name": "4'", + "parameters": { + "0": 440.0, + "1": 0.4, + "2": 0.0 + }, + "position": [700.0, 100.0] + }, + { + "id": 9, + "node_type": "Constant", + "name": "+1.585V", + "parameters": { + "0": 1.585 + }, + "position": [250.0, 400.0] + }, + { + "id": 10, + "node_type": "Math", + "name": "Twelfth", + "parameters": { + "0": 0.0 + }, + "position": [450.0, 400.0] + }, + { + "id": 11, + "node_type": "Oscillator", + "name": "2 2/3'", + "parameters": { + "0": 440.0, + "1": 0.3, + "2": 0.0 + }, + "position": [700.0, 300.0] + }, + { + "id": 12, + "node_type": "ADSR", + "name": "Amp Env", + "parameters": { + "0": 0.005, + "1": 0.05, + "2": 0.9, + "3": 0.08 + }, + "position": [700.0, 500.0] + }, + { + "id": 13, + "node_type": "Mixer", + "name": "Drawbars", + "parameters": { + "0": 0.7, + "1": 1.0, + "2": 0.6, + "3": 0.4 + }, + "position": [1000.0, 0.0] + }, + { + "id": 14, + "node_type": "Gain", + "name": "VCA", + "parameters": { + "0": 1.0 + }, + "position": [1250.0, 0.0] + }, + { + "id": 15, + "node_type": "TemplateOutput", + "name": "Template Output", + "parameters": {}, + "position": [1500.0, 0.0] + } + ], + "connections": [ + { "from_node": 0, "from_port": 0, "to_node": 1, "to_port": 0 }, + { "from_node": 1, "from_port": 0, "to_node": 5, "to_port": 0 }, + { "from_node": 1, "from_port": 0, "to_node": 6, "to_port": 0 }, + { "from_node": 2, "from_port": 0, "to_node": 6, "to_port": 1 }, + { "from_node": 6, "from_port": 0, "to_node": 4, "to_port": 0 }, + { "from_node": 1, "from_port": 0, "to_node": 7, "to_port": 0 }, + { "from_node": 3, "from_port": 0, "to_node": 7, "to_port": 1 }, + { "from_node": 7, "from_port": 0, "to_node": 8, "to_port": 0 }, + { "from_node": 1, "from_port": 0, "to_node": 10, "to_port": 0 }, + { "from_node": 9, "from_port": 0, "to_node": 10, "to_port": 1 }, + { "from_node": 10, "from_port": 0, "to_node": 11, "to_port": 0 }, + { "from_node": 1, "from_port": 1, "to_node": 12, "to_port": 0 }, + { "from_node": 4, "from_port": 0, "to_node": 13, "to_port": 0 }, + { "from_node": 5, "from_port": 0, "to_node": 13, "to_port": 1 }, + { "from_node": 8, "from_port": 0, "to_node": 13, "to_port": 2 }, + { "from_node": 11, "from_port": 0, "to_node": 13, "to_port": 3 }, + { "from_node": 13, "from_port": 0, "to_node": 14, "to_port": 0 }, + { "from_node": 12, "from_port": 0, "to_node": 14, "to_port": 1 }, + { "from_node": 14, "from_port": 0, "to_node": 15, "to_port": 0 } + ] + } + }, + { + "id": 2, + "node_type": "Vibrato", + "name": "Vibrato", + "parameters": { + "0": 6.0, + "1": 0.15 + }, + "position": [700.0, 200.0] + }, + { + "id": 3, + "node_type": "Reverb", + "name": "Reverb", + "parameters": { + "0": 0.4, + "1": 0.5, + "2": 0.3 + }, + "position": [1000.0, 200.0] + }, + { + "id": 4, + "node_type": "AudioOutput", + "name": "Out", + "parameters": {}, + "position": [1300.0, 200.0] + } + ], + "connections": [ + { "from_node": 0, "from_port": 0, "to_node": 1, "to_port": 0 }, + { "from_node": 1, "from_port": 0, "to_node": 2, "to_port": 0 }, + { "from_node": 2, "from_port": 0, "to_node": 3, "to_port": 0 }, + { "from_node": 3, "from_port": 0, "to_node": 4, "to_port": 0 } + ] +}