Add preset instruments
This commit is contained in:
parent
2e9699b524
commit
f1bcf16ddc
|
|
@ -0,0 +1,92 @@
|
|||
# Lightningbeam Factory Instruments
|
||||
|
||||
This directory contains bundled factory instruments for Lightningbeam DAW.
|
||||
|
||||
## Directory Structure
|
||||
|
||||
Instruments are organized by category:
|
||||
|
||||
```
|
||||
instruments/
|
||||
keyboards/ # Sampled keyboard instruments
|
||||
piano/
|
||||
samples/ # MP3 audio samples
|
||||
A1.mp3
|
||||
C1.mp3
|
||||
...
|
||||
piano.json # MultiSampler configuration
|
||||
epiano/
|
||||
...
|
||||
synthesizers/ # Synthesizer presets (node graph-based)
|
||||
bass.json
|
||||
lead.json
|
||||
pad.json
|
||||
...
|
||||
drums/ # Drum kits and percussion
|
||||
acoustic_kit/
|
||||
...
|
||||
```
|
||||
|
||||
## Instrument Definition Format
|
||||
|
||||
Each instrument is a JSON file that defines a MultiSampler node configuration:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "Instrument Name",
|
||||
"description": "Brief description",
|
||||
"version": "1.0",
|
||||
"node_type": "MultiSampler",
|
||||
"parameters": {
|
||||
"gain": 1.0,
|
||||
"attack": 0.001,
|
||||
"release": 0.5,
|
||||
"transpose": 0
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"sample_path": "./samples/C4.mp3",
|
||||
"root_note": 60, // MIDI note number (C4 = 60)
|
||||
"key_range": [58, 62], // MIDI notes [min, max]
|
||||
"velocity_range": [0, 127] // Velocity [min, max]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## MIDI Note Numbers
|
||||
|
||||
- C1 = 24, A1 = 33
|
||||
- C2 = 36, A2 = 45
|
||||
- C3 = 48, A3 = 57
|
||||
- C4 = 60 (middle C), A4 = 69
|
||||
- C5 = 72, A5 = 81
|
||||
- C6 = 84, A6 = 93
|
||||
- C7 = 96, A7 = 105
|
||||
|
||||
## Sample Format Guidelines
|
||||
|
||||
**Factory Samples (bundled):**
|
||||
- Format: MP3 (for size efficiency)
|
||||
- Sample rate: 44.1 kHz recommended
|
||||
- Bit depth: 16-bit minimum
|
||||
- Total size: Keep under 50MB per instrument
|
||||
|
||||
**User Samples (external):**
|
||||
- Format: WAV, FLAC, MP3, OGG
|
||||
- Any sample rate/bit depth supported
|
||||
- No size restrictions
|
||||
|
||||
## Adding New Instruments
|
||||
|
||||
1. Create a new directory: `instruments/my-instrument/`
|
||||
2. Add samples to: `instruments/my-instrument/samples/`
|
||||
3. Create configuration: `instruments/my-instrument/my-instrument.json`
|
||||
4. Reference samples with relative paths: `./samples/filename.mp3`
|
||||
|
||||
## Loading Instruments
|
||||
|
||||
Instruments are loaded via the frontend and can be:
|
||||
- Dragged into the node graph editor
|
||||
- Selected from the instrument browser
|
||||
- Loaded programmatically via the MultiSampler API
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
{
|
||||
"metadata": {
|
||||
"name": "Grand Piano",
|
||||
"description": "Acoustic grand piano with multi-octave sampling",
|
||||
"author": "Lightningbeam",
|
||||
"version": 1,
|
||||
"tags": ["piano", "keyboard", "acoustic"]
|
||||
},
|
||||
"midi_targets": [0],
|
||||
"output_node": 2,
|
||||
"nodes": [
|
||||
{
|
||||
"id": 0,
|
||||
"node_type": "MidiInput",
|
||||
"name": "MIDI In",
|
||||
"parameters": {},
|
||||
"position": [100.0, 100.0]
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"node_type": "MultiSampler",
|
||||
"name": "Piano Sampler",
|
||||
"parameters": {
|
||||
"0": 1.0,
|
||||
"1": 0.001,
|
||||
"2": 0.5,
|
||||
"3": 0.0
|
||||
},
|
||||
"sample_data": {
|
||||
"type": "multi_sampler",
|
||||
"layers": [
|
||||
{ "file_path": "samples/C1.mp3", "key_min": 0, "key_max": 28, "root_key": 24, "velocity_min": 0, "velocity_max": 127 },
|
||||
{ "file_path": "samples/A1.mp3", "key_min": 29, "key_max": 34, "root_key": 33, "velocity_min": 0, "velocity_max": 127 },
|
||||
{ "file_path": "samples/C2.mp3", "key_min": 35, "key_max": 40, "root_key": 36, "velocity_min": 0, "velocity_max": 127 },
|
||||
{ "file_path": "samples/A2.mp3", "key_min": 41, "key_max": 46, "root_key": 45, "velocity_min": 0, "velocity_max": 127 },
|
||||
{ "file_path": "samples/C3.mp3", "key_min": 47, "key_max": 52, "root_key": 48, "velocity_min": 0, "velocity_max": 127 },
|
||||
{ "file_path": "samples/A3.mp3", "key_min": 53, "key_max": 58, "root_key": 57, "velocity_min": 0, "velocity_max": 127 },
|
||||
{ "file_path": "samples/C4.mp3", "key_min": 59, "key_max": 64, "root_key": 60, "velocity_min": 0, "velocity_max": 127 },
|
||||
{ "file_path": "samples/A4.mp3", "key_min": 65, "key_max": 70, "root_key": 69, "velocity_min": 0, "velocity_max": 127 },
|
||||
{ "file_path": "samples/C5.mp3", "key_min": 71, "key_max": 76, "root_key": 72, "velocity_min": 0, "velocity_max": 127 },
|
||||
{ "file_path": "samples/A5.mp3", "key_min": 77, "key_max": 82, "root_key": 81, "velocity_min": 0, "velocity_max": 127 },
|
||||
{ "file_path": "samples/C6.mp3", "key_min": 83, "key_max": 88, "root_key": 84, "velocity_min": 0, "velocity_max": 127 },
|
||||
{ "file_path": "samples/A6.mp3", "key_min": 89, "key_max": 94, "root_key": 93, "velocity_min": 0, "velocity_max": 127 },
|
||||
{ "file_path": "samples/C7.mp3", "key_min": 95, "key_max": 100, "root_key": 96, "velocity_min": 0, "velocity_max": 127 },
|
||||
{ "file_path": "samples/A7.mp3", "key_min": 101, "key_max": 127, "root_key": 105, "velocity_min": 0, "velocity_max": 127 }
|
||||
]
|
||||
},
|
||||
"position": [350.0, 100.0]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"node_type": "AudioOutput",
|
||||
"name": "Out",
|
||||
"parameters": {},
|
||||
"position": [600.0, 100.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 }
|
||||
]
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,86 @@
|
|||
{
|
||||
"metadata": {
|
||||
"name": "Deep Bass",
|
||||
"description": "Thick sub bass with sawtooth oscillator",
|
||||
"author": "Lightningbeam",
|
||||
"version": 1,
|
||||
"tags": ["bass", "sub", "synth"]
|
||||
},
|
||||
"midi_targets": [0],
|
||||
"output_node": 6,
|
||||
"nodes": [
|
||||
{
|
||||
"id": 0,
|
||||
"node_type": "MidiInput",
|
||||
"name": "MIDI In",
|
||||
"parameters": {},
|
||||
"position": [100.0, 100.0]
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"node_type": "MidiToCV",
|
||||
"name": "MIDI→CV",
|
||||
"parameters": {},
|
||||
"position": [300.0, 100.0]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"node_type": "Oscillator",
|
||||
"name": "Osc",
|
||||
"parameters": {
|
||||
"0": 110.0,
|
||||
"1": 0.7,
|
||||
"2": 1.0
|
||||
},
|
||||
"position": [500.0, 80.0]
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"node_type": "ADSR",
|
||||
"name": "Amp Env",
|
||||
"parameters": {
|
||||
"0": 0.005,
|
||||
"1": 0.2,
|
||||
"2": 0.8,
|
||||
"3": 0.3
|
||||
},
|
||||
"position": [500.0, 200.0]
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"node_type": "Gain",
|
||||
"name": "VCA",
|
||||
"parameters": {
|
||||
"0": 1.0
|
||||
},
|
||||
"position": [700.0, 100.0]
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"node_type": "Filter",
|
||||
"name": "LP Filter",
|
||||
"parameters": {
|
||||
"0": 800.0,
|
||||
"1": 1.5,
|
||||
"2": 0.0
|
||||
},
|
||||
"position": [900.0, 100.0]
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"node_type": "AudioOutput",
|
||||
"name": "Out",
|
||||
"parameters": {},
|
||||
"position": [1100.0, 100.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": 1, "from_port": 1, "to_node": 3, "to_port": 0 },
|
||||
{ "from_node": 2, "from_port": 0, "to_node": 4, "to_port": 0 },
|
||||
{ "from_node": 3, "from_port": 0, "to_node": 4, "to_port": 1 },
|
||||
{ "from_node": 4, "from_port": 0, "to_node": 5, "to_port": 0 },
|
||||
{ "from_node": 5, "from_port": 0, "to_node": 6, "to_port": 0 }
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
{
|
||||
"metadata": {
|
||||
"name": "Bright Lead",
|
||||
"description": "Piercing lead synth with filter modulation",
|
||||
"author": "Lightningbeam",
|
||||
"version": 1,
|
||||
"tags": ["lead", "synth", "solo"]
|
||||
},
|
||||
"midi_targets": [0],
|
||||
"output_node": 7,
|
||||
"nodes": [
|
||||
{
|
||||
"id": 0,
|
||||
"node_type": "MidiInput",
|
||||
"name": "MIDI In",
|
||||
"parameters": {},
|
||||
"position": [100.0, 100.0]
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"node_type": "MidiToCV",
|
||||
"name": "MIDI→CV",
|
||||
"parameters": {},
|
||||
"position": [300.0, 100.0]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"node_type": "Oscillator",
|
||||
"name": "Osc",
|
||||
"parameters": {
|
||||
"0": 440.0,
|
||||
"1": 0.6,
|
||||
"2": 2.0
|
||||
},
|
||||
"position": [500.0, 60.0]
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"node_type": "LFO",
|
||||
"name": "Filter Mod",
|
||||
"parameters": {
|
||||
"0": 5.0,
|
||||
"1": 0.5,
|
||||
"2": 0.0,
|
||||
"3": 0.0
|
||||
},
|
||||
"position": [500.0, 200.0]
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"node_type": "Filter",
|
||||
"name": "LP Filter",
|
||||
"parameters": {
|
||||
"0": 2000.0,
|
||||
"1": 2.0,
|
||||
"2": 0.0
|
||||
},
|
||||
"position": [700.0, 100.0]
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"node_type": "ADSR",
|
||||
"name": "Amp Env",
|
||||
"parameters": {
|
||||
"0": 0.01,
|
||||
"1": 0.1,
|
||||
"2": 0.6,
|
||||
"3": 0.2
|
||||
},
|
||||
"position": [700.0, 240.0]
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"node_type": "Gain",
|
||||
"name": "VCA",
|
||||
"parameters": {
|
||||
"0": 1.0
|
||||
},
|
||||
"position": [900.0, 150.0]
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"node_type": "AudioOutput",
|
||||
"name": "Out",
|
||||
"parameters": {},
|
||||
"position": [1100.0, 150.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": 1, "from_port": 1, "to_node": 5, "to_port": 0 },
|
||||
{ "from_node": 2, "from_port": 0, "to_node": 4, "to_port": 0 },
|
||||
{ "from_node": 3, "from_port": 0, "to_node": 4, "to_port": 1 },
|
||||
{ "from_node": 4, "from_port": 0, "to_node": 6, "to_port": 0 },
|
||||
{ "from_node": 5, "from_port": 0, "to_node": 6, "to_port": 1 },
|
||||
{ "from_node": 6, "from_port": 0, "to_node": 7, "to_port": 0 }
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
{
|
||||
"metadata": {
|
||||
"name": "Lush Pad",
|
||||
"description": "Ambient pad with reverb and chorus",
|
||||
"author": "Lightningbeam",
|
||||
"version": 1,
|
||||
"tags": ["pad", "ambient", "synth"]
|
||||
},
|
||||
"midi_targets": [0],
|
||||
"output_node": 10,
|
||||
"nodes": [
|
||||
{
|
||||
"id": 0,
|
||||
"node_type": "MidiInput",
|
||||
"name": "MIDI In",
|
||||
"parameters": {},
|
||||
"position": [100.0, 150.0]
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"node_type": "MidiToCV",
|
||||
"name": "MIDI→CV",
|
||||
"parameters": {},
|
||||
"position": [300.0, 150.0]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"node_type": "Oscillator",
|
||||
"name": "Osc 1",
|
||||
"parameters": {
|
||||
"0": 440.0,
|
||||
"1": 0.4,
|
||||
"2": 0.0
|
||||
},
|
||||
"position": [500.0, 100.0]
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"node_type": "Oscillator",
|
||||
"name": "Osc 2",
|
||||
"parameters": {
|
||||
"0": 442.0,
|
||||
"1": 0.4,
|
||||
"2": 0.0
|
||||
},
|
||||
"position": [500.0, 200.0]
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"node_type": "Mixer",
|
||||
"name": "Osc Mix",
|
||||
"parameters": {
|
||||
"0": 1.0,
|
||||
"1": 1.0,
|
||||
"2": 0.0,
|
||||
"3": 0.0
|
||||
},
|
||||
"position": [700.0, 150.0]
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"node_type": "Filter",
|
||||
"name": "LP Filter",
|
||||
"parameters": {
|
||||
"0": 1500.0,
|
||||
"1": 0.707,
|
||||
"2": 0.0
|
||||
},
|
||||
"position": [900.0, 150.0]
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"node_type": "ADSR",
|
||||
"name": "Amp Env",
|
||||
"parameters": {
|
||||
"0": 0.5,
|
||||
"1": 0.3,
|
||||
"2": 0.7,
|
||||
"3": 1.0
|
||||
},
|
||||
"position": [900.0, 280.0]
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"node_type": "Gain",
|
||||
"name": "VCA",
|
||||
"parameters": {
|
||||
"0": 1.0
|
||||
},
|
||||
"position": [1100.0, 200.0]
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"node_type": "Chorus",
|
||||
"name": "Chorus",
|
||||
"parameters": {
|
||||
"0": 0.5,
|
||||
"1": 0.6,
|
||||
"2": 0.4
|
||||
},
|
||||
"position": [1300.0, 200.0]
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"node_type": "Reverb",
|
||||
"name": "Reverb",
|
||||
"parameters": {
|
||||
"0": 0.7,
|
||||
"1": 0.5,
|
||||
"2": 0.5
|
||||
},
|
||||
"position": [1500.0, 200.0]
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"node_type": "AudioOutput",
|
||||
"name": "Out",
|
||||
"parameters": {},
|
||||
"position": [1700.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": 1, "from_port": 0, "to_node": 3, "to_port": 0 },
|
||||
{ "from_node": 1, "from_port": 1, "to_node": 6, "to_port": 0 },
|
||||
{ "from_node": 2, "from_port": 0, "to_node": 4, "to_port": 0 },
|
||||
{ "from_node": 3, "from_port": 0, "to_node": 4, "to_port": 1 },
|
||||
{ "from_node": 4, "from_port": 0, "to_node": 5, "to_port": 0 },
|
||||
{ "from_node": 5, "from_port": 0, "to_node": 7, "to_port": 0 },
|
||||
{ "from_node": 6, "from_port": 0, "to_node": 7, "to_port": 1 },
|
||||
{ "from_node": 7, "from_port": 0, "to_node": 8, "to_port": 0 },
|
||||
{ "from_node": 8, "from_port": 0, "to_node": 9, "to_port": 0 },
|
||||
{ "from_node": 9, "from_port": 0, "to_node": 10, "to_port": 0 }
|
||||
]
|
||||
}
|
||||
Loading…
Reference in New Issue