livepilot 1.4.5 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +187 -144
- package/README.md +136 -61
- package/m4l_device/BUILD_GUIDE.md +161 -0
- package/m4l_device/LivePilot_Analyzer.amxd +0 -0
- package/m4l_device/LivePilot_Analyzer.maxpat +680 -0
- package/m4l_device/livepilot_bridge.js +942 -0
- package/mcp_server/__init__.py +1 -1
- package/mcp_server/connection.py +22 -16
- package/mcp_server/curves.py +741 -0
- package/mcp_server/m4l_bridge.py +285 -0
- package/mcp_server/server.py +29 -3
- package/mcp_server/tools/analyzer.py +508 -0
- package/mcp_server/tools/automation.py +431 -0
- package/mcp_server/tools/clips.py +16 -12
- package/mcp_server/tools/devices.py +2 -2
- package/mcp_server/tools/mixing.py +50 -14
- package/mcp_server/tools/tracks.py +2 -2
- package/package.json +2 -3
- package/plugin/agents/livepilot-producer/AGENT.md +32 -2
- package/plugin/plugin.json +2 -2
- package/plugin/skills/livepilot-core/SKILL.md +76 -11
- package/plugin/skills/livepilot-core/references/automation-atlas.md +272 -0
- package/plugin/skills/livepilot-core/references/overview.md +68 -5
- package/plugin/skills/livepilot-release/SKILL.md +101 -0
- package/remote_script/LivePilot/__init__.py +3 -2
- package/remote_script/LivePilot/clip_automation.py +220 -0
- package/remote_script/LivePilot/mixing.py +90 -1
- package/remote_script/LivePilot/server.py +3 -0
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: livepilot-core
|
|
3
|
-
description: Core discipline for controlling Ableton Live 12 through LivePilot's
|
|
3
|
+
description: Core discipline for controlling Ableton Live 12 through LivePilot's 135 MCP tools, device atlas (280+ devices), M4L analyzer (spectrum/RMS/key detection), automation intelligence (16 curve types, 15 recipes), and technique memory. Use whenever working with Ableton Live through MCP tools.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# LivePilot Core — Ableton Live 12 AI Copilot
|
|
7
7
|
|
|
8
|
-
LivePilot
|
|
8
|
+
LivePilot is an agentic production system for Ableton Live 12. It combines 135 MCP tools with three layers of intelligence:
|
|
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 135 deterministic tools across 12 domains: transport, tracks, clips, MIDI notes, devices, scenes, mixing, browser, arrangement, technique memory, real-time DSP analysis, and automation.
|
|
9
15
|
|
|
10
16
|
## Golden Rules
|
|
11
17
|
|
|
@@ -58,7 +64,7 @@ LivePilot gives you 104 MCP tools to control Ableton Live 12 in real-time: trans
|
|
|
58
64
|
- MIDI track with no instrument loaded
|
|
59
65
|
- Notes programmed but clip not fired
|
|
60
66
|
|
|
61
|
-
## Tool Domains (
|
|
67
|
+
## Tool Domains (135 total)
|
|
62
68
|
|
|
63
69
|
### Transport (12)
|
|
64
70
|
`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`
|
|
@@ -78,8 +84,8 @@ LivePilot gives you 104 MCP tools to control Ableton Live 12 in real-time: trans
|
|
|
78
84
|
### Scenes (8)
|
|
79
85
|
`get_scenes_info` · `create_scene` · `delete_scene` · `duplicate_scene` · `fire_scene` · `set_scene_name` · `set_scene_color` · `set_scene_tempo`
|
|
80
86
|
|
|
81
|
-
### Mixing (
|
|
82
|
-
`set_track_volume` · `set_track_pan` · `set_track_send` · `get_return_tracks` · `get_master_track` · `set_master_volume` · `get_track_routing` · `set_track_routing`
|
|
87
|
+
### Mixing (11)
|
|
88
|
+
`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`
|
|
83
89
|
|
|
84
90
|
### Browser (4)
|
|
85
91
|
`get_browser_tree` · `get_browser_items` · `search_browser` · `load_browser_item`
|
|
@@ -90,6 +96,32 @@ LivePilot gives you 104 MCP tools to control Ableton Live 12 in real-time: trans
|
|
|
90
96
|
### Memory (8)
|
|
91
97
|
`memory_learn` · `memory_recall` · `memory_get` · `memory_replay` · `memory_list` · `memory_favorite` · `memory_update` · `memory_delete`
|
|
92
98
|
|
|
99
|
+
### Analyzer (20) — requires LivePilot Analyzer M4L device on master track
|
|
100
|
+
`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`
|
|
101
|
+
|
|
102
|
+
### Automation (8)
|
|
103
|
+
Clip automation CRUD + intelligent curve generation with 15 built-in recipes.
|
|
104
|
+
|
|
105
|
+
**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`
|
|
106
|
+
|
|
107
|
+
**Key discipline:**
|
|
108
|
+
|
|
109
|
+
**The Feedback Loop (MANDATORY for all automation work):**
|
|
110
|
+
1. PERCEIVE: `get_master_spectrum` + `get_track_meters` -> understand current state
|
|
111
|
+
2. DIAGNOSE: What needs to change? Use diagnostic filter technique if unsure
|
|
112
|
+
3. DECIDE: Which parameter, which curve, which recipe?
|
|
113
|
+
4. ACT: `apply_automation_shape` or `apply_automation_recipe`
|
|
114
|
+
5. VERIFY: `get_master_spectrum` again -> did it work?
|
|
115
|
+
6. ADJUST: If not right, `clear_clip_automation` -> try different curve/params
|
|
116
|
+
7. NEVER write automation without reading spectrum first and after
|
|
117
|
+
|
|
118
|
+
**Rules:**
|
|
119
|
+
- Use `analyze_for_automation` before writing — let spectral data guide decisions
|
|
120
|
+
- Use recipes for common patterns (filter_sweep_up, dub_throw, sidechain_pump)
|
|
121
|
+
- Use `apply_automation_shape` for custom curves with specific math
|
|
122
|
+
- Clear existing automation before rewriting: `clear_clip_automation` first
|
|
123
|
+
- Load `references/automation-atlas.md` for curve theory, genre recipes, diagnostic technique, and cross-track spectral mapping
|
|
124
|
+
|
|
93
125
|
## Workflow: Building a Beat
|
|
94
126
|
|
|
95
127
|
1. `get_session_info` — check current state
|
|
@@ -120,11 +152,43 @@ LivePilot gives you 104 MCP tools to control Ableton Live 12 in real-time: trans
|
|
|
120
152
|
## Workflow: Mixing
|
|
121
153
|
|
|
122
154
|
1. `get_session_info` — see all tracks and current levels
|
|
123
|
-
2. `
|
|
124
|
-
3. `
|
|
125
|
-
4. `
|
|
126
|
-
5. `
|
|
127
|
-
6. `
|
|
155
|
+
2. `get_mix_snapshot` — one-call overview of all levels, panning, routing, mute/solo
|
|
156
|
+
3. `set_track_volume` / `set_track_pan` — set levels and stereo position
|
|
157
|
+
4. `set_track_send` — route to return tracks for shared effects
|
|
158
|
+
5. `get_return_tracks` — check return track setup
|
|
159
|
+
6. `set_master_volume` — final output level
|
|
160
|
+
7. `set_track_routing` — configure input/output routing
|
|
161
|
+
8. `get_track_meters` / `get_master_meters` — check real-time output levels
|
|
162
|
+
|
|
163
|
+
### With LivePilot Analyzer (M4L device on master):
|
|
164
|
+
9. `get_master_spectrum` — check frequency balance across 8 bands (sub → air)
|
|
165
|
+
10. `get_master_rms` — true RMS and peak levels
|
|
166
|
+
11. `get_detected_key` — detect musical key before writing harmonies/bass
|
|
167
|
+
12. `get_hidden_parameters` — see ALL device params including hidden ones
|
|
168
|
+
13. `get_automation_state` — check which params have automation before overwriting
|
|
169
|
+
14. `walk_device_tree` — inspect nested racks and drum pads
|
|
170
|
+
15. `get_display_values` — human-readable parameter values ("440 Hz", "-6 dB")
|
|
171
|
+
|
|
172
|
+
## Workflow: Sample Chopping
|
|
173
|
+
|
|
174
|
+
1. Resample your beat to an audio track (set input to Resampling, arm, record)
|
|
175
|
+
2. `get_clip_file_path` — get the audio file path of the recorded clip
|
|
176
|
+
3. Load Simpler on a new MIDI track (with any sample pre-loaded)
|
|
177
|
+
4. `replace_simpler_sample` — load the resampled audio into Simpler
|
|
178
|
+
5. `set_simpler_playback_mode` — set to Slice mode
|
|
179
|
+
6. `get_simpler_slices` — see all auto-detected slice points
|
|
180
|
+
7. Program MIDI patterns targeting slice indices
|
|
181
|
+
8. Use `reverse_simpler` / `crop_simpler` / `warp_simpler` for transformations
|
|
182
|
+
9. `get_master_spectrum` — verify the result through the analyzer
|
|
183
|
+
|
|
184
|
+
## Workflow: Time Manipulation
|
|
185
|
+
|
|
186
|
+
1. `get_warp_markers` — see current timing map of an audio clip
|
|
187
|
+
2. `add_warp_marker` — pin key beats (downbeats, snare hits)
|
|
188
|
+
3. `move_warp_marker` — stretch/compress specific segments for tempo effects
|
|
189
|
+
4. `scrub_clip` / `stop_scrub` — preview specific positions
|
|
190
|
+
5. `get_master_spectrum` — verify the result sounds right
|
|
191
|
+
6. `remove_warp_marker` — clean up if needed
|
|
128
192
|
|
|
129
193
|
## Live 12 Note API
|
|
130
194
|
|
|
@@ -199,10 +263,11 @@ Deep production knowledge lives in `references/`. Consult these when making crea
|
|
|
199
263
|
|
|
200
264
|
| File | What's inside | When to consult |
|
|
201
265
|
|------|--------------|-----------------|
|
|
202
|
-
| `references/overview.md` | All
|
|
266
|
+
| `references/overview.md` | All 135 tools mapped with params, units, ranges | Quick lookup for any tool |
|
|
203
267
|
| `references/midi-recipes.md` | Drum patterns by genre, chord voicings, scales, hi-hat techniques, humanization, polymetrics | Programming MIDI notes, building beats |
|
|
204
268
|
| `references/sound-design.md` | Stock instruments/effects, parameter recipes for bass/pad/lead/pluck, device chain patterns | Loading and configuring devices |
|
|
205
269
|
| `references/mixing-patterns.md` | Gain staging, parallel compression, sidechain, EQ by instrument, bus processing, stereo width | Setting volumes, panning, adding effects |
|
|
206
270
|
| `references/ableton-workflow-patterns.md` | Session/Arrangement workflow, song structures by genre, follow actions, clip launch modes, export | Organizing sessions, structuring songs |
|
|
207
271
|
| `references/m4l-devices.md` | Browser organization, MIDI effects, rack systems, device loading patterns | Finding and loading devices, using racks |
|
|
208
272
|
| `references/memory-guide.md` | Qualities template, good/bad examples for each technique type | Saving techniques, writing qualities |
|
|
273
|
+
| `references/automation-atlas.md` | Curve theory, perception-action loop, genre recipes, diagnostic filter technique, spectral mapping | Writing automation, choosing curves, mixing with spectral feedback |
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
# Automation Atlas — LivePilot v1.6
|
|
2
|
+
|
|
3
|
+
Complete knowledge corpus for musically intelligent automation. Load this reference when working with automation tools.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Curve Theory
|
|
8
|
+
|
|
9
|
+
### Why exponential for filters
|
|
10
|
+
Filter frequency perception is logarithmic (octaves). 100Hz → 200Hz is the same perceptual distance as 1kHz → 2kHz. An exponential curve in the normalized 0–1 range maps to perceptually even movement across the frequency spectrum. Linear automation on a filter sounds like it's rushing through the highs and crawling through the lows. Use `exponential` with `factor` 2.0–3.0 for filter cutoff.
|
|
11
|
+
|
|
12
|
+
### Why logarithmic for volume
|
|
13
|
+
Human loudness perception follows a logarithmic curve (Weber-Fechner law). -6dB = half perceived loudness, not half amplitude. A logarithmic fade-in sounds smooth; a linear fade-in sounds like nothing happens then suddenly gets loud. Use `logarithmic` with `factor` 2.5–3.5 for volume fades.
|
|
14
|
+
|
|
15
|
+
### Why S-curve for crossfades
|
|
16
|
+
Natural acceleration/deceleration. Avoids the "hole in the middle" of linear crossfades where combined energy dips. The smoothstep function (3t² - 2t³) ensures the rate of change is zero at both endpoints, so the transition feels organic. Use `s_curve` for any A→B crossfade.
|
|
17
|
+
|
|
18
|
+
### Why spike for throws
|
|
19
|
+
Dub production technique — instant send level spike creates a single reflection that decays naturally through the reverb/delay tail. Any other shape creates unnatural sustained reflections. The exponential decay (peak × e^(-decay×t)) models how real acoustic energy dissipates.
|
|
20
|
+
|
|
21
|
+
### Pan is linear
|
|
22
|
+
Stereo position perception is roughly linear. A pan pot moving at constant speed sounds even. No need for perceptual correction on pan automation.
|
|
23
|
+
|
|
24
|
+
### Resonance is dangerous
|
|
25
|
+
Filter resonance is non-linear — subtle changes at low values, dramatic and potentially destructive at high values. Self-oscillation begins above ~0.85 on most filters. Never automate resonance above 0.85 without explicit user intent. Use `breathing` recipe with reduced amplitude (0.05–0.10) for subtle resonance movement.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 2. The Perception-Action Loop (5 levels)
|
|
30
|
+
|
|
31
|
+
**MANDATORY for all automation work.** Never write automation blind — always perceive first.
|
|
32
|
+
|
|
33
|
+
### Level 1: Reactive
|
|
34
|
+
Single read, single action. The simplest loop.
|
|
35
|
+
1. `get_master_spectrum` → read frequency content
|
|
36
|
+
2. Identify one issue (e.g., "mud below 200Hz")
|
|
37
|
+
3. Apply one automation (e.g., HP filter sweep)
|
|
38
|
+
4. `get_master_spectrum` → verify improvement
|
|
39
|
+
|
|
40
|
+
### Level 2: Diagnostic
|
|
41
|
+
Multi-step investigation using EQ as a microscope. See Section 3 (Diagnostic Filter Technique).
|
|
42
|
+
|
|
43
|
+
### Level 3: Verification
|
|
44
|
+
Act → measure → adjust cycle. For every automation written:
|
|
45
|
+
1. Read spectrum BEFORE
|
|
46
|
+
2. Write automation
|
|
47
|
+
3. Read spectrum AFTER
|
|
48
|
+
4. Compare: did the problem frequency range improve?
|
|
49
|
+
5. If not, `clear_clip_automation` → adjust parameters → try again
|
|
50
|
+
6. Log the successful parameters in memory for reuse
|
|
51
|
+
|
|
52
|
+
### Level 4: Cross-Track
|
|
53
|
+
Solo each track, build spectral map, write complementary automation.
|
|
54
|
+
1. For each track: solo → `get_master_spectrum` → record fingerprint
|
|
55
|
+
2. Find frequency overlaps between tracks (masking)
|
|
56
|
+
3. Write complementary automation: as kick's filter opens, bass's filter narrows
|
|
57
|
+
4. Verify no new masking was introduced
|
|
58
|
+
5. Store the cross-track map in memory
|
|
59
|
+
|
|
60
|
+
### Level 5: Full Pipeline
|
|
61
|
+
Per-track analysis across entire session.
|
|
62
|
+
1. Run Level 4 for all tracks
|
|
63
|
+
2. Build session-wide spectral map
|
|
64
|
+
3. Write automation considering all interactions
|
|
65
|
+
4. Verify global mix spectrum
|
|
66
|
+
5. Iterate until balanced
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## 3. Diagnostic Filter Technique
|
|
71
|
+
|
|
72
|
+
Using EQ Eight as a measurement instrument. Step-by-step:
|
|
73
|
+
|
|
74
|
+
1. **Load EQ Eight** on target track via `find_and_load_device`
|
|
75
|
+
2. **Configure band 1** as narrow bandpass: Q=8, gain=0dB, frequency=100Hz
|
|
76
|
+
- Use `set_device_parameter` to set Filter Type to Band Pass, Q to 8.0
|
|
77
|
+
3. **Solo the track** via `set_track_solo`
|
|
78
|
+
4. **Read spectrum** at 100Hz: `get_master_spectrum` → note the `sub` value
|
|
79
|
+
5. **Sweep frequency** through key ranges:
|
|
80
|
+
- 100Hz, 200Hz, 300Hz, 500Hz, 1kHz, 2kHz, 5kHz, 10kHz
|
|
81
|
+
- At each: `set_device_parameter` (frequency) → `get_master_spectrum` → record
|
|
82
|
+
6. **Build frequency map**: `{100Hz: 0.18, 200Hz: 0.25, 300Hz: 0.09, ...}`
|
|
83
|
+
7. **Identify problems**: resonance buildup, mud, harshness, dead zones
|
|
84
|
+
8. **Remove diagnostic EQ** — always clean up: `delete_device`
|
|
85
|
+
9. **Un-solo the track**: `set_track_solo` (toggle off)
|
|
86
|
+
10. **Write targeted automation** addressing what was found
|
|
87
|
+
|
|
88
|
+
### What to look for:
|
|
89
|
+
- **Mud** (200-400Hz): values > 0.20 suggest buildup → HP filter automation
|
|
90
|
+
- **Resonance** (narrow peak in 300-800Hz): ringing → notch filter or gentle sweep
|
|
91
|
+
- **Harshness** (2-5kHz): values > 0.25 suggest brightness → LP filter or shelf automation
|
|
92
|
+
- **Dead zone** (any range with 0.00): frequency hole → boost or different device
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 4. Genre Recipes
|
|
97
|
+
|
|
98
|
+
### Techno
|
|
99
|
+
- `filter_sweep_up` on LP cutoff, 32 bars, factor 2.0 — the classic build
|
|
100
|
+
- `sidechain_pump` on pad volume via Utility gain, 1 beat loop
|
|
101
|
+
- `stutter` on vocals before drop, 0.5 beats, frequency 16
|
|
102
|
+
- `stereo_narrow` on master bus, 8 bars before drop → instant widen at drop
|
|
103
|
+
- Long transitions: combine HP filter + reverb send + stereo width, all exponential
|
|
104
|
+
|
|
105
|
+
### Dub
|
|
106
|
+
- `dub_throw` on Send A at each snare position, 1 beat duration
|
|
107
|
+
- `tape_stop` on clip transpose for transitions, 0.5 beats
|
|
108
|
+
- `washout` on delay feedback, 4 bars → cut at phrase boundary
|
|
109
|
+
- `breathing` on filter cutoff, 4 bars — everything breathes in dub
|
|
110
|
+
- Tip: never automate delay feedback above 0.85 (infinite feedback risk)
|
|
111
|
+
|
|
112
|
+
### Ambient
|
|
113
|
+
- `breathing` on filter cutoff, 4 bars, amplitude 0.10 — subtle is key
|
|
114
|
+
- `perlin` noise on reverb mix, 8 bars, amplitude 0.15, seed varies
|
|
115
|
+
- `brownian` drift on wavetable position, 16 bars, volatility 0.05
|
|
116
|
+
- Polyrhythmic automation: 3-beat filter + 5-beat reverb + 7-beat pan = 105-beat cycle
|
|
117
|
+
- Less is more. Ambient automation should be felt, not heard.
|
|
118
|
+
|
|
119
|
+
### Hip Hop
|
|
120
|
+
- `tape_stop` on clip transpose, 0.5 beats — classic vinyl stop
|
|
121
|
+
- `vinyl_crackle` on Redux bit depth, 16 bars — lo-fi character
|
|
122
|
+
- `sidechain_pump` on bass under kick, 0.5 beat — tight pocket
|
|
123
|
+
- `fade_out` on filter for transitions between sections
|
|
124
|
+
- Keep automation sparse — hip hop is about groove, not modulation
|
|
125
|
+
|
|
126
|
+
### IDM / Experimental
|
|
127
|
+
- `stutter` on volume, 0.5 beats, frequency 16 — micro-editing
|
|
128
|
+
- `euclidean` on filter cutoff: 5 hits across 8 steps — rhythmic intelligence
|
|
129
|
+
- `stochastic` on grain parameters, narrowing 0.7 — controlled chaos
|
|
130
|
+
- `spring` on filter cutoff for overshoot character
|
|
131
|
+
- Layer multiple polyrhythmic automations for generative evolution
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 5. Sound Design Automation
|
|
136
|
+
|
|
137
|
+
### Wavetable position
|
|
138
|
+
Exponential sweep for timbral morphing over 8–16 bars. The timbral change is often perceptually logarithmic, so exponential automation creates even-sounding evolution.
|
|
139
|
+
|
|
140
|
+
### Grain size
|
|
141
|
+
Sine modulation at 0.5–2Hz for alive textures. The slow oscillation prevents the grainular artifacts from sounding static. Use `breathing` recipe adapted: center 0.5, amplitude 0.15.
|
|
142
|
+
|
|
143
|
+
### Reverb decay
|
|
144
|
+
Link inversely to volume: quieter passages get longer tails for natural space. As volume drops, reverb decay increases. Automate both with complementary curves.
|
|
145
|
+
|
|
146
|
+
### Delay feedback
|
|
147
|
+
Spike for throws (dub technique). NEVER exceed 0.9 on feedback — infinite feedback creates dangerous signal buildup. Use `dub_throw` recipe with peak capped at 0.85.
|
|
148
|
+
|
|
149
|
+
### Filter resonance
|
|
150
|
+
Subtle sine modulation creates vocal/crying quality. Watch for self-oscillation above 0.85. Use amplitude 0.05–0.10 for subtle character, 0.15–0.25 for expressive.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## 6. Arrangement Techniques
|
|
155
|
+
|
|
156
|
+
### The Build (16–32 bars before drop)
|
|
157
|
+
Combine multiple automations, all exponential:
|
|
158
|
+
1. HP filter: 0→0.6 (remove low end gradually)
|
|
159
|
+
2. Volume: 0.7→1.0 (subtle lift)
|
|
160
|
+
3. Reverb send: 0→0.5 (add wash)
|
|
161
|
+
4. Stereo width: 1.0→0.0 (collapse to mono)
|
|
162
|
+
5. At drop: instant step back to defaults
|
|
163
|
+
|
|
164
|
+
### The Drop (instant)
|
|
165
|
+
Step automation restoring all build parameters to default values. No curves — immediate snap. Use `steps` curve with a single value at time 0.
|
|
166
|
+
|
|
167
|
+
### The Strip (8–16 bars)
|
|
168
|
+
Gradual HP filter rise removing elements one by one:
|
|
169
|
+
1. First: HP filter on bass track (removes bass)
|
|
170
|
+
2. Then: HP filter on drums (removes kick)
|
|
171
|
+
3. Then: HP filter on pads (removes mids)
|
|
172
|
+
4. Only high frequencies remain → transition point
|
|
173
|
+
|
|
174
|
+
### The Crossfade (2–8 bars)
|
|
175
|
+
S-curve volume automation between two sections:
|
|
176
|
+
- Outgoing track: s_curve from 1.0 to 0.0
|
|
177
|
+
- Incoming track: s_curve from 0.0 to 1.0
|
|
178
|
+
- S-curve prevents the energy dip of linear crossfades
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## 7. Micro-Editing and Humanization
|
|
183
|
+
|
|
184
|
+
### Velocity vs volume
|
|
185
|
+
Velocity is timbre — it changes how the sound is generated (harder hits, brighter tone). Volume automation is loudness — it changes amplitude after generation. They are different tools.
|
|
186
|
+
|
|
187
|
+
### Per-note filter accent
|
|
188
|
+
Automate filter cutoff to spike on accented notes. Use `spike` with duration matching the note length. Creates timbral accents without touching velocity.
|
|
189
|
+
|
|
190
|
+
### Spatial punctuation
|
|
191
|
+
Send spikes on specific hits create spatial depth variation. Snare → reverb throw on beat 2 and 4. Hi-hat → delay throw on off-beats. Use `dub_throw` recipe.
|
|
192
|
+
|
|
193
|
+
### Humanization via Perlin noise
|
|
194
|
+
Tiny pitch/filter variations make programmed music feel human:
|
|
195
|
+
- `perlin` on detune: amplitude 0.02, frequency 0.5
|
|
196
|
+
- `perlin` on filter cutoff: amplitude 0.05, frequency 0.3
|
|
197
|
+
- Different seeds per track — each voice drifts independently
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## 8. Polyrhythmic Automation
|
|
202
|
+
|
|
203
|
+
### The concept
|
|
204
|
+
Unlinked automation envelopes with different loop lengths create long, non-repeating cycles:
|
|
205
|
+
- 4-beat clip loop + 3-beat filter envelope + 5-beat reverb envelope
|
|
206
|
+
- Total cycle: LCM(4, 3, 5) = 60 beats before exact repetition
|
|
207
|
+
- 60 beats ≈ 15 bars at 4/4 — feels evolving, never static
|
|
208
|
+
|
|
209
|
+
### Prime number rule
|
|
210
|
+
Use prime-number beat lengths for maximum non-repetition:
|
|
211
|
+
- 3, 5, 7, 11, 13 beats
|
|
212
|
+
- LCM of primes = their product (all coprime)
|
|
213
|
+
- 3 × 5 × 7 = 105 beats ≈ 26 bars before exact repeat
|
|
214
|
+
|
|
215
|
+
### Implementation
|
|
216
|
+
1. Create clip with N-beat loop (your base rhythm)
|
|
217
|
+
2. `apply_automation_shape` with `duration` = M beats (M ≠ N, preferably prime)
|
|
218
|
+
3. The automation loops at M beats, the clip loops at N beats
|
|
219
|
+
4. Add another automation with duration = P beats (another prime)
|
|
220
|
+
5. Total cycle = LCM(N, M, P) beats
|
|
221
|
+
|
|
222
|
+
### Use cases
|
|
223
|
+
Essential for ambient, installation, generative work. Creates the sense of "always evolving" that distinguishes produced music from loops.
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## 9. Cross-Track Spectral Mapping
|
|
228
|
+
|
|
229
|
+
### Process
|
|
230
|
+
1. **Solo each track** one at a time
|
|
231
|
+
2. **Read spectrum**: `get_master_spectrum` → record {sub, low, mid, high, presence, air}
|
|
232
|
+
3. **Build spectral fingerprint** for each track:
|
|
233
|
+
```
|
|
234
|
+
Kick: sub=0.45, low=0.30, mid=0.05, high=0.02
|
|
235
|
+
Bass: sub=0.35, low=0.40, mid=0.15, high=0.03
|
|
236
|
+
Pad: sub=0.05, low=0.15, mid=0.35, high=0.25
|
|
237
|
+
```
|
|
238
|
+
4. **Find overlaps**: kick and bass both strong in sub/low = masking
|
|
239
|
+
5. **Write complementary automation**: as kick opens, bass narrows
|
|
240
|
+
6. **Verify**: un-solo all, check master spectrum for improvement
|
|
241
|
+
|
|
242
|
+
### Complementary automation patterns
|
|
243
|
+
- **Kick + Bass**: sidechain pump on bass volume, or complementary filter sweeps
|
|
244
|
+
- **Vocals + Pads**: automate pad filter to duck in vocal frequency range (1–4kHz)
|
|
245
|
+
- **Multiple synths**: different breathing rates (frequency 0.3, 0.5, 0.7) to weave in/out
|
|
246
|
+
|
|
247
|
+
### Store findings
|
|
248
|
+
Use `memory_learn` to save spectral maps and successful automation combinations. Build a knowledge base about the session's sounds for consistent decisions.
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## 10. Golden Rules
|
|
253
|
+
|
|
254
|
+
1. **Always use Utility gain for volume automation** — preserve the mixer fader for mixing. Automate the Utility device's Gain parameter, not track volume.
|
|
255
|
+
|
|
256
|
+
2. **Exponential for filters, logarithmic for volume** — never linear for either. This is perceptual science, not preference.
|
|
257
|
+
|
|
258
|
+
3. **Subtle automation (5–15% range) for organic feel; dramatic (full range) for transitions.** Most automation should be felt, not heard. Save the big sweeps for builds and drops.
|
|
259
|
+
|
|
260
|
+
4. **ALWAYS verify with `get_master_spectrum` after writing automation.** The feedback loop is mandatory, not optional.
|
|
261
|
+
|
|
262
|
+
5. **Use `clear_clip_automation` before rewriting.** Don't stack conflicting curves — clear first, then write fresh.
|
|
263
|
+
|
|
264
|
+
6. **Use the diagnostic filter technique before guessing at problem frequencies.** Measurement beats intuition.
|
|
265
|
+
|
|
266
|
+
7. **Store spectral findings in memory.** Build a knowledge base about this session's sounds. Cross-session awareness makes every future decision better.
|
|
267
|
+
|
|
268
|
+
8. **Delay feedback NEVER above 0.9.** Infinite feedback creates dangerous signal buildup. Cap at 0.85 for safety, even in experimental contexts.
|
|
269
|
+
|
|
270
|
+
9. **density 16–32 for most curves.** 16 points per bar gives smooth results for gentle curves. 32 for fast modulations or detailed shapes. Above 64 is rarely worth the overhead.
|
|
271
|
+
|
|
272
|
+
10. **When in doubt, use a recipe.** The 15 built-in recipes encode production wisdom. Start with the recipe, then customize if needed.
|
|
@@ -1,20 +1,38 @@
|
|
|
1
|
-
# LivePilot Architecture & Tool Reference
|
|
1
|
+
# LivePilot v1.6.0 — Architecture & Tool Reference
|
|
2
2
|
|
|
3
|
-
LivePilot is an
|
|
3
|
+
LivePilot is an agentic production system for Ableton Live 12. It combines 135 MCP tools with a device knowledge corpus, real-time audio analysis, automation intelligence, and persistent technique memory.
|
|
4
4
|
|
|
5
5
|
## Architecture
|
|
6
6
|
|
|
7
7
|
```
|
|
8
|
-
|
|
8
|
+
AI Client ──MCP──► FastMCP Server ──TCP/9878──► Remote Script (inside Ableton)
|
|
9
9
|
(validates) (executes on main thread)
|
|
10
|
+
│
|
|
11
|
+
├── Device Atlas (280+ devices, 139 kits, 350+ IRs)
|
|
12
|
+
├── M4L Analyzer ──UDP/OSC──► LivePilot_Analyzer.amxd
|
|
13
|
+
└── Technique Memory (~/.livepilot/memory/)
|
|
10
14
|
```
|
|
11
15
|
|
|
12
16
|
- **MCP Server** validates inputs (ranges, types) before sending
|
|
13
17
|
- **Remote Script** runs inside Ableton's Python environment, executes on the main thread via `schedule_message`
|
|
18
|
+
- **Device Atlas** provides structured knowledge of Ableton's device library — real names, real URIs, sonic descriptions
|
|
19
|
+
- **M4L Analyzer** reads the master bus in real-time: 8-band spectrum, RMS/peak, pitch tracking, Krumhansl-Schmuckler key detection
|
|
20
|
+
- **Technique Memory** persists production decisions across sessions as typed, searchable, replayable data structures
|
|
14
21
|
- **Protocol**: JSON over TCP, newline-delimited. Every command gets a response.
|
|
15
22
|
- **Thread safety**: All Live Object Model (LOM) access happens on Ableton's main thread
|
|
16
23
|
|
|
17
|
-
## The
|
|
24
|
+
## The Agentic Difference
|
|
25
|
+
|
|
26
|
+
A flat tool list lets the AI press buttons. LivePilot's three layers give it context:
|
|
27
|
+
|
|
28
|
+
1. **Before loading a device** — the agent consults the atlas to find a real preset, not a hallucinated name
|
|
29
|
+
2. **Before writing harmonic content** — the agent reads the detected key from the analyzer
|
|
30
|
+
3. **Before making creative decisions** — the agent checks technique memory for the user's style preferences
|
|
31
|
+
4. **After every mixing move** — the agent reads the spectrum to verify the result
|
|
32
|
+
|
|
33
|
+
This turns "set EQ band 3 to -4 dB" into "cut 400 Hz by 4 dB, then read the spectrum to confirm the mud is actually reduced."
|
|
34
|
+
|
|
35
|
+
## The 135 Tools — What Each One Does
|
|
18
36
|
|
|
19
37
|
### Transport (12) — Playback, tempo, global state, diagnostics
|
|
20
38
|
|
|
@@ -122,7 +140,7 @@ Claude Code ──MCP──► FastMCP Server ──TCP/9878──► Remote
|
|
|
122
140
|
| `set_scene_color` | Sets scene color | `scene_index`, `color_index` (0-69) |
|
|
123
141
|
| `set_scene_tempo` | Sets tempo that triggers when scene fires | `scene_index`, `tempo` (20-999 BPM) |
|
|
124
142
|
|
|
125
|
-
### Mixing (
|
|
143
|
+
### Mixing (11) — Levels, panning, routing, metering
|
|
126
144
|
|
|
127
145
|
| Tool | What it does | Key params |
|
|
128
146
|
|------|-------------|------------|
|
|
@@ -134,6 +152,9 @@ Claude Code ──MCP──► FastMCP Server ──TCP/9878──► Remote
|
|
|
134
152
|
| `set_master_volume` | Sets master output level | `volume` (0.0-1.0) |
|
|
135
153
|
| `get_track_routing` | Returns input/output routing config | `track_index` |
|
|
136
154
|
| `set_track_routing` | Configures input/output routing | `track_index`, routing params |
|
|
155
|
+
| `get_track_meters` | Returns real-time output levels for a track | `track_index` |
|
|
156
|
+
| `get_master_meters` | Returns real-time output levels for the master | — |
|
|
157
|
+
| `get_mix_snapshot` | Returns all levels, panning, routing, mute/solo state for entire session | — |
|
|
137
158
|
|
|
138
159
|
### Browser (4) — Finding and loading presets/devices
|
|
139
160
|
|
|
@@ -181,6 +202,48 @@ Claude Code ──MCP──► FastMCP Server ──TCP/9878──► Remote
|
|
|
181
202
|
| `memory_update` | Updates name, tags, or qualities | `technique_id`, `name`, `tags`, `qualities` |
|
|
182
203
|
| `memory_delete` | Removes technique (backs up first) | `technique_id` |
|
|
183
204
|
|
|
205
|
+
### Analyzer (20) — Real-time DSP analysis (requires LivePilot Analyzer M4L device on master track)
|
|
206
|
+
|
|
207
|
+
| Tool | What it does | Key params |
|
|
208
|
+
|------|-------------|------------|
|
|
209
|
+
| `get_master_spectrum` | 8-band spectral analysis of master output | — |
|
|
210
|
+
| `get_master_rms` | True RMS and peak amplitude levels | — |
|
|
211
|
+
| `get_detected_key` | Detects musical key (Krumhansl-Schmuckler) | — |
|
|
212
|
+
| `get_hidden_parameters` | All device parameters including hidden ones | `track_index`, `device_index` |
|
|
213
|
+
| `get_automation_state` | Parameters with active automation | `track_index`, `device_index` |
|
|
214
|
+
| `walk_device_tree` | Recursive device tree (racks, drum pads, 6 levels) | `track_index`, `device_index` |
|
|
215
|
+
| `get_clip_file_path` | Audio file path on disk | `track_index`, `clip_index` |
|
|
216
|
+
| `replace_simpler_sample` | Replace sample in Simpler | `track_index`, `device_index`, `file_path` |
|
|
217
|
+
| `load_sample_to_simpler` | Bootstrap Simpler and load sample (full workflow) | `track_index`, `file_path` |
|
|
218
|
+
| `get_simpler_slices` | Slice points from Simpler | `track_index`, `device_index` |
|
|
219
|
+
| `crop_simpler` | Crop sample to active region | `track_index`, `device_index` |
|
|
220
|
+
| `reverse_simpler` | Reverse sample | `track_index`, `device_index` |
|
|
221
|
+
| `warp_simpler` | Warp sample to N beats | `track_index`, `device_index`, `beats` |
|
|
222
|
+
| `get_warp_markers` | All warp markers (beat_time + sample_time) | `track_index`, `clip_index` |
|
|
223
|
+
| `add_warp_marker` | Add warp marker | `track_index`, `clip_index`, `beat_time` |
|
|
224
|
+
| `move_warp_marker` | Move warp marker | `track_index`, `clip_index`, `old_beat`, `new_beat` |
|
|
225
|
+
| `remove_warp_marker` | Remove warp marker | `track_index`, `clip_index`, `beat_time` |
|
|
226
|
+
| `scrub_clip` | Preview audio at position | `track_index`, `clip_index`, `beat_time` |
|
|
227
|
+
| `stop_scrub` | Stop preview | `track_index`, `clip_index` |
|
|
228
|
+
| `get_display_values` | Human-readable parameter values ("440 Hz", "-6 dB") | `track_index`, `device_index` |
|
|
229
|
+
|
|
230
|
+
### Automation (8) — Clip automation CRUD + intelligent curve generation
|
|
231
|
+
|
|
232
|
+
| Tool | What it does | Key params |
|
|
233
|
+
|------|-------------|------------|
|
|
234
|
+
| `get_clip_automation` | Lists all automation envelopes on a session clip | `track_index`, `clip_index` |
|
|
235
|
+
| `set_clip_automation` | Writes automation points to a clip envelope | `track_index`, `clip_index`, `parameter_type`, `points` |
|
|
236
|
+
| `clear_clip_automation` | Clears automation envelopes (specific or all) | `track_index`, `clip_index`, `parameter_type` (optional) |
|
|
237
|
+
| `apply_automation_shape` | Generates and applies a curve to a clip in one call | `track_index`, `clip_index`, `parameter_type`, `curve_type`, `duration`, `density` |
|
|
238
|
+
| `apply_automation_recipe` | Applies a named recipe (filter_sweep_up, dub_throw, etc.) | `track_index`, `clip_index`, `parameter_type`, `recipe`, `duration` |
|
|
239
|
+
| `get_automation_recipes` | Lists all 15 recipes with descriptions and targets | — |
|
|
240
|
+
| `generate_automation_curve` | Previews curve points without writing them | `curve_type`, `duration`, `density`, curve-specific params |
|
|
241
|
+
| `analyze_for_automation` | Spectral analysis + device-aware automation suggestions | `track_index` |
|
|
242
|
+
|
|
243
|
+
**16 curve types:** linear, exponential, logarithmic, s_curve, sine, sawtooth, spike, square, steps, perlin, brownian, spring, bezier, easing, euclidean, stochastic
|
|
244
|
+
|
|
245
|
+
**15 recipes:** filter_sweep_up, filter_sweep_down, dub_throw, tape_stop, build_rise, sidechain_pump, fade_in, fade_out, tremolo, auto_pan, stutter, breathing, washout, vinyl_crackle, stereo_narrow
|
|
246
|
+
|
|
184
247
|
## Units & Ranges Quick Reference
|
|
185
248
|
|
|
186
249
|
| Concept | Unit/Range | Notes |
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: livepilot-release
|
|
3
|
+
description: Release checklist for LivePilot — run before ANY push, publish, or "update everything" request. Covers every file, channel, and artifact that references version numbers, tool counts, or project state.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# LivePilot Release Checklist
|
|
7
|
+
|
|
8
|
+
Run this checklist EVERY time the user says "update everything", "push", "release", "make sure everything is current", or similar.
|
|
9
|
+
|
|
10
|
+
## 1. Version Strings (must ALL match)
|
|
11
|
+
|
|
12
|
+
- [ ] `package.json` → `"version"`
|
|
13
|
+
- [ ] `package-lock.json` → `"version"` (run `npm install --package-lock-only` if stale)
|
|
14
|
+
- [ ] `server.json` → `"version"` (TWO locations: top-level and package)
|
|
15
|
+
- [ ] `plugin/plugin.json` → `"version"`
|
|
16
|
+
- [ ] `mcp_server/__init__.py` → `__version__`
|
|
17
|
+
- [ ] `remote_script/LivePilot/__init__.py` → version in log message
|
|
18
|
+
- [ ] `m4l_device/livepilot_bridge.js` → version in ping response
|
|
19
|
+
- [ ] `CHANGELOG.md` → latest version header
|
|
20
|
+
- [ ] `docs/social-banner.html` → version display
|
|
21
|
+
|
|
22
|
+
**How to check:** `grep -rn "1\.[0-9]\.[0-9]" package.json server.json plugin/plugin.json mcp_server/__init__.py remote_script/LivePilot/__init__.py m4l_device/livepilot_bridge.js CHANGELOG.md docs/social-banner.html`
|
|
23
|
+
|
|
24
|
+
## 2. Tool Count (must ALL match)
|
|
25
|
+
|
|
26
|
+
- [ ] `README.md` — every occurrence
|
|
27
|
+
- [ ] `package.json` → `"description"`
|
|
28
|
+
- [ ] `server.json` → `"description"`
|
|
29
|
+
- [ ] `plugin/plugin.json` → `"description"`
|
|
30
|
+
- [ ] `CLAUDE.md`
|
|
31
|
+
- [ ] `plugin/skills/livepilot-core/SKILL.md` — header and domain breakdown
|
|
32
|
+
- [ ] `plugin/skills/livepilot-core/references/overview.md`
|
|
33
|
+
- [ ] `docs/manual/index.md`
|
|
34
|
+
- [ ] `docs/manual/tool-reference.md`
|
|
35
|
+
- [ ] `docs/TOOL_REFERENCE.md`
|
|
36
|
+
- [ ] `docs/M4L_BRIDGE.md`
|
|
37
|
+
- [ ] `docs/social-banner.html`
|
|
38
|
+
- [ ] `mcp_server/tools/analyzer.py` → module docstring
|
|
39
|
+
- [ ] `tests/test_tools_contract.py` → expected count
|
|
40
|
+
|
|
41
|
+
**How to check:** `grep -rn "127\|104\|113" --include="*.md" --include="*.json" --include="*.py" --include="*.html" --include="*.js" . | grep -v node_modules | grep -v .git | grep -v __pycache__`
|
|
42
|
+
|
|
43
|
+
## 3. Domain Count
|
|
44
|
+
|
|
45
|
+
- [ ] All files above that mention "10 domains" should say "11 domains"
|
|
46
|
+
- [ ] Domain lists should include: transport, tracks, clips, notes, devices, scenes, mixing, browser, arrangement, memory, analyzer
|
|
47
|
+
|
|
48
|
+
## 4. npm Registry
|
|
49
|
+
|
|
50
|
+
- [ ] `npm view livepilot version` matches local version
|
|
51
|
+
- [ ] If not: `npm publish`
|
|
52
|
+
- [ ] Verify badge will update: badge URL in README.md points to shields.io/npm/v/livepilot
|
|
53
|
+
|
|
54
|
+
## 5. GitHub
|
|
55
|
+
|
|
56
|
+
- [ ] Repo description matches current tool count and features
|
|
57
|
+
- [ ] Topics are current (should include: ai, mcp, ableton, livepilot, max-for-live, audio-analysis)
|
|
58
|
+
- [ ] Latest release matches current version (`gh release list`)
|
|
59
|
+
- [ ] Release notes are current
|
|
60
|
+
- [ ] Old stale releases cleaned up
|
|
61
|
+
- [ ] Git tags: only relevant versions exist (`git tag -l`)
|
|
62
|
+
- [ ] No co-author or unwanted metadata in commit messages
|
|
63
|
+
|
|
64
|
+
## 6. Plugin Cache
|
|
65
|
+
|
|
66
|
+
- [ ] `~/.claude/plugins/cache/dreamrec-LivePilot/livepilot/` has current version directory
|
|
67
|
+
- [ ] Old version directories removed
|
|
68
|
+
|
|
69
|
+
## 7. Social/Promotional Assets
|
|
70
|
+
|
|
71
|
+
- [ ] `docs/social-banner.html` — tool count, version, domain list
|
|
72
|
+
- [ ] `docs/social-banner.png` — regenerated from HTML (must match)
|
|
73
|
+
- [ ] GitHub repo social preview image (Settings > Social preview)
|
|
74
|
+
|
|
75
|
+
## 8. Documentation Content
|
|
76
|
+
|
|
77
|
+
- [ ] `README.md` — features match current capabilities
|
|
78
|
+
- [ ] `docs/manual/getting-started.md` — install instructions current, mentions M4L Analyzer
|
|
79
|
+
- [ ] `docs/manual/tool-reference.md` — all tools listed
|
|
80
|
+
- [ ] `docs/M4L_BRIDGE.md` — architecture accurate
|
|
81
|
+
- [ ] `docs/TOOL_REFERENCE.md` — all tools listed with correct params
|
|
82
|
+
|
|
83
|
+
## 9. Derived Artifacts
|
|
84
|
+
|
|
85
|
+
- [ ] `m4l_device/LivePilot_Analyzer.amxd` — frozen JS matches source? All commands present?
|
|
86
|
+
- [ ] Distributable zip on Desktop — rebuilt with latest?
|
|
87
|
+
- [ ] Private backup repo — synced and pushed?
|
|
88
|
+
- [ ] `LivePilot-v*.INSTALL.txt` — updated?
|
|
89
|
+
|
|
90
|
+
## 10. Code Consistency
|
|
91
|
+
|
|
92
|
+
- [ ] `@mcp.tool()` count matches documented tool count: `grep -r "@mcp.tool" mcp_server/tools/ | wc -l`
|
|
93
|
+
- [ ] No dead imports or unused code in recently changed files
|
|
94
|
+
- [ ] Remote script version matches MCP server version
|
|
95
|
+
|
|
96
|
+
## Quick Verify Command
|
|
97
|
+
|
|
98
|
+
Run this one-liner to catch most issues:
|
|
99
|
+
```bash
|
|
100
|
+
echo "=== Versions ===" && grep -h '"version"' package.json server.json plugin/plugin.json | head -5 && grep __version__ mcp_server/__init__.py && echo "=== Tool count ===" && grep -rc "@mcp.tool" mcp_server/tools/ | tail -1 && echo "=== npm ===" && npm view livepilot version 2>/dev/null && echo "=== GitHub release ===" && gh release list --limit 1 && echo "=== Tags ===" && git tag -l
|
|
101
|
+
```
|
|
@@ -16,7 +16,8 @@ from . import scenes # noqa: F401 — registers scene handlers
|
|
|
16
16
|
from . import mixing # noqa: F401 — registers mixing handlers
|
|
17
17
|
from . import browser # noqa: F401 — registers browser handlers
|
|
18
18
|
from . import arrangement # noqa: F401 — registers arrangement handlers
|
|
19
|
-
from . import diagnostics
|
|
19
|
+
from . import diagnostics # noqa: F401 — registers diagnostics handler
|
|
20
|
+
from . import clip_automation # noqa: F401 — registers clip automation handlers
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
def create_instance(c_instance):
|
|
@@ -31,7 +32,7 @@ class LivePilot(ControlSurface):
|
|
|
31
32
|
ControlSurface.__init__(self, c_instance)
|
|
32
33
|
self._server = LivePilotServer(self)
|
|
33
34
|
self._server.start()
|
|
34
|
-
self.log_message("LivePilot v1.
|
|
35
|
+
self.log_message("LivePilot v1.6.1 initialized")
|
|
35
36
|
self.show_message("LivePilot: Listening on port 9878")
|
|
36
37
|
|
|
37
38
|
def disconnect(self):
|