livepilot 1.4.5 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +151 -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/m4l_bridge.py +285 -0
- package/mcp_server/server.py +28 -3
- package/mcp_server/tools/analyzer.py +508 -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/plugin.json +2 -2
- package/plugin/skills/livepilot-core/SKILL.md +52 -11
- package/plugin/skills/livepilot-core/references/overview.md +51 -5
- package/remote_script/LivePilot/__init__.py +1 -1
- package/remote_script/LivePilot/mixing.py +90 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,146 +1,153 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
###
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
###
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
- `
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
85
|
-
|
|
86
|
-
###
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
- `
|
|
93
|
-
- `
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
-
|
|
104
|
-
-
|
|
105
|
-
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
-
|
|
111
|
-
-
|
|
112
|
-
-
|
|
113
|
-
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
###
|
|
128
|
-
-
|
|
129
|
-
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
-
|
|
137
|
-
-
|
|
138
|
-
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
-
|
|
3
|
+
## 1.5.0 — Agentic Production System (March 19, 2026)
|
|
4
|
+
|
|
5
|
+
**Three-layer intelligence: Device Atlas + M4L Analyzer + Technique Memory.**
|
|
6
|
+
|
|
7
|
+
LivePilot is no longer just a tool server. v1.5.0 reframes the architecture around three layers that give the AI context beyond raw API access:
|
|
8
|
+
|
|
9
|
+
### Device Atlas
|
|
10
|
+
- Structured knowledge corpus of 280+ Ableton devices, 139 drum kits, 350+ impulse responses
|
|
11
|
+
- Indexed by category with sonic descriptions, parameter guides, and real browser URIs
|
|
12
|
+
- The agent consults the atlas before loading any device — no more hallucinated preset names
|
|
13
|
+
|
|
14
|
+
### M4L Analyzer (new in v1.1.0, now integrated into the agentic workflow)
|
|
15
|
+
- 8-band spectral analysis, RMS/peak metering, pitch tracking, key detection on the master bus
|
|
16
|
+
- The agent reads the spectrum after mixing moves to verify results
|
|
17
|
+
- Key detection informs harmonic content decisions (bass lines, chord voicings)
|
|
18
|
+
|
|
19
|
+
### Technique Memory
|
|
20
|
+
- Persistent production decisions across sessions: beat patterns, device chains, mix templates, preferences
|
|
21
|
+
- `memory_recall` matches on mood, genre, texture — not just names
|
|
22
|
+
- The agent consults memory by default before creative decisions, building a profile of the user's taste over time
|
|
23
|
+
|
|
24
|
+
### Producer Agent
|
|
25
|
+
- Updated to use all three layers: atlas for instrument selection, analyzer for verification, memory for style context
|
|
26
|
+
- Mandatory health checks between stages now include spectral verification when the analyzer is present
|
|
27
|
+
|
|
28
|
+
### Documentation
|
|
29
|
+
- README rewritten around the three-layer architecture
|
|
30
|
+
- Manual updated with agentic approach section
|
|
31
|
+
- Skill description reflects the full stack: tools + atlas + analyzer + memory
|
|
32
|
+
- Comparison table updated to highlight knowledge, perception, and memory as differentiators
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 1.1.0 — M4L Bridge & Deep LOM Access (March 18-19, 2026)
|
|
37
|
+
|
|
38
|
+
**23 new tools (104 -> 127), M4L Analyzer device, deep LiveAPI access via Max for Live bridge.**
|
|
39
|
+
|
|
40
|
+
### M4L Bridge Architecture
|
|
41
|
+
- New `LivePilot_Analyzer.amxd` Max for Live Audio Effect for the master track
|
|
42
|
+
- UDP/OSC bridge: port 9880 (M4L -> Server), port 9881 (Server -> M4L)
|
|
43
|
+
- `livepilot_bridge.js` with 22 bridge commands for deep LOM access
|
|
44
|
+
- `SpectralCache` with thread-safe, time-expiring data storage (5s max age)
|
|
45
|
+
- Graceful degradation: all 104 core tools work without the analyzer device
|
|
46
|
+
- Base64-encoded JSON responses with chunked transfer for large payloads (>1400 bytes)
|
|
47
|
+
- OSC addresses sent WITHOUT leading `/` to fix Max `udpreceive` messagename dispatch
|
|
48
|
+
|
|
49
|
+
### New Tools: Analyzer Domain (20 tools)
|
|
50
|
+
|
|
51
|
+
**Spectral Analysis (3):**
|
|
52
|
+
- `get_master_spectrum` — 8-band frequency analysis (sub/low/low-mid/mid/high-mid/high/presence/air)
|
|
53
|
+
- `get_master_rms` — real-time RMS, peak, and pitch from the master bus
|
|
54
|
+
- `get_detected_key` — Krumhansl-Schmuckler key detection algorithm on accumulated pitch data
|
|
55
|
+
|
|
56
|
+
**Deep LOM Access (4):**
|
|
57
|
+
- `get_hidden_parameters` — all device parameters including hidden ones not in ControlSurface API
|
|
58
|
+
- `get_automation_state` — automation state for all parameters (active/overridden)
|
|
59
|
+
- `walk_device_tree` — recursive device chain tree walking (racks, drum pads, nested devices, 6 levels deep)
|
|
60
|
+
- `get_display_values` — human-readable parameter values as shown in Live's UI (e.g., "440 Hz", "-6.0 dB")
|
|
61
|
+
|
|
62
|
+
**Simpler Operations (7):**
|
|
63
|
+
- `replace_simpler_sample` — load audio file into Simpler by absolute path (requires existing sample)
|
|
64
|
+
- `load_sample_to_simpler` — full workflow: bootstrap Simpler via browser, then replace sample
|
|
65
|
+
- `get_simpler_slices` — get slice point positions (frames and seconds) from Simpler
|
|
66
|
+
- `crop_simpler` — crop sample to active region
|
|
67
|
+
- `reverse_simpler` — reverse sample in Simpler
|
|
68
|
+
- `warp_simpler` — time-stretch sample to fit N beats at current tempo
|
|
69
|
+
- `get_clip_file_path` — get audio file path on disk for a clip
|
|
70
|
+
|
|
71
|
+
**Warp Markers (4):**
|
|
72
|
+
- `get_warp_markers` — get all warp markers (beat_time + sample_time) from audio clips
|
|
73
|
+
- `add_warp_marker` — add warp marker at beat position
|
|
74
|
+
- `move_warp_marker` — move warp marker to new beat position (tempo manipulation)
|
|
75
|
+
- `remove_warp_marker` — remove warp marker at beat position
|
|
76
|
+
|
|
77
|
+
**Clip Preview (2):**
|
|
78
|
+
- `scrub_clip` — scrub/preview clip at specific beat position
|
|
79
|
+
- `stop_scrub` — stop scrub preview
|
|
80
|
+
|
|
81
|
+
### New Tools: Mixing Domain (3 tools)
|
|
82
|
+
- `get_track_routing` — get input/output routing info for a track
|
|
83
|
+
- `set_track_routing` — set input/output routing by display name
|
|
84
|
+
- `get_mix_snapshot` — one-call full mix state (all meters, volumes, pans, sends, master)
|
|
85
|
+
|
|
86
|
+
### Bugs Fixed
|
|
87
|
+
|
|
88
|
+
**M4L Bridge Fixes:**
|
|
89
|
+
- OSC addresses: removed leading `/` from outgoing commands — Max `udpreceive` passes the `/` as part of the messagename to JS, breaking the dispatch switch statement
|
|
90
|
+
- `str_for_value` requires `call()` not `get()` — it's a function, not a property in Max JS LiveAPI
|
|
91
|
+
- `warp_markers` is a dict property returning a JSON string, not LOM children — requires `JSON.parse()` on the raw `get()` result
|
|
92
|
+
- `SimplerDevice.slices` lives on the `sample` child object (`device sample slices`), not on the device directly
|
|
93
|
+
- `replace_sample` only works on Simplers that already have a sample loaded — silently fails on empty Simplers
|
|
94
|
+
- `get()` in Max JS LiveAPI always returns arrays — must index or convert appropriately
|
|
95
|
+
- `openinpresentation` attribute in .amxd doesn't persist from Max editor saves — requires binary patching
|
|
96
|
+
|
|
97
|
+
**M4L Analyzer Display Fixes:**
|
|
98
|
+
- Injected `settype Float` messages to fix spectrum bar display (was showing integer 0/1)
|
|
99
|
+
- Fixed `vexpr` scaling factor from 10 to 200 for proper bar visualization range
|
|
100
|
+
- Fixed freeze/JS caching: Max freezes JS from its search path cache (`~/Documents/Max 8/...`), not from the source file directory
|
|
101
|
+
|
|
102
|
+
**Tool Fixes:**
|
|
103
|
+
- Fixed key detection passthrough from streaming cache to bridge query fallback
|
|
104
|
+
- Fixed parameter name case-sensitivity in hidden parameter reads
|
|
105
|
+
- Fixed input validation on several analyzer tools (missing clip/track validation)
|
|
106
|
+
- Fixed `load_sample_to_simpler` bootstrap: searches browser for any sample, loads it to create Simpler, then replaces
|
|
107
|
+
|
|
108
|
+
### LiveAPI Insights Documented
|
|
109
|
+
- `get()` returns arrays in Max JS LiveAPI (even for scalar properties)
|
|
110
|
+
- `call()` vs `get()` distinction for functions vs properties
|
|
111
|
+
- `.amxd` binary format: 24-byte `ampf` header + `ptch` chunk + `mx@c` header + JSON patcher + frozen dependencies
|
|
112
|
+
- Binary patching technique: same-byte-count string replacements preserve file structure
|
|
113
|
+
- Max freezes JS from cache path, not source directory — must copy to `~/Documents/Max 8/`
|
|
114
|
+
|
|
115
|
+
### Technical
|
|
116
|
+
- New `mcp_server/m4l_bridge.py` module: `SpectralCache`, `SpectralReceiver`, `M4LBridge` classes
|
|
117
|
+
- New `mcp_server/tools/analyzer.py`: 20 MCP tools for the analyzer domain
|
|
118
|
+
- New `m4l_device/livepilot_bridge.js`: 22 bridge commands
|
|
119
|
+
- New `m4l_device/LivePilot_Analyzer.amxd`: compiled M4L device
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 1.0.0 — LivePilot
|
|
124
|
+
|
|
125
|
+
**AI copilot for Ableton Live 12 — 104 MCP tools for real-time music production.**
|
|
126
|
+
|
|
127
|
+
### Core
|
|
128
|
+
- 104 MCP tools across 10 domains: transport, tracks, clips, notes, devices, scenes, mixing, browser, arrangement, memory
|
|
129
|
+
- Remote Script using Ableton's official Live Object Model API (ControlSurface base class)
|
|
130
|
+
- JSON over TCP, newline-delimited, port 9878
|
|
131
|
+
- Structured errors with codes: INDEX_ERROR, NOT_FOUND, INVALID_PARAM, STATE_ERROR, TIMEOUT, INTERNAL
|
|
132
|
+
|
|
133
|
+
### Browser & Device Loading
|
|
134
|
+
- Breadth-first device search with exact-match priority
|
|
135
|
+
- Plugin browser support (AU/VST/AUv3) via `search_browser("plugins")`
|
|
136
|
+
- Max for Live browser via `search_browser("max_for_live")`
|
|
137
|
+
- URI-based loading with category hint parsing for fast resolution
|
|
138
|
+
- Case-insensitive parameter name matching
|
|
139
|
+
|
|
140
|
+
### Arrangement
|
|
141
|
+
- Full arrangement view support: create clips, add/remove/modify notes, automation envelopes
|
|
142
|
+
- Automation on device parameters, volume, panning, and sends
|
|
143
|
+
- Support for return tracks and master track across all tools
|
|
144
|
+
|
|
145
|
+
### Plugin
|
|
146
|
+
- 5 slash commands: /beat, /mix, /sounddesign, /session, /memory
|
|
147
|
+
- Producer agent for autonomous multi-step tasks
|
|
148
|
+
- Technique memory system (learn, recall, replay, favorite)
|
|
149
|
+
- Built-in Device Atlas covering native Ableton instruments and effects
|
|
150
|
+
|
|
151
|
+
### Installer
|
|
152
|
+
- Auto-detects Ableton Remote Scripts path on macOS and Windows
|
|
153
|
+
- Copies Remote Script files, verifies installation
|