livepilot 1.0.0

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 (64) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/LICENSE +21 -0
  3. package/README.md +409 -0
  4. package/bin/livepilot.js +390 -0
  5. package/installer/install.js +95 -0
  6. package/installer/paths.js +79 -0
  7. package/mcp_server/__init__.py +2 -0
  8. package/mcp_server/__main__.py +5 -0
  9. package/mcp_server/connection.py +210 -0
  10. package/mcp_server/memory/__init__.py +5 -0
  11. package/mcp_server/memory/technique_store.py +296 -0
  12. package/mcp_server/server.py +87 -0
  13. package/mcp_server/tools/__init__.py +1 -0
  14. package/mcp_server/tools/arrangement.py +407 -0
  15. package/mcp_server/tools/browser.py +86 -0
  16. package/mcp_server/tools/clips.py +218 -0
  17. package/mcp_server/tools/devices.py +256 -0
  18. package/mcp_server/tools/memory.py +198 -0
  19. package/mcp_server/tools/mixing.py +121 -0
  20. package/mcp_server/tools/notes.py +269 -0
  21. package/mcp_server/tools/scenes.py +89 -0
  22. package/mcp_server/tools/tracks.py +175 -0
  23. package/mcp_server/tools/transport.py +117 -0
  24. package/package.json +37 -0
  25. package/plugin/agents/livepilot-producer/AGENT.md +62 -0
  26. package/plugin/commands/beat.md +18 -0
  27. package/plugin/commands/memory.md +22 -0
  28. package/plugin/commands/mix.md +15 -0
  29. package/plugin/commands/session.md +13 -0
  30. package/plugin/commands/sounddesign.md +16 -0
  31. package/plugin/plugin.json +19 -0
  32. package/plugin/skills/livepilot-core/SKILL.md +208 -0
  33. package/plugin/skills/livepilot-core/references/ableton-workflow-patterns.md +831 -0
  34. package/plugin/skills/livepilot-core/references/device-atlas/00-index.md +110 -0
  35. package/plugin/skills/livepilot-core/references/device-atlas/distortion-and-character.md +687 -0
  36. package/plugin/skills/livepilot-core/references/device-atlas/drums-and-percussion.md +753 -0
  37. package/plugin/skills/livepilot-core/references/device-atlas/dynamics-and-punch.md +525 -0
  38. package/plugin/skills/livepilot-core/references/device-atlas/eq-and-filtering.md +402 -0
  39. package/plugin/skills/livepilot-core/references/device-atlas/midi-tools.md +963 -0
  40. package/plugin/skills/livepilot-core/references/device-atlas/movement-and-modulation.md +874 -0
  41. package/plugin/skills/livepilot-core/references/device-atlas/space-and-depth.md +571 -0
  42. package/plugin/skills/livepilot-core/references/device-atlas/spectral-and-weird.md +714 -0
  43. package/plugin/skills/livepilot-core/references/device-atlas/synths-native.md +953 -0
  44. package/plugin/skills/livepilot-core/references/m4l-devices.md +352 -0
  45. package/plugin/skills/livepilot-core/references/memory-guide.md +107 -0
  46. package/plugin/skills/livepilot-core/references/midi-recipes.md +402 -0
  47. package/plugin/skills/livepilot-core/references/mixing-patterns.md +578 -0
  48. package/plugin/skills/livepilot-core/references/overview.md +209 -0
  49. package/plugin/skills/livepilot-core/references/sound-design.md +392 -0
  50. package/remote_script/LivePilot/__init__.py +42 -0
  51. package/remote_script/LivePilot/arrangement.py +693 -0
  52. package/remote_script/LivePilot/browser.py +424 -0
  53. package/remote_script/LivePilot/clips.py +211 -0
  54. package/remote_script/LivePilot/devices.py +596 -0
  55. package/remote_script/LivePilot/diagnostics.py +198 -0
  56. package/remote_script/LivePilot/mixing.py +194 -0
  57. package/remote_script/LivePilot/notes.py +339 -0
  58. package/remote_script/LivePilot/router.py +74 -0
  59. package/remote_script/LivePilot/scenes.py +99 -0
  60. package/remote_script/LivePilot/server.py +293 -0
  61. package/remote_script/LivePilot/tracks.py +268 -0
  62. package/remote_script/LivePilot/transport.py +151 -0
  63. package/remote_script/LivePilot/utils.py +123 -0
  64. package/requirements.txt +2 -0
@@ -0,0 +1,352 @@
1
+ # Devices, Browser & Racks — Stock Instruments, Effects & MIDI Tools
2
+
3
+ Complete reference for Ableton Live's device ecosystem: browser organization, MIDI effects, rack systems, and how to find/load devices through LivePilot.
4
+
5
+ ## Browser Organization
6
+
7
+ Ableton's browser is the source for all devices, presets, and samples. The `search_browser` and `get_browser_tree` tools navigate this structure.
8
+
9
+ ### Top-Level Categories
10
+
11
+ | Category | Contains | Use with LivePilot |
12
+ |----------|---------|-------------------|
13
+ | **Sounds** | Instrument presets organized by character (Bass, Keys, Lead, Pad, etc.) | `search_browser("warm pad")` |
14
+ | **Drums** | Drum Rack presets (kits, single hits, percussion) | `search_browser("808 kit")` |
15
+ | **Instruments** | Raw instruments without presets (Analog, Wavetable, Operator, etc.) | `find_and_load_device("Wavetable")` |
16
+ | **Audio Effects** | All audio effects (Compressor, Reverb, EQ Eight, etc.) | `find_and_load_device("Compressor")` |
17
+ | **MIDI Effects** | MIDI processors (Arpeggiator, Chord, Scale, etc.) | `find_and_load_device("Arpeggiator")` |
18
+ | **Max for Live** | M4L instruments, effects, and tools | `search_browser("LFO max")` |
19
+ | **Plug-ins** | VST/AU plugins installed on the system | `search_browser("Serum")` |
20
+ | **Clips** | Pre-made clips (MIDI patterns, audio loops) | `search_browser("house beat")` |
21
+ | **Samples** | Audio samples organized by category | `search_browser("kick one shot")` |
22
+ | **Packs** | Content from installed Packs | `get_browser_items("Packs")` |
23
+ | **User Library** | User's saved presets, clips, samples | `get_browser_items("User Library")` |
24
+
25
+ ### Audio Effects Sub-Categories
26
+
27
+ | Sub-Category | Devices |
28
+ |-------------|---------|
29
+ | **Dynamics** | Compressor, Glue Compressor, Limiter, Gate, Multiband Dynamics, Drum Buss |
30
+ | **EQ** | EQ Eight, EQ Three, Channel EQ |
31
+ | **Filter** | Auto Filter, Spectral Resonator |
32
+ | **Delay** | Delay, Echo, Grain Delay, Beat Repeat, Spectral Time |
33
+ | **Reverb** | Reverb, Convolution Reverb (M4L), Hybrid Reverb |
34
+ | **Distortion** | Saturator, Overdrive, Erosion, Redux, Pedal, Amp, Cabinet |
35
+ | **Modulation** | Chorus-Ensemble, Phaser-Flanger, Frequency Shifter, Ring Mod |
36
+ | **Utility** | Utility, Tuner, Spectrum, External Audio Effect |
37
+ | **Spatial** | Surround Panner (if available) |
38
+
39
+ ### Instrument Sub-Categories
40
+
41
+ | Sub-Category | Devices |
42
+ |-------------|---------|
43
+ | **Synths** | Analog, Wavetable, Operator, Drift, Meld |
44
+ | **Samplers** | Simpler, Sampler |
45
+ | **Physical Modeling** | Tension, Collision, Electric |
46
+ | **Drums** | Drum Rack (container) |
47
+ | **Other** | Instrument Rack, External Instrument |
48
+
49
+ ## MIDI Effects
50
+
51
+ MIDI effects go *before* the instrument in the device chain. They transform MIDI data before it reaches the sound generator.
52
+
53
+ ### Arpeggiator
54
+ Transforms held chords into arpeggiated note sequences.
55
+
56
+ **Key parameters:**
57
+ - `Style` — Up, Down, UpDown, DownUp, Converge, Diverge, Con&Diverge, PinkyUp, PinkyUpDown, ThumbUp, ThumbUpDown, Random, Custom
58
+ - `Rate` — Speed of arpeggiation (1/1 to 1/32, including triplets and dotted)
59
+ - `Gate` — Note length as percentage of step length (1%-200%)
60
+ - `Steps` — Number of steps (1-8) for custom patterns
61
+ - `Offset` — Shift the start of the arpeggio pattern
62
+ - `Groove` — Amount of groove/swing applied
63
+ - `Transpose` — Pitch shift per octave repetition
64
+ - `Distance` — Interval distance for Transpose
65
+ - `Repeats` — Number of octave repetitions (1-inf)
66
+ - `Velocity` — Fixed velocity or follows input
67
+
68
+ **Common settings:**
69
+ - Basic up arp: Style=Up, Rate=1/8, Gate=80%, Repeats=2
70
+ - Trance arp: Style=UpDown, Rate=1/16, Gate=50%, Repeats=3
71
+ - Random generative: Style=Random, Rate=1/16, Gate=60%, Repeats=2
72
+
73
+ ### Chord
74
+ Adds parallel intervals to incoming notes to build chords.
75
+
76
+ **Key parameters:**
77
+ - `Shift 1-6` — Semitone offset for each additional note (-36 to +36)
78
+ - `Velocity 1-6` — Velocity for each added note (1-127 or 0=off)
79
+
80
+ **Common settings:**
81
+ - Power chord (5th): Shift1=+7
82
+ - Major chord: Shift1=+4, Shift2=+7
83
+ - Minor chord: Shift1=+3, Shift2=+7
84
+ - Octave double: Shift1=+12
85
+ - Major 7th: Shift1=+4, Shift2=+7, Shift3=+11
86
+
87
+ ### Note Length
88
+ Controls the duration and timing of MIDI notes.
89
+
90
+ **Key parameters:**
91
+ - `Mode` — Time-based (set fixed length) or Trigger (note-on generates fixed note)
92
+ - `Length` — Note duration (in ms or synced divisions)
93
+ - `Gate` — Percentage of original length
94
+ - `Timing` — Time delay or advance
95
+
96
+ **Use cases:**
97
+ - Force all notes to equal length (staccato patterns)
98
+ - Create gated synth effects
99
+ - Trigger one-shot samples consistently
100
+
101
+ ### Pitch
102
+ Simple pitch transposition.
103
+
104
+ **Key parameters:**
105
+ - `Pitch` — Semitone offset (-48 to +48)
106
+ - `Range` — Limit the affected pitch range
107
+ - `Lowest` — Lower bound of affected range
108
+
109
+ ### Random
110
+ Adds randomization to MIDI notes.
111
+
112
+ **Key parameters:**
113
+ - `Chance` — Probability that randomization occurs (0-100%)
114
+ - `Choices` — Number of possible random values (1-24)
115
+ - `Scale` — Semitone range of randomization
116
+ - `Mode` — Add (adds random offset), Toggle (randomly enables/disables notes), Randomize (random pitch within range)
117
+ - `Sign` — Bi (both directions), Add (only up), Sub (only down)
118
+
119
+ **Use cases:**
120
+ - Generative melody: moderate Chance, Scale=12 (octave), Choices=7 (diatonic)
121
+ - Humanize velocity: small random velocity offset
122
+ - Probability gates: Chance=50% creates evolving patterns
123
+
124
+ ### Scale
125
+ Forces incoming MIDI to a specific musical scale.
126
+
127
+ **Key parameters:**
128
+ - `Base` — Root note (C, C#, D, etc.)
129
+ - `Scale Type` — Major, Minor, Dorian, Mixolydian, Pentatonic, Blues, Chromatic, etc.
130
+ - Per-note mapping grid — shows which notes map to which scale degrees
131
+
132
+ **Common scales:**
133
+ | Scale | Intervals (semitones from root) |
134
+ |-------|-------------------------------|
135
+ | Major | 0, 2, 4, 5, 7, 9, 11 |
136
+ | Minor (Natural) | 0, 2, 3, 5, 7, 8, 10 |
137
+ | Dorian | 0, 2, 3, 5, 7, 9, 10 |
138
+ | Mixolydian | 0, 2, 4, 5, 7, 9, 10 |
139
+ | Pentatonic Major | 0, 2, 4, 7, 9 |
140
+ | Pentatonic Minor | 0, 3, 5, 7, 10 |
141
+ | Blues | 0, 3, 5, 6, 7, 10 |
142
+ | Harmonic Minor | 0, 2, 3, 5, 7, 8, 11 |
143
+ | Whole Tone | 0, 2, 4, 6, 8, 10 |
144
+
145
+ **Tip:** Place Scale after Arpeggiator or Random to ensure generated notes stay in key.
146
+
147
+ ### Velocity
148
+ Modifies note velocity.
149
+
150
+ **Key parameters:**
151
+ - `Drive` — Amplifies velocity curve
152
+ - `Compand` — Compresses (negative) or expands (positive) velocity range
153
+ - `Out Hi` / `Out Low` — Output velocity range limits
154
+ - `Random` — Adds random velocity offset
155
+ - `Operation` — Clip, Gate, Fixed
156
+
157
+ **Use cases:**
158
+ - Consistent velocity: Fixed at 100
159
+ - Dynamic compression: Compand negative, narrows velocity range
160
+ - Humanize: small Random value (5-15)
161
+
162
+ ### CC Control (Live 12)
163
+ Sends MIDI CC messages based on note input. New in Live 12.
164
+
165
+ **Key parameters:**
166
+ - `CC Number` — Which CC to send (0-127)
167
+ - `Value` — Fixed CC value or mapped from velocity/pitch
168
+
169
+ **Use case:** Automate hardware synth parameters from MIDI clips.
170
+
171
+ **Note:** All pitch-based MIDI effects in Live 12 support a "Use Current Scale" toggle that constrains output to the clip's scale setting.
172
+
173
+ ## Max for Live Devices (Stock with Suite)
174
+
175
+ ### M4L Instruments
176
+ - **Drift** — Analog-modeled synth with character and instability
177
+ - **Meld** — MPE-capable dual-engine synth
178
+ - **Granulator III** — Granular synthesis instrument (updated from Granulator II)
179
+ - **Vector Grain** — Vector synthesis + granular engine
180
+ - **FlexGroove** — Groove-based instrument (from Packs)
181
+
182
+ ### M4L Audio Effects
183
+ - **Align Delay** — Phase-aligned delay for mixing
184
+ - **Color Limiter** — Colorful limiter with character
185
+ - **Convolution Reverb** — Impulse response reverb using real space recordings
186
+ - **Convolution Reverb Pro** — Extended version with EQ and modulation
187
+ - **Envelope Follower** — Generates control signal from audio amplitude
188
+ - **Gated Delay** — Rhythmically gated delay effect
189
+ - **LFO** — Free-running LFO that maps to any parameter
190
+ - **PitchLoop89** — Creative pitch-shifting looper
191
+ - **Shaper** — Custom waveshaping LFO/envelope
192
+ - **Spectral Resonator** — Spectral processing with pitched resonance
193
+ - **Spectral Time** — Spectral delay and freeze effects
194
+
195
+ ### M4L Drum Synths (Drum Rack compatible)
196
+ - **DS Kick** — Synthesized kick drum
197
+ - **DS Snare** — Synthesized snare
198
+ - **DS Clap** — Synthesized clap
199
+ - **DS HH** — Synthesized hi-hat
200
+ - **DS Cymbal** — Synthesized cymbal
201
+ - **DS Tom** — Synthesized tom
202
+ - **DS FM** — FM-synthesized percussion
203
+ - **DS Clang** — Metallic percussion
204
+ - **DS Sampler** — Sample-based drum voice
205
+
206
+ ### M4L MIDI Effects
207
+ - **Envelope MIDI** — Custom velocity/CC envelopes
208
+ - **Expression Control** — MPE expression mapping
209
+ - **Melodic Steps** — Step sequencer for melodies
210
+ - **MIDI Monitor** — Displays incoming MIDI data (debugging)
211
+
212
+ ### M4L Tools & Utilities
213
+ - **LFO** — Free-running LFO that maps to any parameter
214
+ - **Envelope Follower** — Generates control signal from audio amplitude
215
+ - **Shaper** — Custom waveshaping LFO/envelope
216
+ - **DS Kick/Snare/HH/Clap/Cymbal** — Drum synthesis (drum rack compatible)
217
+ - **Instant Haus** — Auto-generates house beats
218
+
219
+ ### M4L Control Surface Tools
220
+ - **Connection Kit** — OSC/MIDI routing tools
221
+ - **Max API** — Direct access to Live's API from Max
222
+
223
+ ## Rack Systems
224
+
225
+ ### Instrument Rack
226
+ - **Purpose**: Layer multiple instruments, create splits, build complex presets
227
+ - **Structure**: Multiple chains, each containing instruments and effects
228
+ - **Key features**:
229
+ - **Chain selector** — Map MIDI velocity, note, or a selector value to different chains
230
+ - **Key zones** — Different instruments for different pitch ranges (keyboard splits)
231
+ - **Velocity zones** — Different instruments triggered by different velocity ranges
232
+ - **Macros** — 8 (or 16 in Live 12) knobs that control parameters across all chains
233
+ - **Use case**: Layer a pad and a pluck — pad responds to low velocity, pluck to high
234
+
235
+ ### Audio Effect Rack
236
+ - **Purpose**: Parallel processing, multi-band processing, A/B comparison
237
+ - **Structure**: Multiple chains, each with its own effect chain
238
+ - **Key features**:
239
+ - **Parallel processing**: Audio splits to all chains simultaneously
240
+ - **Chain selector**: Fade between different effect chains
241
+ - **Macros**: Map to parameters across chains for unified control
242
+ - **Common patterns**:
243
+ - Parallel compression (dry chain + compressed chain)
244
+ - Multi-band processing (LP chain + BP chain + HP chain)
245
+ - Wet/dry blend with effects
246
+ - A/B comparison of different processing
247
+
248
+ ### Drum Rack
249
+ - **Purpose**: Map samples/instruments to MIDI notes (pads)
250
+ - **Structure**: 128 pads (MIDI notes 0-127), each pad is a chain
251
+ - **Key features**:
252
+ - **Choke groups**: Assign pads to groups — triggering one silences others (open/closed hi-hat)
253
+ - **Send/return within rack**: Internal send effects shared between pads
254
+ - **Pad chains**: Each pad has its own chain — sample + effects per pad
255
+ - **Layering**: Multiple samples per pad by layering chains
256
+ - **Receive note**: Each pad maps to a MIDI note
257
+ - **Standard mapping**: C1 (36) = Kick, D1 (38) = Snare, F#1 (42) = Closed HH (see midi-recipes.md)
258
+
259
+ ### MIDI Effect Rack
260
+ - **Purpose**: Process MIDI in parallel or with velocity/key splitting
261
+ - **Structure**: Multiple chains of MIDI effects
262
+ - **Key features**:
263
+ - Key zones for different MIDI processing per range
264
+ - Velocity zones for velocity-dependent MIDI transformation
265
+ - **Common pattern**: Arpeggiator on high notes, Chord on low notes
266
+
267
+ ### Macro Mapping
268
+ All rack types support macros:
269
+ - **Live 11 and earlier**: 8 macro knobs
270
+ - **Live 12**: Up to 16 macro knobs (expandable)
271
+ - **Mapping**: Right-click any parameter inside the rack → "Map to Macro X"
272
+ - **Ranges**: Each mapping has min/max values — macros can invert or limit parameter range
273
+ - **Use case**: One "Brightness" macro controlling filter cutoff, EQ, and reverb tone simultaneously
274
+
275
+ ## Loading Devices with LivePilot
276
+
277
+ ### `find_and_load_device` — Search by Name
278
+ Best for stock devices — searches browser and loads first match:
279
+ ```
280
+ find_and_load_device(track_index=0, name="Wavetable")
281
+ find_and_load_device(track_index=0, name="Compressor")
282
+ find_and_load_device(track_index=0, name="Arpeggiator")
283
+ ```
284
+
285
+ **Common device names** (exact search strings):
286
+ | Category | Device Names |
287
+ |----------|-------------|
288
+ | Synths | `Analog`, `Wavetable`, `Operator`, `Drift`, `Meld` |
289
+ | Samplers | `Simpler`, `Sampler` |
290
+ | Physical | `Tension`, `Collision`, `Electric` |
291
+ | Drums | `Drum Rack` |
292
+ | Dynamics | `Compressor`, `Glue Compressor`, `Limiter`, `Gate`, `Multiband Dynamics` |
293
+ | EQ | `EQ Eight`, `EQ Three`, `Channel EQ` |
294
+ | Filter | `Auto Filter` |
295
+ | Delay | `Delay`, `Echo`, `Grain Delay`, `Beat Repeat` |
296
+ | Reverb | `Reverb`, `Hybrid Reverb` |
297
+ | Distortion | `Saturator`, `Overdrive`, `Erosion`, `Redux`, `Pedal`, `Amp`, `Cabinet` |
298
+ | Modulation | `Chorus-Ensemble`, `Phaser-Flanger`, `Frequency Shifter` |
299
+ | Utility | `Utility`, `Tuner`, `Spectrum` |
300
+ | MIDI FX | `Arpeggiator`, `Chord`, `Note Length`, `Pitch`, `Random`, `Scale`, `Velocity`, `CC Control` |
301
+ | Racks | `Instrument Rack`, `Audio Effect Rack`, `MIDI Effect Rack` |
302
+ | Drum | `Drum Buss` (audio effect, not Drum Rack) |
303
+
304
+ ### `load_device_by_uri` — Load by URI
305
+ For specific presets or when you know the exact browser path:
306
+ ```
307
+ load_device_by_uri(track_index=0, uri="...")
308
+ ```
309
+ Get URIs by browsing with `search_browser` or `get_browser_items`.
310
+
311
+ **Important:** Device URIs are opaque strings — they cannot be constructed manually. You must discover them by walking the browser tree (`get_browser_tree` → `get_browser_items`) or searching (`search_browser`). Each `BrowserItem` has a `uri`, `name`, and `is_loadable` property.
312
+
313
+ ### `search_browser` — Find Presets
314
+ Search for presets, sounds, and samples:
315
+ ```
316
+ search_browser(query="warm pad")
317
+ search_browser(query="808 kick")
318
+ search_browser(query="techno lead")
319
+ ```
320
+
321
+ ### Device Chain Order
322
+ When loading multiple devices on a track, they're added in sequence. The order matters:
323
+
324
+ **MIDI Track chain:**
325
+ ```
326
+ MIDI Effects → Instrument → Audio Effects
327
+ (Arpeggiator → Scale → Wavetable → Compressor → Reverb)
328
+ ```
329
+
330
+ **Audio Track chain:**
331
+ ```
332
+ Audio Effects only
333
+ (EQ Eight → Compressor → Saturator → Delay → Reverb)
334
+ ```
335
+
336
+ Devices are indexed by position: first device = index 0, second = index 1, etc.
337
+
338
+ ## Device Parameter Inspection
339
+
340
+ Always inspect parameters before setting them — parameter names and indices vary by device:
341
+
342
+ ```
343
+ # Get all parameters for a device
344
+ get_device_parameters(track_index=0, device_index=0)
345
+
346
+ # Returns list of: name, value, min, max, is_quantized
347
+ # Use the exact name or index to set parameters
348
+ ```
349
+
350
+ **Quantized parameters** (is_quantized=True) have discrete steps — set to integers or specific values from the allowed list. Examples: filter type selectors, waveform selectors, on/off toggles.
351
+
352
+ **Continuous parameters** (is_quantized=False) accept any float within min-max range. Examples: cutoff frequency, volume, drive amount.
@@ -0,0 +1,107 @@
1
+ # Technique Memory Guide — Qualities Template & Examples
2
+
3
+ How to write rich, searchable stylistic analyses when saving techniques.
4
+
5
+ ## The Qualities Template
6
+
7
+ Every technique gets an agent-written `qualities` object. All fields are optional
8
+ except `summary` (required). Fill what's relevant to the technique type.
9
+
10
+ | Field | What to write | Example |
11
+ |-------|--------------|---------|
12
+ | summary | One sentence — what this is and why it's good | "Dusty boom bap groove with lazy swing and ghost snares" |
13
+ | mood | 2-4 mood/feeling words | ["laid-back", "dusty", "head-nodding"] |
14
+ | genre_tags | Genre associations | ["boom-bap", "hip-hop", "lo-fi"] |
15
+ | rhythm_feel | How the groove feels — swing, syncopation, density | "Syncopated kick with lazy hat swing, ghost snares anticipate the backbeat" |
16
+ | harmonic_character | Key, scale, chord quality, movement | "C minor dorian, jazzy 7th chords, descending bass line" |
17
+ | sonic_texture | Timbral character — warm/bright/gritty/clean | "Dusty vinyl-crackle hats, boomy 808 kick, dry snare with room verb" |
18
+ | production_notes | When/how to use this, what it pairs with | "Works as verse beat, needs sparse melody on top — Rhodes or muted guitar" |
19
+ | reference_points | Artists, songs, styles it evokes | "J Dilla 'Donuts' era meets Madlib 'Madvillainy' drums" |
20
+
21
+ ## Good vs Bad Qualities
22
+
23
+ ### Beat Pattern
24
+
25
+ **GOOD:**
26
+ ```json
27
+ {
28
+ "summary": "Dusty boom bap groove — lazy swing on the hats, ghost snares anticipate the backbeat, 85 BPM slow-roll energy",
29
+ "mood": ["laid-back", "dusty", "head-nodding"],
30
+ "genre_tags": ["boom-bap", "hip-hop"],
31
+ "rhythm_feel": "Syncopated kick at 0 and the 'and' of 1. Hi-hats on 8ths with +0.02 swing on offbeats. Ghost snares (vel 30) on 16ths before beats 2 and 4. The whole thing leans back.",
32
+ "production_notes": "Works as a verse beat. Needs sparse melody on top — Rhodes, muted guitar, or pitched sample. Leave headroom in low-mids for vocals.",
33
+ "reference_points": "J Dilla 'Donuts' era meets Madlib on 'Madvillainy'"
34
+ }
35
+ ```
36
+
37
+ **BAD:**
38
+ ```json
39
+ {
40
+ "summary": "Hip hop beat at 85 BPM with kick, snare, and hi-hats"
41
+ }
42
+ ```
43
+ The bad version is factual but tells the agent nothing about *feel*. It can't distinguish this from any other hip-hop beat.
44
+
45
+ ### Device Chain
46
+
47
+ **GOOD:**
48
+ ```json
49
+ {
50
+ "summary": "Warm tape-style lo-fi chain — subtle saturation into gentle filtering, makes anything sound like it's playing through a dusty speaker",
51
+ "mood": ["warm", "nostalgic", "lo-fi"],
52
+ "sonic_texture": "Soft Sine saturation adds even harmonics without harshness. Auto Filter rolls off highs gently around 3kHz. Erosion adds subtle digital artifacts like worn tape. The chain darkens and warms without killing presence.",
53
+ "production_notes": "Put this on Rhodes, guitar samples, or pads. Not great for drums — kills transients. Works beautifully on chord progressions.",
54
+ "reference_points": "Lo-fi hip-hop study beats aesthetic, Nujabes-style warmth"
55
+ }
56
+ ```
57
+
58
+ **BAD:**
59
+ ```json
60
+ {
61
+ "summary": "Saturator then Auto Filter then Erosion"
62
+ }
63
+ ```
64
+
65
+ ### Mix Template
66
+
67
+ **GOOD:**
68
+ ```json
69
+ {
70
+ "summary": "Deep house return setup — long lush reverb on A, filtered ping-pong delay on B, subtle parallel compression on C",
71
+ "mood": ["spacious", "deep", "hypnotic"],
72
+ "genre_tags": ["deep-house", "tech-house"],
73
+ "sonic_texture": "Reverb is dark and long (4s decay, heavy high-cut) for depth without brightness. Delay is filtered (LP at 3kHz) so echoes sit behind the mix. Parallel compression adds density to drums without crushing transients.",
74
+ "production_notes": "Send drums to C at 0.3, pads to A at 0.5, synth stabs to B at 0.3. Keep kick dry (no sends). Return levels around -8dB for subtlety."
75
+ }
76
+ ```
77
+
78
+ ### Preference
79
+
80
+ **GOOD:**
81
+ ```json
82
+ {
83
+ "summary": "Always use Valhalla VintageVerb instead of stock Reverb on return tracks — stock Reverb sounds too metallic in the highs for my taste"
84
+ }
85
+ ```
86
+
87
+ ### Browser Pin
88
+
89
+ **GOOD:**
90
+ ```json
91
+ {
92
+ "summary": "808 Core Kit — my go-to drum kit for trap and hip-hop. Has a punchy kick that sits well with Saturator, crispy hats, and a tight clap."
93
+ }
94
+ ```
95
+
96
+ ## When to Save
97
+
98
+ - User says "save this" / "remember this" / "I like this"
99
+ - A beat, sound, or chain turns out particularly well
100
+ - User discovers a browser item they want to use again
101
+ - User states a preference about how they work
102
+
103
+ ## When NOT to Save
104
+
105
+ - Generic, unfinished, or placeholder work
106
+ - Things that are already in the shipped reference corpus
107
+ - Exact duplicates of existing saved techniques