livepilot 1.16.1 → 1.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/CHANGELOG.md +311 -0
  2. package/README.md +16 -15
  3. package/installer/codex.js +14 -0
  4. package/m4l_device/LivePilot_Analyzer.amxd +0 -0
  5. package/m4l_device/livepilot_bridge.js +1 -1
  6. package/mcp_server/__init__.py +1 -1
  7. package/mcp_server/atlas/__init__.py +85 -0
  8. package/mcp_server/atlas/device_atlas.json +3183 -382
  9. package/mcp_server/atlas/device_techniques_index.json +1510 -0
  10. package/mcp_server/atlas/enrichments/__init__.py +1 -0
  11. package/mcp_server/atlas/enrichments/audio_effects/amp.yaml +112 -0
  12. package/mcp_server/atlas/enrichments/audio_effects/audio_effect_rack.yaml +77 -0
  13. package/mcp_server/atlas/enrichments/audio_effects/cabinet.yaml +81 -0
  14. package/mcp_server/atlas/enrichments/audio_effects/corpus.yaml +128 -0
  15. package/mcp_server/atlas/enrichments/audio_effects/envelope_follower.yaml +99 -0
  16. package/mcp_server/atlas/enrichments/audio_effects/external_audio_effect.yaml +64 -0
  17. package/mcp_server/atlas/enrichments/audio_effects/looper.yaml +85 -0
  18. package/mcp_server/atlas/enrichments/audio_effects/resonators.yaml +121 -0
  19. package/mcp_server/atlas/enrichments/audio_effects/snipper.yaml +17 -0
  20. package/mcp_server/atlas/enrichments/audio_effects/spectrum.yaml +61 -0
  21. package/mcp_server/atlas/enrichments/audio_effects/tuner.yaml +43 -0
  22. package/mcp_server/atlas/enrichments/audio_effects/utility.yaml +118 -0
  23. package/mcp_server/atlas/enrichments/audio_effects/vocoder.yaml +94 -0
  24. package/mcp_server/atlas/enrichments/instruments/analog.yaml +11 -0
  25. package/mcp_server/atlas/enrichments/instruments/bass.yaml +11 -0
  26. package/mcp_server/atlas/enrichments/instruments/bell_tower.yaml +38 -0
  27. package/mcp_server/atlas/enrichments/instruments/collision.yaml +11 -0
  28. package/mcp_server/atlas/enrichments/instruments/drift.yaml +11 -0
  29. package/mcp_server/atlas/enrichments/instruments/drum_rack.yaml +142 -0
  30. package/mcp_server/atlas/enrichments/instruments/electric.yaml +11 -0
  31. package/mcp_server/atlas/enrichments/instruments/emit.yaml +11 -0
  32. package/mcp_server/atlas/enrichments/instruments/meld.yaml +11 -0
  33. package/mcp_server/atlas/enrichments/instruments/operator.yaml +11 -0
  34. package/mcp_server/atlas/enrichments/instruments/poli.yaml +11 -0
  35. package/mcp_server/atlas/enrichments/instruments/sampler.yaml +12 -0
  36. package/mcp_server/atlas/enrichments/instruments/simpler.yaml +15 -0
  37. package/mcp_server/atlas/enrichments/instruments/tension.yaml +11 -0
  38. package/mcp_server/atlas/enrichments/instruments/vector_fm.yaml +11 -0
  39. package/mcp_server/atlas/enrichments/instruments/vector_grain.yaml +11 -0
  40. package/mcp_server/atlas/enrichments/instruments/wavetable.yaml +11 -0
  41. package/mcp_server/atlas/enrichments/midi_effects/filler.yaml +17 -0
  42. package/mcp_server/atlas/enrichments/utility/performer.yaml +15 -0
  43. package/mcp_server/atlas/enrichments/utility/vector_map.yaml +21 -0
  44. package/mcp_server/atlas/tools.py +291 -0
  45. package/mcp_server/m4l_bridge.py +19 -2
  46. package/mcp_server/sample_engine/tools.py +201 -128
  47. package/mcp_server/splice_client/http_bridge.py +319 -116
  48. package/mcp_server/tools/automation.py +168 -0
  49. package/package.json +2 -2
  50. package/remote_script/LivePilot/__init__.py +1 -1
  51. package/remote_script/LivePilot/arrangement.py +216 -1
  52. package/server.json +3 -3
@@ -0,0 +1,142 @@
1
+ id: drum_rack
2
+ name: Drum Rack
3
+ sonic_description: >
4
+ A container instrument that maps up to 128 drum pads — each pad hosts its own
5
+ Simpler (or Sampler, Operator, or any other instrument plus effect chain) and
6
+ responds to one MIDI note. Drum Rack is not a synth: its sonic character comes
7
+ entirely from the samples and devices loaded into its pads. Think of it as
8
+ infrastructure — the spine that turns a folder of one-shots into a playable
9
+ kit with per-pad routing, choke groups, and macro control.
10
+ synthesis_type: sample_container
11
+ character_tags: [container, infrastructure, kit_builder, per_pad_chain, macro_addressable]
12
+ use_cases:
13
+ - build_drum_kit_from_loose_samples
14
+ - per_pad_effects_processing
15
+ - choke_groups_for_hat_pairs
16
+ - macro_controlled_drum_performance
17
+ - parallel_sample_layering_on_a_single_pad
18
+ - host_for_sliced_break_recomposition
19
+ genre_affinity:
20
+ primary: [hip_hop, electronic, techno, house, trap]
21
+ secondary: [dnb, footwork, ambient, experimental, all]
22
+ complexity: beginner
23
+ self_contained: false
24
+ introduced_in: "6.0"
25
+ pack: Core Library
26
+ is_container: true
27
+ chain_model: per_pad_instrument_and_effects
28
+
29
+ key_parameters:
30
+ - name: "Pad Note Assignment"
31
+ description: >
32
+ Each pad is assigned a MIDI note (C1=36 by convention for the kick).
33
+ Programmatic: use `set_drum_chain_note(track, chain_index, note)` rather
34
+ than GUI drag. The Live 12.4+ drum-map uses note 36 for the bottom-left
35
+ pad by default.
36
+ range: [0, 127]
37
+ type: int
38
+ sweet_spots:
39
+ kick: 36
40
+ snare: 38
41
+ closed_hat: 42
42
+ open_hat: 46
43
+ clap: 39
44
+ ride: 51
45
+
46
+ - name: "Pad Volume (per chain)"
47
+ description: "Each pad has its own volume fader on the chain"
48
+ range: [0.0, 1.0]
49
+ type: float
50
+ sweet_spots:
51
+ anchor_kick: 0.85
52
+ accent_snare: 0.75
53
+ ghost_hat: 0.35
54
+
55
+ - name: "Pad Pan (per chain)"
56
+ description: "Stereo placement per pad — crucial for width on hats/percs"
57
+ range: [-1.0, 1.0]
58
+ type: float
59
+ sweet_spots:
60
+ center: 0.0
61
+ hat_right: 0.25
62
+ perc_wide: 0.6
63
+
64
+ - name: "Choke Group"
65
+ description: >
66
+ Pads in the same choke group cut each other off (pair hats so closed
67
+ cuts open, or group percussion so overlapping hits don't stack).
68
+ range: [0, 16]
69
+ type: int
70
+ sweet_spots:
71
+ hat_pair: 1
72
+ percussion_cluster: 2
73
+
74
+ - name: "Macro 1-8"
75
+ description: >
76
+ Drum Rack macros address any parameter across any pad chain. Use for
77
+ performance gestures (global dust filter, global saturation, pad volumes
78
+ collected onto one knob).
79
+ range: [0.0, 127.0]
80
+ type: float
81
+
82
+ pairs_well_with:
83
+ - device: "Drum Buss"
84
+ reason: "The native glue — shape/boom/transients for the whole kit post-rack. Often the entire mix tool a drum rack needs"
85
+ - device: "Compressor"
86
+ reason: "Glue the kit into one punch — 2-4 dB gain reduction with a medium attack"
87
+ - device: "EQ Eight"
88
+ reason: "High-pass below 30 Hz, notch masking from kick/snare"
89
+ - device: "Saturator"
90
+ reason: "Add harmonic weight without gain staging pain. Especially on sampled kits that sound sterile"
91
+ - device: "Reverb"
92
+ reason: "Per-pad sends (build a reverb return) rather than stacking on the master"
93
+ - device: "Gate"
94
+ reason: "Tighten room-mic'd one-shots or trim bleed from multi-sampled kits"
95
+
96
+ starter_recipes:
97
+ - name: "Empty Kit for Sample Programming"
98
+ description: "Build from scratch — use add_drum_rack_pad for each slot"
99
+ genre: electronic
100
+ steps:
101
+ - "Create empty Drum Rack on a MIDI track"
102
+ - "For each sample: add_drum_rack_pad(track, note=36+i, sample_path=...)"
103
+ - "Verify each pad landed: get_track_info, check chain count"
104
+ - "Set pad volumes by role: kick 0.85, snare 0.75, hats 0.4"
105
+
106
+ - name: "Sliced-Break Reprogram"
107
+ description: "Take a break loop, slice it, reroute to a Drum Rack for MIDI programming"
108
+ genre: dnb
109
+ steps:
110
+ - "Load break to Simpler in Slicing mode"
111
+ - "classify_simpler_slices to identify kick/snare/hat roles"
112
+ - "Recreate as Drum Rack with each slice as its own pad"
113
+ - "Program new pattern — you now have MIDI control of the break"
114
+
115
+ - name: "Layered Kick (sub + click + body)"
116
+ description: "Single kick pad with three parallel instruments for fullness"
117
+ genre: techno
118
+ steps:
119
+ - "Drum Rack → pad 36 (kick) → add 3 chains within that pad"
120
+ - "Chain 1: sub sine (Operator sine wave)"
121
+ - "Chain 2: transient click (short sample)"
122
+ - "Chain 3: body (sampled kick tail)"
123
+ - "Balance chain volumes — sub first, body second, click last"
124
+
125
+ gotchas:
126
+ - "A Drum Rack with no pads produces nothing — loading the container alone is not enough. Always verify at least one chain exists via get_track_info before firing notes"
127
+ - "Pad 36 (C1) is the bottom-left in the default view and the conventional kick slot. Live 12's auto-mapping assumes this"
128
+ - "add_drum_rack_pad is the ONE reliable tool for adding pads. Using load_browser_item repeatedly to 'add' pads creates nested racks, not siblings"
129
+ - "Each pad is itself a chain with its own Volume/Pan/Solo/Mute — per-pad mute is different from muting the pad's chain. Use set_chain_volume for the pad-level fader"
130
+ - "Macros must be explicitly mapped — they don't auto-address pad volumes. Use add_rack_macro + map_plugin_parameter on the underlying instrument"
131
+ - "Choke groups 0 and 'None' are the same (no choke). Use 1-16 for actual mutual-exclusion grouping"
132
+ - "A sliced Simpler inside a Drum Rack pad responds to slice-base pitch (36+N), NOT the pad's own MIDI note. Mis-configured slicing→pad routing is a common silence cause"
133
+ - "Per-pad sends can be shown/hidden by the rack's S (Send) button on the chain list. Hidden sends still work, but you can't see them — makes debugging missing reverb very hard"
134
+
135
+ learn_more:
136
+ official: "https://www.ableton.com/en/live-manual/12/drum-racks/"
137
+ livepilot_related_tools:
138
+ - add_drum_rack_pad
139
+ - set_drum_chain_note
140
+ - get_rack_chains
141
+ - set_chain_volume
142
+ - rename_chain
@@ -78,6 +78,17 @@ key_parameters:
78
78
  clean: 0.5
79
79
  asymmetric_bark: 0.3
80
80
 
81
+ signature_techniques:
82
+ - name: "Classic Rhodes"
83
+ description: "Suitcase preset, tremolo at 5 Hz, chorus modest. The tine-bar mechanism is already in the model — no outboard reverb needed for the classic sound."
84
+ aesthetic: ['jazz', 'neo_soul', 'r_and_b']
85
+ - name: "Gritty Wurlitzer"
86
+ description: "Wurly preset, short attack, amp drive in the 20-30% range, high-pass at 100 Hz. The reed-bar grit IS the character — don't EQ it out."
87
+ aesthetic: ['soul', 'funk', 'lo_fi']
88
+ - name: "Tape-warped EP"
89
+ description: "Rhodes through Grain Delay + Auto Filter LFO, slight pitch detune. Boards of Canada / lo-fi hip-hop territory — the imperfection is the sound."
90
+ aesthetic: ['lo_fi', 'downtempo', 'hip_hop']
91
+
81
92
  pairs_well_with:
82
93
  - device: "Chorus-Ensemble"
83
94
  reason: "Classic electric piano chorus — essential for the Juno-Rhodes sound"
@@ -102,6 +102,17 @@ key_parameters:
102
102
  natural: 500.0
103
103
  ambient: 3000.0
104
104
 
105
+ signature_techniques:
106
+ - name: "Grain cloud (Tim Hecker)"
107
+ description: "Load a sustained pad source, grain density high, pitch randomization slight, reverb send heavy. The grains blur the source into an undifferentiated textural bed."
108
+ aesthetic: ['ambient', 'drone', 'experimental']
109
+ - name: "Generative evolving bass"
110
+ description: "Source = a droning note, grain density medium, randomize position slightly. The bass evolves organically without automation."
111
+ aesthetic: ['ambient', 'deep_minimal', 'generative']
112
+ - name: "Fluid texture"
113
+ description: "Short vocal sample as source, grain density sparse, position LFO slow, pitch spread wide. Not a chord, not a noise — a liminal texture that sits between."
114
+ aesthetic: ['experimental', 'ambient', 'idm']
115
+
105
116
  pairs_well_with:
106
117
  - device: "Reverb"
107
118
  reason: "Spectral sounds merge beautifully with long reverb — creates immersive washes"
@@ -101,6 +101,17 @@ key_parameters:
101
101
  tight: 100.0
102
102
  ambient: 2000.0
103
103
 
104
+ signature_techniques:
105
+ - name: "Layered evolving pad"
106
+ description: "Two Drift engines with different characters (one dark, one bright), crossfade-modulated by slow LFO. The pad morphs between timbres without notes changing."
107
+ aesthetic: ['ambient', 'deep_minimal', 'cinematic']
108
+ - name: "Bass + sub stack"
109
+ description: "Engine A: mid bass with character. Engine B: pure sine sub. Balanced -3 dB apart. Two engines = precise crossover without needing a split."
110
+ aesthetic: ['dub_techno', 'trap', 'dnb']
111
+ - name: "Dual-voice chord"
112
+ description: "Engine A: plucked pluck at root. Engine B: sustained pad at 3rd/5th. Stacked voicing without needing two tracks."
113
+ aesthetic: ['house', 'deep_house', 'melodic_techno']
114
+
104
115
  pairs_well_with:
105
116
  - device: "Reverb"
106
117
  reason: "MPE expression + reverb creates deeply immersive evolving soundscapes"
@@ -133,6 +133,17 @@ key_parameters:
133
133
  subtle_vibrato: 0.1
134
134
  deep_modulation: 0.5
135
135
 
136
+ signature_techniques:
137
+ - name: "DX7 bell cluster"
138
+ description: "Algorithm 5 (two parallel 2-op stacks), operator ratios 1:3.51 and 1:14, envelope decay long. The inharmonic ratio 3.51 is the classic bell metallic quality."
139
+ aesthetic: ['synthwave', '80s', 'ambient']
140
+ - name: "Haas deep bass"
141
+ description: "Single sine carrier, modulator at ratio 1:1 low feedback, fundamental at C1. The sine fundamental is what reproduces on laptop speakers via harmonics — FM adds body without touching fundamental."
142
+ aesthetic: ['dub_techno', 'deep_house']
143
+ - name: "Aphex ambient FM pad"
144
+ description: "Algorithm with 3 serial carriers, slow LFO modulating operator levels, long release. Shifts timbre over 16+ bars without notes changing. The 'breathing' is the composition."
145
+ aesthetic: ['idm', 'ambient', 'experimental']
146
+
136
147
  pairs_well_with:
137
148
  - device: "Reverb"
138
149
  reason: "FM bells and keys sound stunning with plate or hall reverb"
@@ -128,6 +128,17 @@ key_parameters:
128
128
  standard: 6
129
129
  full: 12
130
130
 
131
+ signature_techniques:
132
+ - name: "Juno-style detuned chord"
133
+ description: "2 saws detuned 7 cents, sub-osc octave down, low-pass with slight resonance, chorus send heavy. 80s Juno territory without the preset."
134
+ aesthetic: ['synthwave', '80s', 'italo']
135
+ - name: "Retro stab"
136
+ description: "Single saw, fast filter envelope, high resonance, short decay. Classic 1987 house stab — works on top of any groove."
137
+ aesthetic: ['house', 'acid_house', 'electro']
138
+ - name: "Warm pad"
139
+ description: "Saw+square, slow attack, chorus, subtle LFO on cutoff. Where Poli shines vs Analog: less clinical, more 'plastic-fantastic' 80s charm."
140
+ aesthetic: ['synthwave', 'vaporwave', 'synth_pop']
141
+
131
142
  pairs_well_with:
132
143
  - device: "Reverb"
133
144
  reason: "Lush pads benefit from plate or hall reverb for depth"
@@ -14,6 +14,7 @@ genre_affinity:
14
14
  complexity: advanced
15
15
  self_contained: false
16
16
  introduced_in: "1.0"
17
+ pack: Core Library
17
18
 
18
19
  key_parameters:
19
20
  - name: "Filter Type"
@@ -159,6 +160,17 @@ key_parameters:
159
160
  natural: 0.5
160
161
  full_range: 1.0
161
162
 
163
+ signature_techniques:
164
+ - name: "Orchestral multi-velocity"
165
+ description: "4 velocity layers per note (pp/mp/mf/ff), velocity->filter positive so harder hits open brighter. Essential for sampled orchestral realism — anything else sounds like a toy keyboard."
166
+ aesthetic: ['cinematic', 'orchestral']
167
+ - name: "Layered ensemble pad"
168
+ description: "2-3 sample layers per key, detune each slightly, filter each differently. One sample = thin; three samples stacked = lush ensemble without needing a real choir."
169
+ aesthetic: ['ambient', 'cinematic', 'pop']
170
+ - name: "Round-robin drum kit"
171
+ description: "Multi-sample kick/snare/hat with 3-4 round-robin variations per note. Humanizes programmed drums — no two hits sound identical without needing micro-timing."
172
+ aesthetic: ['all']
173
+
162
174
  pairs_well_with:
163
175
  - device: "EQ Eight"
164
176
  reason: "Surgical frequency shaping for multi-sampled instruments in a mix context"
@@ -14,6 +14,7 @@ genre_affinity:
14
14
  complexity: beginner
15
15
  self_contained: false
16
16
  introduced_in: "1.0"
17
+ pack: Core Library
17
18
 
18
19
  key_parameters:
19
20
  - name: "Mode"
@@ -159,6 +160,17 @@ key_parameters:
159
160
  subtle: 0.3
160
161
  wide: 0.7
161
162
 
163
+ signature_techniques:
164
+ - name: "Vocal micro-chop (Akufen)"
165
+ description: "Load vocal, slicing mode, slice per transient, assign pads to short syllable fragments. Program MIDI pattern on the slices — the rhythmic chopping IS the vocal line."
166
+ aesthetic: ['microhouse', 'deep_minimal']
167
+ - name: "Villalobos sub-bass layer"
168
+ description: "One-shot mode, pitched sub sample in C1, warp off, amp envelope short. Layer this UNDER your kick — the sub_low (20-60 Hz) band carries the weight."
169
+ aesthetic: ['minimal_techno', 'dub_techno']
170
+ - name: "J Dilla micro-timed kit"
171
+ description: "Slicing mode on a classic break (e.g. Amen, Funky Drummer), slice per transient, then program MIDI with slight timing offsets (+/-10 ticks) — Dilla's micro-drunk feel comes from MIDI, not groove templates."
172
+ aesthetic: ['hip_hop', 'lo_fi', 'soul']
173
+
162
174
  pairs_well_with:
163
175
  - device: "Auto Filter"
164
176
  reason: "Adds rhythmic filter movement and envelope following to sampled material"
@@ -215,3 +227,6 @@ gotchas:
215
227
  - "Transpose shifts pitch in semitones, not time — use Warp for time-stretching without pitch change"
216
228
  - "crop_simpler and reverse_simpler are available as LivePilot tools for destructive sample editing"
217
229
  - "replace_simpler_sample only works if a sample is already loaded — cannot replace an empty Simpler"
230
+ - "Snap must be OFF after load_sample_to_simpler, or the sample plays silently (known Live bug). LivePilot auto-clears Snap in the role-aware load path"
231
+ - "load_browser_item Simplers come up at Volume=-12 dB and Ve Mode=None; track meter reads normal but master reads silence. Set Volume=0 dB on sustained tracks"
232
+ - "Slice mode maps slice N to MIDI pitch 36+N (base C1), NOT 60+C3 — notes at pitch 60+ produce silence. See `get_simpler_slices` doesn't disclose the base pitch"
@@ -97,6 +97,17 @@ key_parameters:
97
97
  subtle: 0.1
98
98
  expressive: 0.3
99
99
 
100
+ signature_techniques:
101
+ - name: "Plucked gut string"
102
+ description: "Plectrum exciter, string damping high, body=acoustic guitar, noise low. Useful as a percussion-melody hybrid when acoustic guitar sampling feels sterile."
103
+ aesthetic: ['ambient', 'folk_electronic', 'cinematic']
104
+ - name: "Bowed cello low register"
105
+ description: "Bow exciter, slow speed, pressure medium, body=cello, full sustain. Pair with Convolution Reverb hall IR for Jóhann Jóhannsson / Max Richter territory."
106
+ aesthetic: ['cinematic', 'ambient', 'modern_classical']
107
+ - name: "Metal-string drone"
108
+ description: "Bow on a high-tension thin string, no damping, infinite sustain — the sound is pure harmonic series. Useful under sustained pads as hidden-voice color."
109
+ aesthetic: ['ambient', 'drone', 'experimental']
110
+
100
111
  pairs_well_with:
101
112
  - device: "Reverb"
102
113
  reason: "Bowed strings and plucks sound natural in reverberant spaces — essential for realism"
@@ -103,6 +103,17 @@ key_parameters:
103
103
  natural: 300.0
104
104
  ambient: 2000.0
105
105
 
106
+ signature_techniques:
107
+ - name: "Modulated bell cluster"
108
+ description: "Carrier at C4, modulator at inharmonic ratio, Vector X controlling modulator depth, Vector Y controlling feedback. Particle motion makes the bell evolve physically."
109
+ aesthetic: ['ambient', 'experimental', 'deep_minimal']
110
+ - name: "Metallic drone"
111
+ description: "Low carrier (C1), high modulator, Vector coupled to both. Sounds like a large resonant object being struck and allowed to decay over 30 seconds."
112
+ aesthetic: ['drone', 'ambient', 'experimental']
113
+ - name: "Pulsing FM bass"
114
+ description: "Carrier at fundamental, modulator LFO'd by Vector X, amp LFO'd by Vector Y. FM bass with physical 'breathing' rather than square-wave LFO control."
115
+ aesthetic: ['deep_minimal', 'idm', 'experimental']
116
+
106
117
  pairs_well_with:
107
118
  - device: "Reverb"
108
119
  reason: "FM timbres gain depth and space in reverb — morphing vector creates shifting reflections"
@@ -111,6 +111,17 @@ key_parameters:
111
111
  balanced: 5000.0
112
112
  open: 15000.0
113
113
 
114
+ signature_techniques:
115
+ - name: "Basinski tape degradation"
116
+ description: "Load a vocal or orchestral source, grain size medium, grain position drifting slowly (via Vector), feedback high. Each playback degrades slightly — the source DECAYS as the piece plays."
117
+ aesthetic: ['ambient', 'experimental', 'modern_classical']
118
+ - name: "Dense grain cloud"
119
+ description: "Grain density maximum, pitch spread wide, position random. The source is obliterated into texture — useful when the sample is too recognizable."
120
+ aesthetic: ['idm', 'ambient', 'drone']
121
+ - name: "Slow-motion sustain"
122
+ description: "Grain size long (500-1000ms), density low (1-2 grains), pitch ratio 0.5 or 0.25. Effectively time-stretches the source with lo-fi grain character. Stars of the Lid territory."
123
+ aesthetic: ['ambient', 'drone', 'modern_classical']
124
+
114
125
  pairs_well_with:
115
126
  - device: "Reverb"
116
127
  reason: "Grain clouds dissolve beautifully into reverb — creates immersive washes"
@@ -102,6 +102,17 @@ key_parameters:
102
102
  range: ["Matrix routing"]
103
103
  type: enum
104
104
 
105
+ signature_techniques:
106
+ - name: "Supersaw trance lead"
107
+ description: "Saw wavetable, voices=7, spread=0.35, subosc square octave up, LPF fully open, chorus via unison detune not effect. Aim for glued breadth not comb-filter thinness."
108
+ aesthetic: ['trance', 'edm', 'progressive']
109
+ - name: "Morphing ambient pad"
110
+ description: "Two wavetables (e.g. Formant + Noise), wavetable-position modulated by slow LFO (0.05 Hz), filter envelope negative so tone opens during decay. No notes change — the TIMBRE is the music."
111
+ aesthetic: ['ambient', 'experimental', 'idm']
112
+ - name: "Wobble bass"
113
+ description: "Square-ish wavetable, LFO to filter cutoff synced at 1/8 or 1/16, depth near max. Classic dubstep bass — position automation over 4 bars moves texture under the wobble."
114
+ aesthetic: ['dubstep', 'bass_music', 'trap']
115
+
105
116
  pairs_well_with:
106
117
  - device: "Reverb"
107
118
  reason: "Pads and textures come alive with long reverb tails and high diffusion"
@@ -27,6 +27,23 @@ signature_techniques:
27
27
  - name: "Quick drum sketch"
28
28
  description: "Dial density, click generate, commit the pattern you like. Move on — don't spend time."
29
29
  aesthetic: [all]
30
+ - name: "Sparse minimal starter"
31
+ description: "Density at 20-30%, kick-snare-hat only, randomize → random sparse pattern → pick one as the minimal starting point for further human editing."
32
+ aesthetic: [deep_minimal, microhouse]
33
+
34
+ pairs_well_with:
35
+ - device: "Drum Rack"
36
+ reason: "Filler outputs MIDI — route it INTO a Drum Rack, not onto a synth"
37
+ - device: "Velocity"
38
+ reason: "Filler's velocity output is often flat — follow with Velocity MIDI effect for dynamic shaping"
39
+ - device: "Retrigger"
40
+ reason: "Filler for base pattern, Retrigger for fill density on accent beats"
41
+
42
+ gotchas:
43
+ - "Filler OUTPUTS MIDI to subsequent devices on the track — it does not play back on its own. Place before a Drum Rack"
44
+ - "Patterns (Iftah, from Generators by Iftah pack) is more musical for minimal. Use Filler when you want FREE and instant"
45
+ - "Randomize re-generates on every click — use undo to A/B compare patterns"
46
+ - "Density doesn't account for genre — high density in trap context, low in minimal. Adjust per aesthetic"
30
47
 
31
48
  learn_more:
32
49
  pack: "Building Max Devices"
@@ -31,6 +31,21 @@ signature_techniques:
31
31
  - name: "Crossfader-style A/B"
32
32
  description: "Build a crossfader that switches between two device states via inverse macro curves."
33
33
  aesthetic: [performance]
34
+ - name: "Single pedal = intro-to-drop"
35
+ description: "Map a footpedal input via MIDI → Performer fader → filter open, send boost, reverb decay extend, LFO depth rise. One pedal drives an arrangement energy shift."
36
+ aesthetic: [live_performance]
37
+
38
+ pairs_well_with:
39
+ - device: "Variations"
40
+ reason: "Performer controls continuous, Variations controls discrete — combine for coarse (Variations) + fine (Performer) morphing"
41
+ - device: "Any M4L or plugin"
42
+ reason: "Performer is the glue — any parameter becomes performable via curve-shaped Macro"
43
+
44
+ gotchas:
45
+ - "Performer is a macro CONTROLLER, not a generator. Without mappings, it does nothing"
46
+ - "Curve editor is not exposed via MCP — set shapes in the Max UI"
47
+ - "Crossfader controls are two faders with inverse curves, not a single crossfader — design for that mental model"
48
+ - "Saving a Performer preset captures mappings BY PATH (e.g. track 3 device 2 param X). Duplicating the track breaks the mapping — remap after track restructure"
34
49
 
35
50
  learn_more:
36
51
  official: "https://www.ableton.com/en/packs/performance-pack/"
@@ -31,6 +31,27 @@ signature_techniques:
31
31
  - name: "Coupled filter + reverb motion"
32
32
  description: "Particle X → filter cutoff, particle Y → reverb wet, particle velocity → dry/wet balance. Single physical motion drives a 3-parameter sonic change."
33
33
  aesthetic: [ambient, experimental]
34
+ - name: "Gravity-well attractor"
35
+ description: "Set strong gravity toward center + low friction → particle orbits return to origin with decay. Map to pad tone controls → pad breathes in-and-out toward a rest state."
36
+ aesthetic: [ambient, generative]
37
+ - name: "Chaotic lock-in"
38
+ description: "High initial velocity + medium friction → particle wanders, eventually settles. Map to filter + detune → synth starts mobile, finds a rest-state timbre over 16 bars."
39
+ aesthetic: [deep_minimal, experimental]
40
+
41
+ pairs_well_with:
42
+ - device: "Tree Tone"
43
+ reason: "Both from Inspired by Nature — Vector Map drives Tree Tone's structural parameters for coupled organic motion"
44
+ - device: "Bouncy Notes"
45
+ reason: "Vector Map modulates Bouncy Notes' ballistics → asymmetric, evolving note cascades"
46
+ - device: "Any parameter-rich synth"
47
+ reason: "Vector Map really shines when addressing 4+ coupled parameters on the same instrument — Wavetable, Tension, Collision"
48
+
49
+ gotchas:
50
+ - "Vector Map is a MODULATOR. Without destination mappings, the particle motion is invisible"
51
+ - "Heavy-parameter mappings can create runaway feedback loops (mod destination is itself a modulator source) — sanity-check your mod routing for cycles"
52
+ - "The particle is a single point — NOT multi-particle. For swarm behavior, stack multiple Vector Maps"
53
+ - "Very low friction values make the particle orbit forever — pair with gravity to stabilize"
54
+ - "Freezing the session (freeze_track) captures the particle's current state, not its dynamic behavior — flatten with the particle paused at a known position"
34
55
 
35
56
  learn_more:
36
57
  pack: "Inspired by Nature"