livepilot 1.9.16 → 1.9.18

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 (54) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/AGENTS.md +2 -2
  3. package/CHANGELOG.md +52 -1
  4. package/README.md +2 -2
  5. package/livepilot/.Codex-plugin/plugin.json +2 -2
  6. package/livepilot/.claude-plugin/plugin.json +2 -2
  7. package/livepilot/agents/livepilot-producer/AGENT.md +15 -1
  8. package/livepilot/commands/arrange.md +19 -0
  9. package/livepilot/commands/evaluate.md +39 -0
  10. package/livepilot/commands/mix.md +9 -4
  11. package/livepilot/commands/perform.md +30 -0
  12. package/livepilot/commands/sounddesign.md +9 -4
  13. package/livepilot/skills/livepilot-arrangement/SKILL.md +137 -0
  14. package/livepilot/skills/livepilot-composition-engine/SKILL.md +107 -0
  15. package/livepilot/skills/livepilot-composition-engine/references/form-patterns.md +97 -0
  16. package/livepilot/skills/livepilot-composition-engine/references/transition-archetypes.md +102 -0
  17. package/livepilot/skills/livepilot-core/SKILL.md +69 -449
  18. package/livepilot/skills/livepilot-core/references/overview.md +2 -2
  19. package/livepilot/skills/livepilot-devices/SKILL.md +134 -0
  20. package/livepilot/skills/livepilot-evaluation/SKILL.md +152 -0
  21. package/livepilot/skills/livepilot-evaluation/references/capability-modes.md +118 -0
  22. package/livepilot/skills/livepilot-evaluation/references/evaluation-contracts.md +121 -0
  23. package/livepilot/skills/livepilot-evaluation/references/memory-promotion.md +110 -0
  24. package/livepilot/skills/livepilot-mix-engine/SKILL.md +123 -0
  25. package/livepilot/skills/livepilot-mix-engine/references/mix-critics.md +143 -0
  26. package/livepilot/skills/livepilot-mix-engine/references/mix-moves.md +105 -0
  27. package/livepilot/skills/livepilot-mixing/SKILL.md +155 -0
  28. package/livepilot/skills/livepilot-notes/SKILL.md +129 -0
  29. package/livepilot/skills/livepilot-performance-engine/SKILL.md +122 -0
  30. package/livepilot/skills/livepilot-performance-engine/references/performance-safety.md +98 -0
  31. package/livepilot/skills/livepilot-release/SKILL.md +10 -10
  32. package/livepilot/skills/livepilot-sound-design-engine/SKILL.md +123 -0
  33. package/livepilot/skills/livepilot-sound-design-engine/references/patch-model.md +119 -0
  34. package/livepilot/skills/livepilot-sound-design-engine/references/sound-design-critics.md +118 -0
  35. package/m4l_device/livepilot_bridge.js +1 -1
  36. package/mcp_server/__init__.py +1 -1
  37. package/mcp_server/connection.py +29 -22
  38. package/mcp_server/evaluation/tools.py +1 -1
  39. package/mcp_server/m4l_bridge.py +7 -4
  40. package/mcp_server/mix_engine/tools.py +1 -1
  41. package/mcp_server/performance_engine/tools.py +1 -1
  42. package/mcp_server/reference_engine/tools.py +1 -1
  43. package/mcp_server/sound_design/tools.py +1 -1
  44. package/mcp_server/tools/analyzer.py +4 -3
  45. package/mcp_server/tools/tracks.py +3 -3
  46. package/mcp_server/translation_engine/tools.py +1 -1
  47. package/package.json +2 -2
  48. package/remote_script/LivePilot/__init__.py +1 -1
  49. package/remote_script/LivePilot/arrangement.py +9 -2
  50. package/remote_script/LivePilot/browser.py +1 -0
  51. package/remote_script/LivePilot/clip_automation.py +6 -0
  52. package/remote_script/LivePilot/clips.py +2 -0
  53. package/remote_script/LivePilot/devices.py +1 -0
  54. package/remote_script/LivePilot/utils.py +2 -2
@@ -1,482 +1,102 @@
1
1
  ---
2
2
  name: livepilot-core
3
- description: Core discipline for LivePilot — agentic production system for Ableton Live 12. 236 tools across 32 domains. Device atlas (280+ devices), M4L analyzer (spectrum/RMS/key detection), technique memory, automation intelligence (16 curve types, 15 recipes), music theory (Krumhansl-Schmuckler, species counterpoint), generative algorithms (Euclidean rhythm, tintinnabuli, phase shift), neo-Riemannian harmony (PRL transforms, Tonnetz), MIDI file I/O. Use whenever working with Ableton Live through MCP tools.
3
+ description: Core discipline for LivePilot — agentic production system for Ableton Live 12. 236 tools across 31 domains. This skill should be used whenever working with Ableton Live through MCP tools. Provides golden rules, tool speed tiers, error handling protocol, and pointers to domain and engine skills.
4
4
  ---
5
5
 
6
6
  # LivePilot Core — Ableton Live 12
7
7
 
8
- Agentic production system for Ableton Live 12. 236 tools across 32 domains, three layers:
8
+ Agentic production system for Ableton Live 12. 236 tools across 31 domains, three layers:
9
9
 
10
- - **Device Atlas** — A structured knowledge corpus of 280+ instruments, 139 drum kits, and 350+ impulse responses. Consult the atlas before loading any device. It contains real browser URIs, preset names, and sonic descriptions. Never guess a device name — look it up.
11
- - **M4L Analyzer** — Real-time audio analysis on the master bus (8-band spectrum, RMS/peak, key detection). Use it to verify mixing decisions, detect frequency problems, and find the key before writing harmonic content.
12
- - **Technique Memory** — Persistent storage for production decisions. Consult `memory_recall` before creative tasks to understand the user's taste. Save techniques when the user likes something. The memory shapes future decisions without constraining them.
13
-
14
- These layers sit on top of 236 deterministic tools across 32 domains: transport, tracks, clips, notes, devices, scenes, mixing, browser, arrangement, memory, analyzer, automation, theory, generative, harmony, MIDI I/O, perception, agent_os, composition, motif, research, planner, project_brain, runtime, evaluation, memory_fabric, mix_engine, sound_design, transition_engine, reference_engine, translation_engine, and performance_engine.
10
+ - **Device Atlas** — 280+ instruments, 139 drum kits, 350+ impulse responses. Consult `references/device-atlas/` before loading any device. Never guess a device name.
11
+ - **M4L Analyzer** — Real-time audio analysis on the master bus (8-band spectrum, RMS/peak, key detection). Optional all core tools work without it.
12
+ - **Technique Memory** — Persistent storage for production decisions. Consult `memory_recall` before creative tasks to understand user taste.
15
13
 
16
14
  ## Golden Rules
17
15
 
18
- 1. **Always call `get_session_info` first** — know what you're working with before changing anything
19
- 2. **Verify after every write** — re-read state to confirm your change took effect
20
- 3. **Use `undo` liberally** — it's your safety net. Mention it to users when doing destructive ops
21
- 4. **One operation at a time** — don't batch unrelated changes. Verify between steps
22
- 5. **Track indices are 0-based** — track 0 is the first track. Use negative indices for return tracks (-1=A, -2=B). Use -1000 for master track.
23
- 6. **NEVER invent device/preset names** — always `search_browser` first, then use the exact `uri` from results with `load_browser_item`. Hallucinated names like "echomorph-hpf" will crash. The only exception is `find_and_load_device` for simple built-in effects ("Reverb", "Delay", "Compressor", "EQ Eight", "Saturator", "Utility").
24
- 7. **Color indices 0-69** — Ableton's fixed palette. Don't guess — use the index
25
- 8. **Volume is 0.0-1.0, pan is -1.0 to 1.0** — these are normalized, not dB
26
- 9. **Tempo range 20-999 BPM** — validated before sending to Ableton
27
- 10. **Always name your tracks and clips** — organization is part of the creative process
28
- 11. **Respect tool speed tiers** — see below. Never call heavy tools without user consent.
29
- 12. **ALWAYS report tool errors to the user** — if any tool call returns an error, immediately tell the user what failed, why, and what workaround you're using. Never silently swallow errors or switch strategies without explaining. Include: the tool name, the error message, and your fallback plan. This applies to all tool errors including missing M4L analyzer, dead plugins (`parameter_count` <= 1 on AU/VST), connection timeouts, and invalid parameter responses.
30
- 13. **Verify plugin health after loading** — v1.9.11+ tools now return `health_flags`, `mcp_sound_design_ready`, and `plugin_host_status` on device load and info calls. Check `mcp_sound_design_ready` if `false`, check `health_flags` for: `opaque_or_failed_plugin` (dead or untweakable AU/VST), `sample_dependent` (granular synth needing source audio). On failure: delete with `delete_device`, replace with native Ableton alternative, report to user.
31
- 14. **Use `C hijaz` for Hijaz/Phrygian Dominant keys** — v1.9.11+ theory tools accept `hijaz` as a key alias. Use `key="C hijaz"` in `detect_theory_issues`, `analyze_harmony`, etc. to avoid false out-of-key warnings on Hijaz, manele, or Middle Eastern scales.
16
+ 1. **Always call `get_session_info` first** — know the session before changing anything
17
+ 2. **Verify after every write** — re-read state to confirm changes took effect
18
+ 3. **Use `undo` liberally** — mention it to users when doing destructive ops
19
+ 4. **One operation at a time** — verify between steps
20
+ 5. **Track indices are 0-based** — negative for return tracks (-1=A, -2=B), -1000 for master
21
+ 6. **NEVER invent device/preset names** — always `search_browser` first, use exact `uri` from results. Exception: `find_and_load_device` for built-in effects only ("Reverb", "Delay", "Compressor", "EQ Eight", "Saturator", "Utility")
22
+ 7. **Color indices 0-69** — Ableton's fixed palette
23
+ 8. **Volume 0.0-1.0, pan -1.0 to 1.0** — normalized, not dB
24
+ 9. **Tempo range 20-999 BPM**
25
+ 10. **Always name tracks and clips** — organization is part of the process
26
+ 11. **Respect tool speed tiers** — see below
27
+ 12. **ALWAYS report tool errors** — never silently swallow errors. Include: tool name, error message, fallback plan
28
+ 13. **Verify plugin health after loading** — check `health_flags`, `mcp_sound_design_ready`, `plugin_host_status`. If `parameter_count` <= 1 on AU/VST dead plugin, delete and replace
29
+ 14. **Use `C hijaz` for Hijaz/Phrygian Dominant keys** — avoids false out-of-key warnings
32
30
 
33
31
  ## Tool Speed Tiers
34
32
 
35
- Not all tools respond instantly. Know the tiers and act accordingly.
36
-
37
- ### Instant (<1s) — Use freely, no warning needed
38
- All 236 core tools (transport, tracks, clips, notes, devices, scenes, mixing, browser, arrangement, memory, automation, theory, generative, harmony, midi_io, perception) plus Layer A perception tools (spectral shape, timbral profile, mel spectrum, chroma, onsets, harmonic/percussive, novelty, momentary loudness). These are the reflex tools — call them anytime without hesitation.
39
-
40
- ### Fast (1-5s) — Use freely, barely noticeable
41
- `analyze_loudness` · `analyze_dynamic_range` · `compare_loudness`
42
-
43
- File-based analysis that reads audio from disk. Fast enough to use mid-conversation. No warning needed for files under 2 minutes.
44
-
45
- ### Slow (5-15s) — Tell the user before calling
46
- `analyze_spectral_evolution` · `compare_to_reference` · `transcribe_to_midi`
47
-
48
- These run multi-pass analysis or load AI models. Always tell the user what you're about to do and roughly how long it takes. Never chain multiple slow tools back-to-back without checking in.
49
-
50
- ### Heavy (30-120s) — ALWAYS ask the user first
51
- `separate_stems` · `diagnose_mix`
33
+ ### Instant (<1s) Use freely
34
+ All 236 core tools plus M4L perception tools.
52
35
 
53
- These run GPU-intensive processes (Demucs stem separation). Processing time: 15-25s on GPU, 60-90s on CPU/MPS. `diagnose_mix` chains stem separation with per-stem analysis and can take 2+ minutes.
36
+ ### Fast (1-5s) Use freely
37
+ `analyze_loudness` · `analyze_mix` · `analyze_sound_design`
54
38
 
55
- **CRITICAL: Heavy Tool Protocol**
56
- - NEVER call `separate_stems` or `diagnose_mix` unless the user explicitly requests it
57
- - NEVER call them speculatively or "just to check"
58
- - NEVER call them during creative flow (beat-making, sound design, mixing) — they break momentum
59
- - ALWAYS warn the user with an estimated time before calling
60
- - ALWAYS prefer fast tools first: if the user says "check my mix", use `analyze_loudness` + `analyze_dynamic_range` (2 seconds total), report findings, THEN offer to escalate: "I could separate stems to investigate further, but that takes about a minute. Want me to?"
61
-
62
- **Wrong:** User says "how does my track sound?" → call `diagnose_mix` (120s surprise)
63
- **Right:** User says "how does my track sound?" → call `analyze_loudness` + `get_master_spectrum` (1s) → report findings → offer heavy analysis only if needed
64
-
65
- ### Escalation Pattern for Analysis
66
-
67
- Always follow this ladder — start fast, escalate only with consent:
39
+ ### Slow (5-15s) — Tell the user first
40
+ `compare_to_reference` · `analyze_spectrum_offline` · `read_audio_metadata`
68
41
 
42
+ **Escalation pattern:** Start fast, escalate only with consent:
69
43
  ```
70
44
  Level 1 (instant): get_master_spectrum + get_track_meters
71
- frequency balance + levels. Enough for 80% of questions.
72
-
73
- Level 2 (fast): analyze_loudness + analyze_dynamic_range
74
- → LUFS, true peak, LRA, crest factor. For mastering prep.
75
-
76
- Level 3 (slow): analyze_spectral_evolution + compare_to_reference
77
- → timbral trends, reference matching. Ask first.
78
-
79
- Level 4 (heavy): separate_stems → per-stem analysis → diagnose_mix
80
- → full diagnostic. Explicit user consent required.
81
- ```
82
-
83
- Never skip levels. The user's question determines the entry point, but always start at the lowest appropriate level and offer to go deeper.
84
-
85
- ## Track Health Checks — MANDATORY
86
-
87
- **Every track must be verified before you consider it "done".** A track with notes but no sound is a silent failure. Run these checks after building each track.
88
-
89
- ### After loading any instrument:
90
- 1. **`get_track_info`** — confirm the device loaded (`devices` array is not empty, `class_name` is correct)
91
- 2. **For Drum Racks: `get_rack_chains`** — confirm chains exist (an empty Drum Rack = silence). You need named chains like "Bass Drum", "Snare", etc.
92
- 3. **For synths: `get_device_parameters`** — confirm `Volume`/`Gain` parameter is not 0. Check oscillators are on.
93
- 4. **For effects: check `Dry/Wet` and `Drive`/key params** — a Saturator with Drive=0 or a Reverb with Dry/Wet=0 does nothing.
94
- 5. **For AU/VST plugins: `get_device_info`** — if `parameter_count` <= 1 and `class_name` contains "PluginDevice", the plugin is dead. Delete and replace with native alternative. Report the failure.
95
- 6. **CRITICAL — Sample-dependent instruments produce silence without source material.** These plugins load "successfully" (many parameters) but output nothing until a sample/audio source is provided. Since MCP tools CANNOT load samples into third-party plugin UIs, **NEVER use these as standalone instruments**:
96
- - **Granular synths:** iDensity, Tardigrain, Koala Sampler, Burns Audio Granular
97
- - **Samplers without presets:** bare Simpler, bare Sampler (always load a preset, never the empty shell)
98
- - **Sample players:** AudioLayer, sEGments (need user to load samples via plugin GUI)
99
- - **Instead use:** Wavetable, Operator, Drift, Analog, Meld, Collision, Tension — these are self-contained synthesizers that produce sound immediately from MIDI input alone.
100
- - **If granular textures are needed:** Use Wavetable with aggressive wavetable position modulation, or Operator with FM feedback and short envelopes, or load a Simpler/Sampler **preset** (not the bare instrument) from the Sounds browser.
101
-
102
- ### After programming notes:
103
- 1. **`fire_clip` or `fire_scene`** — always listen. If the track has notes but the instrument has no samples/chains, you're playing silence.
104
- 2. **Check volume is audible** — `get_track_info` → `mixer.volume` should be > 0.5 for a primary track. Master volume should be > 0.5.
105
-
106
- ### Device loading rules:
107
- - **NEVER load a bare "Drum Rack"** — it's empty. Always load a **kit preset** like "909 Core Kit", "808 Core Kit", "Boom Bap Kit", etc. Use `search_browser` with path "Drums" and `name_filter` containing "Kit" to find real kits with samples.
108
- - **For synths, prefer `search_browser` → `load_browser_item`** over `find_and_load_device` when the name could match samples (e.g., "Drift" matches "Synth Bass Drift Pad Wonk Bass.wav" before the actual Drift synth).
109
- - **After loading any effect**, verify its key parameters aren't at defaults that make it a pass-through. Set `Drive`, `Dry/Wet`, `Amount` etc. to meaningful values.
110
-
111
- ### Quick health check pattern:
112
- ```
113
- 1. get_device_info(track, device) → class_name? parameter_count?
114
- - PluginDevice with param_count<=1? → DEAD PLUGIN. Delete + replace.
115
- - Is it a sample-dependent plugin? → SILENT. Replace with self-contained synth.
116
- 2. get_track_info(track_index) → has devices? has clips?
117
- 3. get_rack_chains (if Drum Rack) → has chains with samples?
118
- 4. get_device_parameters → volume > 0? key params set?
119
- 5. Check mixer.volume > 0 → track is audible?
120
- 6. fire_clip / fire_scene → sound comes out?
121
- 7. REPORT any issues to the user → never silently work around failures.
122
- ```
123
-
124
- ### Red flags (things that produce silence):
125
- - Empty Drum Rack (no chains)
126
- - Synth with Volume/Gain at 0 or -inf dB
127
- - Effect with Dry/Wet at 0%
128
- - Track volume at 0
129
- - Track muted
130
- - Master volume at 0
131
- - MIDI track with no instrument loaded
132
- - Notes programmed but clip not fired
133
- - **Dead AU/VST plugin** — `parameter_count` <= 1 on a PluginDevice (plugin shell loaded, DSP engine crashed)
134
- - **Sample-dependent plugin with no sample** — granular synths, bare samplers, and sample players load "successfully" with many parameters but produce zero audio without source material. The sneakiest silent failure because `get_device_info` looks healthy.
135
-
136
- ## Tool Domains (236 total)
137
-
138
- ### Transport (12)
139
- `get_session_info` · `set_tempo` · `set_time_signature` · `start_playback` · `stop_playback` · `continue_playback` · `toggle_metronome` · `set_session_loop` · `undo` · `redo` · `get_recent_actions` · `get_session_diagnostics`
140
-
141
- ### Tracks (17)
142
- `get_track_info` · `create_midi_track` · `create_audio_track` · `create_return_track` · `delete_track` · `duplicate_track` · `set_track_name` · `set_track_color` · `set_track_mute` · `set_track_solo` · `set_track_arm` · `stop_track_clips` · `set_group_fold` · `set_track_input_monitoring` · `freeze_track` · `flatten_track` · `get_freeze_status`
143
-
144
- ### Clips (11)
145
- `get_clip_info` · `create_clip` · `delete_clip` · `duplicate_clip` · `fire_clip` · `stop_clip` · `set_clip_name` · `set_clip_color` · `set_clip_loop` · `set_clip_launch` · `set_clip_warp_mode`
146
-
147
- ### Notes (8)
148
- `add_notes` · `get_notes` · `remove_notes` · `remove_notes_by_id` · `modify_notes` · `duplicate_notes` · `transpose_notes` · `quantize_clip`
149
-
150
- ### Devices (15)
151
- `get_device_info` · `get_device_parameters` · `set_device_parameter` · `batch_set_parameters` · `toggle_device` · `delete_device` · `load_device_by_uri` · `find_and_load_device` · `set_simpler_playback_mode` · `get_rack_chains` · `set_chain_volume` · `get_device_presets` · `get_plugin_parameters` · `map_plugin_parameter` · `get_plugin_presets`
152
-
153
- ### Scenes (12)
154
- `get_scenes_info` · `create_scene` · `delete_scene` · `duplicate_scene` · `fire_scene` · `set_scene_name` · `set_scene_color` · `set_scene_tempo` · `get_scene_matrix` · `fire_scene_clips` · `stop_all_clips` · `get_playing_clips`
155
-
156
- ### Mixing (11)
157
- `set_track_volume` · `set_track_pan` · `set_track_send` · `get_return_tracks` · `get_master_track` · `set_master_volume` · `get_track_routing` · `set_track_routing` · `get_track_meters` · `get_master_meters` · `get_mix_snapshot`
158
-
159
- ### Browser (4)
160
- `get_browser_tree` · `get_browser_items` · `search_browser` · `load_browser_item`
161
-
162
- ### Arrangement (19)
163
- `get_arrangement_clips` · `create_arrangement_clip` · `add_arrangement_notes` · `get_arrangement_notes` · `remove_arrangement_notes` · `remove_arrangement_notes_by_id` · `modify_arrangement_notes` · `duplicate_arrangement_notes` · `transpose_arrangement_notes` · `set_arrangement_clip_name` · `set_arrangement_automation` · `back_to_arranger` · `jump_to_time` · `capture_midi` · `start_recording` · `stop_recording` · `get_cue_points` · `jump_to_cue` · `toggle_cue_point`
164
-
165
- ### Memory (8)
166
- `memory_learn` · `memory_recall` · `memory_get` · `memory_replay` · `memory_list` · `memory_favorite` · `memory_update` · `memory_delete`
167
-
168
- ### Analyzer (29) — requires LivePilot Analyzer M4L device on master track
169
- `get_master_spectrum` · `get_master_rms` · `get_detected_key` · `get_hidden_parameters` · `get_automation_state` · `walk_device_tree` · `get_clip_file_path` · `replace_simpler_sample` · `load_sample_to_simpler` · `get_simpler_slices` · `crop_simpler` · `reverse_simpler` · `warp_simpler` · `get_warp_markers` · `add_warp_marker` · `move_warp_marker` · `remove_warp_marker` · `scrub_clip` · `stop_scrub` · `get_display_values` · `get_spectral_shape` · `get_mel_spectrum` · `get_chroma` · `get_onsets` · `get_novelty` · `get_momentary_loudness` · `check_flucoma` · `capture_audio` · `capture_stop`
170
-
171
- ### Automation (8)
172
- Clip automation CRUD + intelligent curve generation with 15 built-in recipes.
173
-
174
- **Tools:** `get_clip_automation` · `set_clip_automation` · `clear_clip_automation` · `apply_automation_shape` · `apply_automation_recipe` · `get_automation_recipes` · `generate_automation_curve` · `analyze_for_automation`
175
-
176
- **Key discipline:**
177
-
178
- **The Feedback Loop (MANDATORY for all automation work):**
179
- 1. PERCEIVE: `get_master_spectrum` + `get_track_meters` -> understand current state
180
- 2. DIAGNOSE: What needs to change? Use diagnostic filter technique if unsure
181
- 3. DECIDE: Which parameter, which curve, which recipe?
182
- 4. ACT: `apply_automation_shape` or `apply_automation_recipe`
183
- 5. VERIFY: `get_master_spectrum` again -> did it work?
184
- 6. ADJUST: If not right, `clear_clip_automation` -> try different curve/params
185
- 7. NEVER write automation without reading spectrum first and after
186
-
187
- **Rules:**
188
- - Use `analyze_for_automation` before writing — let spectral data guide decisions
189
- - Use recipes for common patterns (filter_sweep_up, dub_throw, sidechain_pump)
190
- - Use `apply_automation_shape` for custom curves with specific math
191
- - Clear existing automation before rewriting: `clear_clip_automation` first
192
- - Load `references/automation-atlas.md` for curve theory, genre recipes, diagnostic technique, and cross-track spectral mapping
193
-
194
- ### Perception (4) — offline audio analysis, no Ableton connection required
195
- `analyze_loudness` · `analyze_spectrum_offline` · `compare_to_reference` · `read_audio_metadata`
196
-
197
- **Key discipline:**
198
- - These work on any local audio file — no Ableton connection needed
199
- - Use `compare_to_reference` for A/B mix comparisons against reference tracks
200
- - Use `analyze_loudness` to check streaming compliance (Spotify, Apple Music, YouTube targets)
201
-
202
- ### Theory (7)
203
- Music theory analysis — built-in pure Python engine, zero external dependencies.
204
-
205
- **Tools:** `analyze_harmony` · `suggest_next_chord` · `detect_theory_issues` · `identify_scale` · `harmonize_melody` · `generate_countermelody` · `transpose_smart`
206
-
207
- **Key discipline:**
208
- - These tools read MIDI notes directly from session clips — no file export needed
209
- - Auto-detects key via Krumhansl-Schmuckler if not provided; pass `key` hint for better accuracy
210
- - `analyze_harmony` and `detect_theory_issues` are analysis-only; `harmonize_melody`, `generate_countermelody`, and `transpose_smart` return note data ready for `add_notes`
211
- - Use your own musical knowledge alongside these tools — the engine provides data, you provide interpretation
212
- - Processing time: 2-5s for generative tools (harmonize, countermelody)
213
-
214
- ### Generative (5)
215
- Algorithmic composition tools — Euclidean rhythms, minimalist techniques.
216
-
217
- **Tools:** `generate_euclidean_rhythm` · `layer_euclidean_rhythms` · `generate_tintinnabuli` · `generate_phase_shift` · `generate_additive_process`
218
-
219
- **Key discipline:**
220
- - All generative tools return note arrays — use `add_notes` to place them in clips
221
- - `generate_euclidean_rhythm` uses the Bjorklund algorithm and identifies named rhythms (e.g., "tresillo", "cinquillo")
222
- - `layer_euclidean_rhythms` stacks multiple patterns for polyrhythmic textures across tracks
223
- - `generate_tintinnabuli` implements Arvo Pärt's technique: a T-voice (triad arpeggio) against a M-voice (melody)
224
- - `generate_phase_shift` implements Steve Reich's phasing: two identical patterns drifting apart over time
225
- - `generate_additive_process` implements Philip Glass's technique: melody expanded by adding one note per iteration
226
-
227
- ### Harmony (4)
228
- Neo-Riemannian harmony tools — Tonnetz navigation, voice leading, chromatic mediants.
229
-
230
- **Tools:** `navigate_tonnetz` · `find_voice_leading_path` · `classify_progression` · `suggest_chromatic_mediants`
231
-
232
- **Key discipline:**
233
- - These tools work with chord names and return harmonic relationships — no clip MIDI required
234
- - `navigate_tonnetz` returns PRL (Parallel, Relative, Leading-tone) neighbors for any chord
235
- - `find_voice_leading_path` finds the shortest harmonic path between two chords through Tonnetz space
236
- - `classify_progression` identifies the neo-Riemannian transform pattern in a chord sequence
237
- - `suggest_chromatic_mediants` returns all chromatic mediant relations with film score usage notes
238
- - Opycleid library provides full Tonnetz; falls back to pure Python PRL if not installed
239
-
240
- ### MIDI I/O (4)
241
- MIDI file import/export — works with standard .mid files on disk.
242
-
243
- **Tools:** `export_clip_midi` · `import_midi_to_clip` · `analyze_midi_file` · `extract_piano_roll`
244
-
245
- **Key discipline:**
246
- - `export_clip_midi` exports a session clip's notes to a .mid file at the specified path
247
- - `import_midi_to_clip` loads a .mid file into a clip, replacing existing notes
248
- - `analyze_midi_file` performs offline analysis of any .mid file (tempo, notes, structure) — does not require Ableton connection
249
- - `extract_piano_roll` returns a 2D velocity matrix (pitch × time) from a .mid file for visualization or processing
250
- - Dependencies: midiutil (export), pretty-midi (import/analysis) — lazy-loaded, ~5 MB total
251
-
252
- ### Agent OS (8)
253
- Goal-driven decision loop — compile goals, build world models, evaluate moves, learn from outcomes.
254
-
255
- **Tools:** `compile_goal_vector` · `build_world_model` · `evaluate_move` · `analyze_outcomes` · `get_technique_card` · `get_taste_profile` · `get_turn_budget` · `route_request`
256
-
257
- ### Composition (9)
258
- Large-scale arrangement structure — sections, phrases, gestures, harmonic fields, transitions.
259
-
260
- **Tools:** `analyze_composition` · `get_section_graph` · `get_phrase_grid` · `plan_gesture` · `evaluate_composition_move` · `get_harmony_field` · `get_transition_analysis` · `apply_gesture_template` · `get_section_outcomes`
261
-
262
- ### Motif (2)
263
- Recurring pattern detection and classical transformation.
264
-
265
- **Tools:** `get_motif_graph` · `transform_motif`
266
-
267
- ### Research (3)
268
- Production technique lookup, emotional arc analysis, and genre-specific tactics.
269
-
270
- **Tools:** `research_technique` · `get_emotional_arc` · `get_style_tactics`
271
-
272
- ### Planner (2)
273
- Arrangement planning — transform loops into full structures.
274
-
275
- **Tools:** `plan_arrangement` · `transform_section`
276
-
277
- ### Project Brain (2)
278
- Comprehensive project model — tracks, sections, capabilities, staleness.
279
-
280
- **Tools:** `build_project_brain` · `get_project_brain_summary`
281
-
282
- ### Runtime (4)
283
- Capability state, action ledger, and safety validation.
284
-
285
- **Tools:** `get_capability_state` · `get_action_ledger_summary` · `get_last_move` · `check_safety`
286
-
287
- ### Evaluation (1)
288
- Unified move evaluation using the Evaluation Fabric.
289
-
290
- **Tools:** `evaluate_with_fabric`
291
-
292
- ### Memory Fabric (6)
293
- Anti-preferences, session memory, taste dimensions, and promotion candidates.
294
-
295
- **Tools:** `get_anti_preferences` · `record_anti_preference` · `get_promotion_candidates` · `get_session_memory` · `add_session_memory` · `get_taste_dimensions`
296
-
297
- ### Mix Engine (6)
298
- Spectral mix analysis, issue detection, move planning, and evaluation.
299
-
300
- **Tools:** `analyze_mix` · `get_mix_issues` · `plan_mix_move` · `evaluate_mix_move` · `get_masking_report` · `get_mix_summary`
301
-
302
- ### Sound Design (4)
303
- Device chain analysis, issue detection, and move planning per track.
304
-
305
- **Tools:** `analyze_sound_design` · `get_sound_design_issues` · `plan_sound_design_move` · `get_patch_model`
306
-
307
- ### Transition Engine (3)
308
- Section transition analysis, planning, and scoring.
309
-
310
- **Tools:** `analyze_transition` · `plan_transition` · `score_transition`
311
-
312
- ### Reference Engine (3)
313
- Reference profile building, gap analysis, and move planning.
314
-
315
- **Tools:** `build_reference_profile` · `analyze_reference_gaps` · `plan_reference_moves`
316
-
317
- ### Translation Engine (2)
318
- Playback robustness — mono safety, small speakers, harshness detection.
319
-
320
- **Tools:** `check_translation` · `get_translation_issues`
321
-
322
- ### Performance Engine (3)
323
- Live performance support — scene state, safe moves, and handoffs.
324
-
325
- **Tools:** `get_performance_state` · `get_performance_safe_moves` · `plan_scene_handoff`
326
-
327
- ## Workflow: Building a Beat
328
-
329
- 1. `get_session_info` — check current state
330
- 2. `set_tempo` — set your target BPM
331
- 3. `create_midi_track` — create tracks for drums, bass, chords, melody
332
- 4. Name and color each track with `set_track_name` / `set_track_color`
333
- 5. **Load instruments with PRESETS, not empty shells:**
334
- - **Drums:** `search_browser` path="Drums" name_filter="Kit" → pick a kit → `load_browser_item`. NEVER load bare "Drum Rack".
335
- - **Synths:** `search_browser` path="Instruments" name_filter="Drift" → `load_browser_item` with exact URI. Avoids sample name collisions.
336
- - **VERIFY:** `get_rack_chains` for drums (must have chains), `get_device_parameters` for synths (Volume > 0)
337
- 6. `create_clip` — create clips on each track (4 beats = 1 bar at 4/4)
338
- 7. `add_notes` — program MIDI patterns. Each note needs `pitch`, `start_time`, `duration`
339
- 8. **HEALTH CHECK per track:** `get_track_info` → confirm device loaded, mixer volume > 0, not muted
340
- 9. **PITCH & TUNING AUDIT (MANDATORY before firing):**
341
- - `identify_scale` on every melodic track — verify all tracks share the same tonal center
342
- - `analyze_harmony` on chordal tracks — verify chord quality (no accidental augmented/diminished)
343
- - `detect_theory_issues` with `strict=true` — check out-of-key notes, parallel fifths, voice crossing
344
- - **Interpret against intended scale:** The analyzer only knows 7 standard modes. Exotic scales (Hijaz, Hungarian minor, whole tone, etc.) produce false "out of key" warnings. Cross-reference flagged pitches against the intended scale manually.
345
- - Report a clear tuning table to the user before proceeding
346
- - Fix wrong notes with `modify_notes` before firing
347
- 10. `fire_scene` or `fire_clip` — listen to your work
348
- 11. Iterate: `get_notes` → `modify_notes` / `transpose_notes` → listen again
349
-
350
- ## Workflow: Sound Design
351
-
352
- 1. Load a synth: `search_browser` path="Instruments" → `load_browser_item` with exact URI
353
- 2. **VERIFY:** `get_device_parameters` — confirm Volume/Gain > 0, oscillators on, filter not fully closed
354
- 3. `set_device_parameter` — tweak individual params by name or index
355
- 4. `batch_set_parameters` — set multiple params at once for a preset
356
- 5. Load effects: `find_and_load_device` with "Reverb", "Delay", "Compressor", etc.
357
- 6. **VERIFY each effect:** `get_device_parameters` — confirm Dry/Wet > 0, Drive/Amount set to meaningful values. An effect at default may be a pass-through.
358
- 7. Chain devices: they stack in order on the track's device chain
359
- 8. Use `get_device_info` to inspect rack devices, `get_rack_chains` for racks
360
-
361
- ## Workflow: Mixing
362
-
363
- 1. `get_session_info` — see all tracks and current levels
364
- 2. `get_mix_snapshot` — one-call overview of all levels, panning, routing, mute/solo
365
- 3. `set_track_volume` / `set_track_pan` — set levels and stereo position
366
- 4. `set_track_send` — route to return tracks for shared effects
367
- 5. `get_return_tracks` — check return track setup
368
- 6. `set_master_volume` — final output level
369
- 7. `set_track_routing` — configure input/output routing
370
- 8. `get_track_meters` / `get_master_meters` — check real-time output levels
371
-
372
- ### With LivePilot Analyzer (M4L device on master):
373
- 9. `get_master_spectrum` — check frequency balance across 8 bands (sub → air)
374
- 10. `get_master_rms` — true RMS and peak levels
375
- 11. `get_detected_key` — detect musical key before writing harmonies/bass
376
- 12. `get_hidden_parameters` — see ALL device params including hidden ones
377
- 13. `get_automation_state` — check which params have automation before overwriting
378
- 14. `walk_device_tree` — inspect nested racks and drum pads
379
- 15. `get_display_values` — human-readable parameter values ("440 Hz", "-6 dB")
380
-
381
- ## Workflow: Sample Chopping
382
-
383
- 1. Resample your beat to an audio track (set input to Resampling, arm, record)
384
- 2. `get_clip_file_path` — get the audio file path of the recorded clip
385
- 3. Load Simpler on a new MIDI track (with any sample pre-loaded)
386
- 4. `replace_simpler_sample` — load the resampled audio into Simpler
387
- 5. `set_simpler_playback_mode` — set to Slice mode
388
- 6. `get_simpler_slices` — see all auto-detected slice points
389
- 7. Program MIDI patterns targeting slice indices
390
- 8. Use `reverse_simpler` / `crop_simpler` / `warp_simpler` for transformations
391
- 9. `get_master_spectrum` — verify the result through the analyzer
392
-
393
- ## Workflow: Time Manipulation
394
-
395
- 1. `get_warp_markers` — see current timing map of an audio clip
396
- 2. `add_warp_marker` — pin key beats (downbeats, snare hits)
397
- 3. `move_warp_marker` — stretch/compress specific segments for tempo effects
398
- 4. `scrub_clip` / `stop_scrub` — preview specific positions
399
- 5. `get_master_spectrum` — verify the result sounds right
400
- 6. `remove_warp_marker` — clean up if needed
401
-
402
- ## Live 12 Note API
403
-
404
- Notes use this format when calling `add_notes`:
405
- ```json
406
- {
407
- "pitch": 60,
408
- "start_time": 0.0,
409
- "duration": 0.5,
410
- "velocity": 100,
411
- "mute": false
412
- }
45
+ Level 2 (fast): analyze_loudness + analyze_mix
46
+ Level 3 (slow): compare_to_reference + analyze_spectrum_offline
413
47
  ```
414
48
 
415
- When reading with `get_notes`, you also get:
416
- - `note_id` — unique ID for modify/remove operations
417
- - `probability` — 0.0-1.0, Live 12 per-note probability
418
- - `velocity_deviation` — -127.0 to 127.0
419
- - `release_velocity` — 0.0-127.0
49
+ ## Error Handling Protocol
420
50
 
421
- Use `modify_notes` with `note_id` to update existing notes.
422
- Use `remove_notes_by_id` for surgical deletion.
423
- Use `transpose_notes` for pitch shifting a region.
424
- Use `quantize_clip` to snap notes to a grid (grid is an enum: 1=1/4, 2=1/8, 5=1/16, 8=1/32).
51
+ Report ALL errors to the user immediately. Common failure modes:
52
+ - **Dead AU/VST plugin** — `parameter_count` <= 1 → delete, replace with native
53
+ - **Sample-dependent plugin** granular synths produce silence without samples → use self-contained synths (Wavetable, Operator, Drift, Analog)
54
+ - **Empty Drum Rack** bare rack = silence always load a kit preset
55
+ - **M4L bridge timeout** — device may be busy or removed → retry or skip analyzer features
56
+ - **Connection timeout** — Ableton unresponsive → check if session is heavy
425
57
 
426
58
  ## Technique Memory
427
59
 
428
- LivePilot has a persistent memory system for saving and recalling techniques — beats, device chains, mixing setups, browser pins, and preferences — with rich stylistic analysis.
60
+ Three modes:
61
+ - **Informed (default):** `memory_recall` before creative tasks, let past decisions influence new ones
62
+ - **Fresh:** Skip memory when user wants something new ("ignore my history", "surprise me")
63
+ - **Explicit recall:** `memory_recall` → `memory_get` → `memory_replay` when user references a saved technique
429
64
 
430
- ### Three Modes of Operation
65
+ ## Domain Skills
431
66
 
432
- **Informed (default):** Before creative decisions, consult memory:
433
- ```
434
- memory_recall(query relevant to the task, limit=5)
435
- ```
436
- Read the qualities of returned techniques. Let them INFLUENCE your choices — instrument selection, parameter ranges, rhythmic density, harmonic language — but always create something new. The memory shapes your understanding of this user's taste, not a template to copy.
437
-
438
- **Fresh (user override):** When the user signals a clean slate:
439
- - "ignore my history" / "something completely new" / "fresh"
440
- - "don't look at my saved stuff" / "surprise me"
441
- → Skip memory_recall entirely. Use only the shipped corpus and your own musical knowledge.
67
+ For domain-specific workflows, load the appropriate skill:
442
68
 
443
- **Explicit Recall:** When the user references a saved technique:
444
- - "use that boom bap beat" / "load my lo-fi chain" / "remember that thing I saved?"
445
- `memory_recall` to find it `memory_get` for full payload → `memory_replay` (adapt=false for exact, adapt=true for variation)
69
+ | Skill | When to use |
70
+ |-------|-------------|
71
+ | `livepilot-devices` | Loading, browsing, configuring devices and presets |
72
+ | `livepilot-notes` | Writing notes, theory, generative algorithms, MIDI I/O |
73
+ | `livepilot-mixing` | Volume, pan, sends, routing, automation |
74
+ | `livepilot-arrangement` | Song structure, scenes, arrangement view |
446
75
 
447
- ### Saving Techniques
76
+ ## V2 Engine Skills
448
77
 
449
- When the user says "save this" / "remember this" / "I like this":
78
+ For agentic evaluation loops, load the appropriate engine skill:
450
79
 
451
- 1. Collect raw data using existing tools (get_notes, get_device_parameters, etc.)
452
- 2. Write the qualities analysis — see `references/memory-guide.md` for the template
453
- 3. Call `memory_learn` with type, qualities, payload, tags
454
- 4. Confirm to the user what was saved and how it was characterized
455
-
456
- ### Memory Tools (8)
457
-
458
- | Tool | What it does |
459
- |------|-------------|
460
- | `memory_learn` | Save a technique with qualities + payload |
461
- | `memory_recall` | Search by text query, type, tags — returns summaries |
462
- | `memory_get` | Fetch full technique by ID (with payload) |
463
- | `memory_replay` | Get replay plan for agent to execute |
464
- | `memory_list` | Browse library with filtering and sorting |
465
- | `memory_favorite` | Star and/or rate (0-5) a technique |
466
- | `memory_update` | Update name, tags, or qualities |
467
- | `memory_delete` | Remove (creates backup first) |
80
+ | Skill | When to use |
81
+ |-------|-------------|
82
+ | `livepilot-mix-engine` | Critic-driven mix analysis and iterative improvement |
83
+ | `livepilot-sound-design-engine` | Critic-driven patch analysis and refinement |
84
+ | `livepilot-composition-engine` | Section analysis, transitions, motifs, form |
85
+ | `livepilot-performance-engine` | Live performance with safety constraints |
86
+ | `livepilot-evaluation` | Universal before/after evaluation loop |
468
87
 
469
88
  ## Reference Corpus
470
89
 
471
- Deep production knowledge lives in `references/`. Consult these when making creative decisions — they contain specific parameter values, recipes, and patterns. Use them as starting points, not rigid rules.
472
-
473
- | File | What's inside | When to consult |
474
- |------|--------------|-----------------|
475
- | `references/overview.md` | All 236 tools mapped with params, units, ranges | Quick lookup for any tool |
476
- | `references/midi-recipes.md` | Drum patterns by genre, chord voicings, scales, hi-hat techniques, humanization, polymetrics | Programming MIDI notes, building beats |
477
- | `references/sound-design.md` | Stock instruments/effects, parameter recipes for bass/pad/lead/pluck, device chain patterns | Loading and configuring devices |
478
- | `references/mixing-patterns.md` | Gain staging, parallel compression, sidechain, EQ by instrument, bus processing, stereo width | Setting volumes, panning, adding effects |
479
- | `references/ableton-workflow-patterns.md` | Session/Arrangement workflow, song structures by genre, follow actions, clip launch modes, export | Organizing sessions, structuring songs |
480
- | `references/m4l-devices.md` | Browser organization, MIDI effects, rack systems, device loading patterns | Finding and loading devices, using racks |
481
- | `references/memory-guide.md` | Qualities template, good/bad examples for each technique type | Saving techniques, writing qualities |
482
- | `references/automation-atlas.md` | Curve theory, perception-action loop, genre recipes, diagnostic filter technique, spectral mapping | Writing automation, choosing curves, mixing with spectral feedback |
90
+ Deep production knowledge in `references/`:
91
+
92
+ | File | Content |
93
+ |------|---------|
94
+ | `references/overview.md` | All 236 tools with params and ranges |
95
+ | `references/device-atlas/` | 280+ device corpus with URIs and presets |
96
+ | `references/midi-recipes.md` | Drum patterns, chord voicings, humanization |
97
+ | `references/sound-design.md` | Synth recipes, device chain patterns |
98
+ | `references/mixing-patterns.md` | Gain staging, compression, EQ, stereo |
99
+ | `references/automation-atlas.md` | 16 curve types, 15 recipes, spectral mapping |
100
+ | `references/ableton-workflow-patterns.md` | Session/arrangement workflows |
101
+ | `references/memory-guide.md` | Technique memory usage and quality templates |
102
+ | `references/m4l-devices.md` | M4L bridge command reference |
@@ -1,6 +1,6 @@
1
- # LivePilot v1.9.16 — Architecture & Tool Reference
1
+ # LivePilot v1.9.18 — Architecture & Tool Reference
2
2
 
3
- Agentic production system for Ableton Live 12. 236 tools across 32 domains. Device atlas (280+ devices), spectral perception (M4L analyzer), technique memory, automation intelligence (16 curve types, 15 recipes), music theory (Krumhansl-Schmuckler, species counterpoint), generative algorithms (Euclidean rhythm, tintinnabuli, phase shift, additive process), neo-Riemannian harmony (PRL transforms, Tonnetz), MIDI file I/O.
3
+ Agentic production system for Ableton Live 12. 236 tools across 31 domains. Device atlas (280+ devices), spectral perception (M4L analyzer), technique memory, automation intelligence (16 curve types, 15 recipes), music theory (Krumhansl-Schmuckler, species counterpoint), generative algorithms (Euclidean rhythm, tintinnabuli, phase shift, additive process), neo-Riemannian harmony (PRL transforms, Tonnetz), MIDI file I/O.
4
4
 
5
5
  ## Architecture
6
6