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.
- package/.claude-plugin/marketplace.json +3 -3
- package/AGENTS.md +2 -2
- package/CHANGELOG.md +52 -1
- package/README.md +2 -2
- package/livepilot/.Codex-plugin/plugin.json +2 -2
- package/livepilot/.claude-plugin/plugin.json +2 -2
- package/livepilot/agents/livepilot-producer/AGENT.md +15 -1
- package/livepilot/commands/arrange.md +19 -0
- package/livepilot/commands/evaluate.md +39 -0
- package/livepilot/commands/mix.md +9 -4
- package/livepilot/commands/perform.md +30 -0
- package/livepilot/commands/sounddesign.md +9 -4
- package/livepilot/skills/livepilot-arrangement/SKILL.md +137 -0
- package/livepilot/skills/livepilot-composition-engine/SKILL.md +107 -0
- package/livepilot/skills/livepilot-composition-engine/references/form-patterns.md +97 -0
- package/livepilot/skills/livepilot-composition-engine/references/transition-archetypes.md +102 -0
- package/livepilot/skills/livepilot-core/SKILL.md +69 -449
- package/livepilot/skills/livepilot-core/references/overview.md +2 -2
- package/livepilot/skills/livepilot-devices/SKILL.md +134 -0
- package/livepilot/skills/livepilot-evaluation/SKILL.md +152 -0
- package/livepilot/skills/livepilot-evaluation/references/capability-modes.md +118 -0
- package/livepilot/skills/livepilot-evaluation/references/evaluation-contracts.md +121 -0
- package/livepilot/skills/livepilot-evaluation/references/memory-promotion.md +110 -0
- package/livepilot/skills/livepilot-mix-engine/SKILL.md +123 -0
- package/livepilot/skills/livepilot-mix-engine/references/mix-critics.md +143 -0
- package/livepilot/skills/livepilot-mix-engine/references/mix-moves.md +105 -0
- package/livepilot/skills/livepilot-mixing/SKILL.md +155 -0
- package/livepilot/skills/livepilot-notes/SKILL.md +129 -0
- package/livepilot/skills/livepilot-performance-engine/SKILL.md +122 -0
- package/livepilot/skills/livepilot-performance-engine/references/performance-safety.md +98 -0
- package/livepilot/skills/livepilot-release/SKILL.md +10 -10
- package/livepilot/skills/livepilot-sound-design-engine/SKILL.md +123 -0
- package/livepilot/skills/livepilot-sound-design-engine/references/patch-model.md +119 -0
- package/livepilot/skills/livepilot-sound-design-engine/references/sound-design-critics.md +118 -0
- package/m4l_device/livepilot_bridge.js +1 -1
- package/mcp_server/__init__.py +1 -1
- package/mcp_server/connection.py +29 -22
- package/mcp_server/evaluation/tools.py +1 -1
- package/mcp_server/m4l_bridge.py +7 -4
- package/mcp_server/mix_engine/tools.py +1 -1
- package/mcp_server/performance_engine/tools.py +1 -1
- package/mcp_server/reference_engine/tools.py +1 -1
- package/mcp_server/sound_design/tools.py +1 -1
- package/mcp_server/tools/analyzer.py +4 -3
- package/mcp_server/tools/tracks.py +3 -3
- package/mcp_server/translation_engine/tools.py +1 -1
- package/package.json +2 -2
- package/remote_script/LivePilot/__init__.py +1 -1
- package/remote_script/LivePilot/arrangement.py +9 -2
- package/remote_script/LivePilot/browser.py +1 -0
- package/remote_script/LivePilot/clip_automation.py +6 -0
- package/remote_script/LivePilot/clips.py +2 -0
- package/remote_script/LivePilot/devices.py +1 -0
- 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
|
|
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
|
|
8
|
+
Agentic production system for Ableton Live 12. 236 tools across 31 domains, three layers:
|
|
9
9
|
|
|
10
|
-
- **Device Atlas** —
|
|
11
|
-
- **M4L Analyzer** — Real-time audio analysis on the master bus (8-band spectrum, RMS/peak, key detection).
|
|
12
|
-
- **Technique Memory** — Persistent storage for production decisions. Consult `memory_recall` before creative tasks to understand
|
|
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
|
|
19
|
-
2. **Verify after every write** — re-read state to confirm
|
|
20
|
-
3. **Use `undo` liberally** —
|
|
21
|
-
4. **One operation at a time** —
|
|
22
|
-
5. **Track indices are 0-based** —
|
|
23
|
-
6. **NEVER invent device/preset names** — always `search_browser` first,
|
|
24
|
-
7. **Color indices 0-69** — Ableton's fixed palette
|
|
25
|
-
8. **Volume
|
|
26
|
-
9. **Tempo range 20-999 BPM**
|
|
27
|
-
10. **Always name
|
|
28
|
-
11. **Respect tool speed tiers** — see below
|
|
29
|
-
12. **ALWAYS report tool errors
|
|
30
|
-
13. **Verify plugin health after loading** —
|
|
31
|
-
14. **Use `C hijaz` for Hijaz/Phrygian Dominant keys** —
|
|
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
|
-
|
|
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
|
-
|
|
36
|
+
### Fast (1-5s) — Use freely
|
|
37
|
+
`analyze_loudness` · `analyze_mix` · `analyze_sound_design`
|
|
54
38
|
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
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
|
-
|
|
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
|
-
|
|
65
|
+
## Domain Skills
|
|
431
66
|
|
|
432
|
-
|
|
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
|
-
|
|
444
|
-
|
|
445
|
-
|
|
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
|
-
|
|
76
|
+
## V2 Engine Skills
|
|
448
77
|
|
|
449
|
-
|
|
78
|
+
For agentic evaluation loops, load the appropriate engine skill:
|
|
450
79
|
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
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
|
|
472
|
-
|
|
473
|
-
| File |
|
|
474
|
-
|
|
475
|
-
| `references/overview.md` | All 236 tools
|
|
476
|
-
| `references/
|
|
477
|
-
| `references/
|
|
478
|
-
| `references/
|
|
479
|
-
| `references/
|
|
480
|
-
| `references/
|
|
481
|
-
| `references/
|
|
482
|
-
| `references/
|
|
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.
|
|
1
|
+
# LivePilot v1.9.18 — Architecture & Tool Reference
|
|
2
2
|
|
|
3
|
-
Agentic production system for Ableton Live 12. 236 tools across
|
|
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
|
|