Add preset instruments

This commit is contained in:
Skyler Lehmkuhl 2025-10-28 04:18:18 -04:00
parent 2e9699b524
commit f1bcf16ddc
19 changed files with 475 additions and 0 deletions

View File

@ -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

View File

@ -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.

View File

@ -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 }
]
}

View File

@ -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 }
]
}

View File

@ -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 }
]
}