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 CHANGED
@@ -1,146 +1,189 @@
1
1
  # Changelog
2
2
 
3
- ## [1.4.5] — 2026-03-18
4
-
5
- ### Added
6
- - **Built-in Device Atlas** — 10 reference files covering all native Ableton instruments, effects, drums, EQ, dynamics, space, modulation, spectral, and MIDI tools. Agent uses these for informed device/parameter decisions without trial-and-error
7
-
8
- ### Fixes
9
- - Excluded personal library data (M4L collections, AU/VST plugins, user samples) from npm package and git
10
-
11
- ## [1.4.4] 2026-03-18
12
-
13
- ### Fixes
14
- - **`find_and_load_device` breadth-first search** — Pass 0 instant top-level check finds raw devices like "Operator", "Auto Filter", "Limiter" in O(50) instead of O(thousands). Falls back to breadth-first recursive search for nested items
15
- - **Better "no devices" error message** — `get_device_parameters` on an empty track now says "Track 'BASS' has no devices — load an instrument or effect first" instead of the confusing "Device index 0 out of range (0..-1)"
16
-
17
- ## [1.4.3]2026-03-18
18
-
19
- ### Fixes
20
- - **`find_and_load_device` now finds raw instruments** two-pass search: exact name match first (finds "Operator" before "Hello Operator.adg"), then partial match for M4L devices (e.g., "Kickster" matches "trnr.Kickster")
21
- - **Browser now searches plugins and Max for Live categories** — added `browser.plugins` and `browser.max_for_live` to all browser operations. AU/VST/AUv3 plugins (Moog, Drambo, BYOD, etc.) are now discoverable and loadable via `find_and_load_device` and `search_browser("plugins")`
22
- - **`load_browser_item` handles Sounds FileId URIs** URIs containing internal FileId references (e.g., `query:Sounds#Pad:FileId_6343`) now trigger a deep URI search instead of failing with "not found"
23
- - **`load_browser_item` URI category prioritization** parses category hint from URI (e.g., `query:Drums#...` searches drums first), reducing search time from 10K+ iterations to under 1K for most loads
24
- - **Iteration limit increased** — `load_browser_item` and `load_device_by_uri` now search up to 50K iterations (was 10K), preventing timeouts on large browser categories
25
- - **Case-insensitive parameter matching** — `set_device_parameter` and `batch_set_parameters` now try exact match first, then case-insensitive fallback. Error messages list available parameter names for debugging
26
- - **Track index validation relaxed** — `_validate_track_index` in arrangement, browser, clips, notes, and tracks MCP tools now allows negative indices for return tracks (-1=A, -2=B) and -1000 for master, consistent with the remote script's `get_track()` behavior
27
-
28
- ### Added
29
- - `search_browser("plugins")` browse all installed AU/VST/AUv3 plugins
30
- - `search_browser("max_for_live")` browse all M4L devices directly
31
- - `search_browser("clips")` and `search_browser("current_project")` — additional browser categories
32
-
33
- ## [1.4.2] 2026-03-18
34
-
35
- ### Fixes
36
- - `memory_recall` multi-word search now works — queries are split into words and matched across name, tags, and qualities (was treating entire query as single substring)
37
- - `set_session_loop` returns correct loop state — echoes requested value instead of reading stale LOM property
38
- - `jump_to_time` returns correct position — echoes requested beat_time instead of reading stale `current_song_time`
39
-
40
- ## [1.4.1] — 2026-03-18
41
-
42
- ### Fixes
43
- - Browser search now enforces global 10,000 iteration budget across all categories (was resetting per-category)
44
- - `_search_recursive` returns early when `max_results` is reached instead of scanning remaining siblings
45
- - Narrowed 29 broad `except Exception` catches to specific types (`AttributeError`, `OSError`, `ValueError`) across browser, devices, mixing, and server modules
46
- - Kept `except Exception` only at the 3 outermost dispatch boundaries (router, command processor, logger)
47
-
48
- ## [1.4.0]2026-03-18
49
-
50
- ### Added
51
- - **Technique Memory System** — 8 new MCP tools (`memory_learn`, `memory_recall`, `memory_get`, `memory_replay`, `memory_list`, `memory_favorite`, `memory_update`, `memory_delete`) for persistent technique storage with agent-written stylistic qualities
52
- - Memory guide reference (`references/memory-guide.md`) with qualities template and examples
53
- - `/memory` command for browsing the technique library
54
- - Producer agent now consults memory by default before creative decisions (override with "fresh" / "ignore history")
55
- - Three memory modes: Informed (default), Fresh (override), Explicit Recall
56
-
57
- ### Changed
58
- - Tool count: 96 104 (10 domains, was 9)
59
- - Commands: 4 → 5 (added /memory)
60
-
61
- ## 1.3.0 2026-03-17
62
-
63
- ### Enhancements
64
- - **Device tools now support return tracks and master track** — use negative `track_index` for return tracks (-1=A, -2=B) and -1000 for master track. Works with all 12 device tools: `get_device_info`, `get_device_parameters`, `set_device_parameter`, `batch_set_parameters`, `toggle_device`, `delete_device`, `load_device_by_uri`, `find_and_load_device`, `get_rack_chains`, `set_simpler_playback_mode`, `set_chain_volume`, `get_device_presets`
65
- - **Mixing tools now support return tracks** — `set_track_volume`, `set_track_pan`, `get_track_routing`, `set_track_routing` accept negative indices for return tracks
66
- - Fixed `quantize_clip` grid parameter documentation — was incorrectly documented as float beats, now correctly documented as integer enum (0-8)
67
- - Fixed tempo range typo in SKILL.md (was 20-969, corrected to 20-999)
68
-
69
- ## 1.2.1 — 2026-03-17
70
-
71
- ### Fixes
72
- - Remove 3 tools that don't work in Live 12's ControlSurface API: `create_group_track`, `freeze_track`, `flatten_track`
73
- - Fix `set_scene_name` — now allows empty string to clear scene name
74
- - Fix `set_scene_tempo` removed invalid "0 to clear" (Live 12 range is 20-999 BPM)
75
- - All 96 tools live-tested against Ableton Live 12
76
-
77
- ## 1.2.0 2026-03-17
78
-
79
- ### New Tools (+5, total 96)
80
- - **`set_group_fold`** fold/unfold a group track to show/hide children
81
- - **`set_track_input_monitoring`** set input monitoring state (In/Auto/Off)
82
- - **`set_clip_warp_mode`** set warp mode for audio clips (Beats/Tones/Texture/Re-Pitch/Complex/Complex Pro)
83
- - **`set_scene_color`** set scene color (0-69)
84
- - **`set_scene_tempo`** — set per-scene tempo that triggers on launch (20-999 BPM)
85
-
86
- ### Removed Tools (-3)
87
- - **`create_group_track`** — removed due to Live 12 API limitations
88
- - **`freeze_track`**removed due to Live 12 API limitations
89
- - **`flatten_track`**removed due to Live 12 API limitations
90
-
91
- ### Enhancements
92
- - `get_clip_info` now returns `is_midi_clip`, `is_audio_clip`, and audio warp fields (`warping`, `warp_mode`)
93
- - `get_track_info` now returns `is_foldable`, `is_grouped`, `fold_state`, and `current_monitoring_state`
94
-
95
- ### Fixes
96
- - `set_scene_name` now allows empty string to clear scene name
97
-
98
- ## 1.1.2 — 2026-03-17
99
-
100
- ### Fixes
101
- - Added missing `clip_index` validation to 4 arrangement MCP tools
102
- - Standardized `json` import (removed `_json` alias)
103
- - Added index range to arrangement clip error messages for consistency
104
- - Made installer version-agnostic (`/^Live \d+/` regex instead of hardcoded "Live 12")
105
- - Standardized project description across all config files
106
-
107
- ## 1.1.1 — 2026-03-17
108
-
109
- ### Fixes
110
- - Fixed `create_arrangement_clip` ignoring `loop_length` parameter (was always using source clip length for tiling)
111
- - Fixed double `end_undo_step()` calls in `create_arrangement_clip` and `set_arrangement_automation` (now uses `try/finally`)
112
- - Fixed `back_to_arranger` setting wrong value (`False` → `True`)
113
- - Added guard against `None` clip index after arrangement placement failure
114
- - Fixed `--doctor` summary not reflecting connection test result in exit code
115
-
116
- ## 1.1.0 — 2026-03-17
117
-
118
- ### New Tools (+7)
119
- - **`back_to_arranger`**switch playback from session clips back to arrangement timeline
120
- - **`get_arrangement_notes`**read MIDI notes from arrangement clips
121
- - **`remove_arrangement_notes`** — remove notes in a region of an arrangement clip
122
- - **`remove_arrangement_notes_by_id`** — remove specific notes by ID
123
- - **`modify_arrangement_notes`** — modify notes by ID (pitch, time, velocity, probability)
124
- - **`duplicate_arrangement_notes`** — copy notes by ID with optional time offset
125
- - **`get_device_presets`**list presets for any device (audio effects, instruments, MIDI effects)
126
-
127
- ### Fixes
128
- - Fixed arrangement tools test coverage (was missing 5 tools from expected set)
129
- - Synchronized tool count across all documentation (was 80/81/84, now consistently 91)
130
-
131
- ## 1.0.02026-03-17
132
-
133
- Initial release.
134
-
135
- ### Features
136
- - **84 MCP tools** across 9 domains: transport, tracks, clips, notes, devices, scenes, mixing, browser, arrangement
137
- - **Remote Script** for Ableton Live 12 with thread-safe command queue via `schedule_message`
138
- - **MCP Server** (FastMCP) with input validation, auto-reconnect, and structured error messages
139
- - **CLI** (`npx livepilot`) with `--install`, `--uninstall`, `--status`, `--doctor`, `--version`
140
- - **Claude Code Plugin** with:
141
- - `livepilot-core` skill core discipline and workflow guides
142
- - `livepilot-producer` agent autonomous production from high-level descriptions
143
- - 4 slash commands: `/session`, `/beat`, `/mix`, `/sounddesign`
144
- - **Installer** with auto-detection of Ableton paths on macOS and Windows
145
- - **Live 12 modern note API** support: note IDs, probability, velocity_deviation
146
- - **JSON over TCP** protocol on port 9878 with structured error codes
3
+ ## 1.6.1Hotfix (March 2026)
4
+
5
+ - Fix: `clip_automation.py` imported `register` from `utils` instead of `router`, causing Remote Script to fail to load in Ableton (LivePilot disappeared from Control Surface list)
6
+
7
+ ## 1.6.0 — Automation Intelligence (March 2026)
8
+
9
+ **8 new tools (127 -> 135), 16-type curve engine, 15 recipes, spectral feedback loop.**
10
+
11
+ ### Automation Curve Engine
12
+ - 16 curve types in 4 categories: basic (9), organic (3), shape (2), generative (2)
13
+ - Pure math module — no Ableton dependency, fully testable offline
14
+ - 15 built-in recipes for common production techniques
15
+
16
+ ### New Tools: Automation Domain (8 tools)
17
+ - `get_clip_automation`list automation envelopes on a session clip
18
+ - `set_clip_automation` — write automation points to clip envelope
19
+ - `clear_clip_automation` — clear automation envelopes
20
+ - `apply_automation_shape`generate + apply curve in one call
21
+ - `apply_automation_recipe` apply named recipe (filter_sweep_up, dub_throw, etc.)
22
+ - `get_automation_recipes`list all 15 recipes with descriptions
23
+ - `generate_automation_curve`preview curve points without writing
24
+ - `analyze_for_automation` spectral analysis + device-aware suggestions
25
+
26
+ ### Automation Atlas
27
+ - Knowledge corpus: curve theory, perception-action loop, genre recipes
28
+ - Diagnostic filter technique: using EQ as a measurement instrument
29
+ - Cross-track spectral mapping for complementary automation
30
+ - Golden rules for musically intelligent automation
31
+
32
+ ### Producer Agent
33
+ - New automation phase in production workflow
34
+ - Mandatory spectral feedback loop: perceive -> diagnose -> act -> verify -> adjust
35
+ - Spectral-driven automation decisions, not just blind curve application
36
+
37
+ ---
38
+
39
+ ## 1.5.0 — Agentic Production System (March 19, 2026)
40
+
41
+ **Three-layer intelligence: Device Atlas + M4L Analyzer + Technique Memory.**
42
+
43
+ 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:
44
+
45
+ ### Device Atlas
46
+ - Structured knowledge corpus of 280+ Ableton devices, 139 drum kits, 350+ impulse responses
47
+ - Indexed by category with sonic descriptions, parameter guides, and real browser URIs
48
+ - The agent consults the atlas before loading any device no more hallucinated preset names
49
+
50
+ ### M4L Analyzer (new in v1.1.0, now integrated into the agentic workflow)
51
+ - 8-band spectral analysis, RMS/peak metering, pitch tracking, key detection on the master bus
52
+ - The agent reads the spectrum after mixing moves to verify results
53
+ - Key detection informs harmonic content decisions (bass lines, chord voicings)
54
+
55
+ ### Technique Memory
56
+ - Persistent production decisions across sessions: beat patterns, device chains, mix templates, preferences
57
+ - `memory_recall` matches on mood, genre, texture — not just names
58
+ - The agent consults memory by default before creative decisions, building a profile of the user's taste over time
59
+
60
+ ### Producer Agent
61
+ - Updated to use all three layers: atlas for instrument selection, analyzer for verification, memory for style context
62
+ - Mandatory health checks between stages now include spectral verification when the analyzer is present
63
+
64
+ ### Documentation
65
+ - README rewritten around the three-layer architecture
66
+ - Manual updated with agentic approach section
67
+ - Skill description reflects the full stack: tools + atlas + analyzer + memory
68
+ - Comparison table updated to highlight knowledge, perception, and memory as differentiators
69
+
70
+ ---
71
+
72
+ ## 1.1.0 M4L Bridge & Deep LOM Access (March 18-19, 2026)
73
+
74
+ **23 new tools (104 -> 127), M4L Analyzer device, deep LiveAPI access via Max for Live bridge.**
75
+
76
+ ### M4L Bridge Architecture
77
+ - New `LivePilot_Analyzer.amxd` Max for Live Audio Effect for the master track
78
+ - UDP/OSC bridge: port 9880 (M4L -> Server), port 9881 (Server -> M4L)
79
+ - `livepilot_bridge.js` with 22 bridge commands for deep LOM access
80
+ - `SpectralCache` with thread-safe, time-expiring data storage (5s max age)
81
+ - Graceful degradation: all 104 core tools work without the analyzer device
82
+ - Base64-encoded JSON responses with chunked transfer for large payloads (>1400 bytes)
83
+ - OSC addresses sent WITHOUT leading `/` to fix Max `udpreceive` messagename dispatch
84
+
85
+ ### New Tools: Analyzer Domain (20 tools)
86
+
87
+ **Spectral Analysis (3):**
88
+ - `get_master_spectrum`8-band frequency analysis (sub/low/low-mid/mid/high-mid/high/presence/air)
89
+ - `get_master_rms`real-time RMS, peak, and pitch from the master bus
90
+ - `get_detected_key` — Krumhansl-Schmuckler key detection algorithm on accumulated pitch data
91
+
92
+ **Deep LOM Access (4):**
93
+ - `get_hidden_parameters` all device parameters including hidden ones not in ControlSurface API
94
+ - `get_automation_state` — automation state for all parameters (active/overridden)
95
+ - `walk_device_tree` — recursive device chain tree walking (racks, drum pads, nested devices, 6 levels deep)
96
+ - `get_display_values` human-readable parameter values as shown in Live's UI (e.g., "440 Hz", "-6.0 dB")
97
+
98
+ **Simpler Operations (7):**
99
+ - `replace_simpler_sample` — load audio file into Simpler by absolute path (requires existing sample)
100
+ - `load_sample_to_simpler` — full workflow: bootstrap Simpler via browser, then replace sample
101
+ - `get_simpler_slices` get slice point positions (frames and seconds) from Simpler
102
+ - `crop_simpler` crop sample to active region
103
+ - `reverse_simpler` reverse sample in Simpler
104
+ - `warp_simpler` time-stretch sample to fit N beats at current tempo
105
+ - `get_clip_file_path` get audio file path on disk for a clip
106
+
107
+ **Warp Markers (4):**
108
+ - `get_warp_markers` — get all warp markers (beat_time + sample_time) from audio clips
109
+ - `add_warp_marker` — add warp marker at beat position
110
+ - `move_warp_marker` move warp marker to new beat position (tempo manipulation)
111
+ - `remove_warp_marker` remove warp marker at beat position
112
+
113
+ **Clip Preview (2):**
114
+ - `scrub_clip` scrub/preview clip at specific beat position
115
+ - `stop_scrub` — stop scrub preview
116
+
117
+ ### New Tools: Mixing Domain (3 tools)
118
+ - `get_track_routing` get input/output routing info for a track
119
+ - `set_track_routing`set input/output routing by display name
120
+ - `get_mix_snapshot`one-call full mix state (all meters, volumes, pans, sends, master)
121
+
122
+ ### Bugs Fixed
123
+
124
+ **M4L Bridge Fixes:**
125
+ - OSC addresses: removed leading `/` from outgoing commands Max `udpreceive` passes the `/` as part of the messagename to JS, breaking the dispatch switch statement
126
+ - `str_for_value` requires `call()` not `get()` — it's a function, not a property in Max JS LiveAPI
127
+ - `warp_markers` is a dict property returning a JSON string, not LOM children — requires `JSON.parse()` on the raw `get()` result
128
+ - `SimplerDevice.slices` lives on the `sample` child object (`device sample slices`), not on the device directly
129
+ - `replace_sample` only works on Simplers that already have a sample loaded — silently fails on empty Simplers
130
+ - `get()` in Max JS LiveAPI always returns arrays — must index or convert appropriately
131
+ - `openinpresentation` attribute in .amxd doesn't persist from Max editor saves requires binary patching
132
+
133
+ **M4L Analyzer Display Fixes:**
134
+ - Injected `settype Float` messages to fix spectrum bar display (was showing integer 0/1)
135
+ - Fixed `vexpr` scaling factor from 10 to 200 for proper bar visualization range
136
+ - Fixed freeze/JS caching: Max freezes JS from its search path cache (`~/Documents/Max 8/...`), not from the source file directory
137
+
138
+ **Tool Fixes:**
139
+ - Fixed key detection passthrough from streaming cache to bridge query fallback
140
+ - Fixed parameter name case-sensitivity in hidden parameter reads
141
+ - Fixed input validation on several analyzer tools (missing clip/track validation)
142
+ - Fixed `load_sample_to_simpler` bootstrap: searches browser for any sample, loads it to create Simpler, then replaces
143
+
144
+ ### LiveAPI Insights Documented
145
+ - `get()` returns arrays in Max JS LiveAPI (even for scalar properties)
146
+ - `call()` vs `get()` distinction for functions vs properties
147
+ - `.amxd` binary format: 24-byte `ampf` header + `ptch` chunk + `mx@c` header + JSON patcher + frozen dependencies
148
+ - Binary patching technique: same-byte-count string replacements preserve file structure
149
+ - Max freezes JS from cache path, not source directory — must copy to `~/Documents/Max 8/`
150
+
151
+ ### Technical
152
+ - New `mcp_server/m4l_bridge.py` module: `SpectralCache`, `SpectralReceiver`, `M4LBridge` classes
153
+ - New `mcp_server/tools/analyzer.py`: 20 MCP tools for the analyzer domain
154
+ - New `m4l_device/livepilot_bridge.js`: 22 bridge commands
155
+ - New `m4l_device/LivePilot_Analyzer.amxd`: compiled M4L device
156
+
157
+ ---
158
+
159
+ ## 1.0.0 — LivePilot
160
+
161
+ **AI copilot for Ableton Live 12 — 104 MCP tools for real-time music production.**
162
+
163
+ ### Core
164
+ - 104 MCP tools across 10 domains: transport, tracks, clips, notes, devices, scenes, mixing, browser, arrangement, memory
165
+ - Remote Script using Ableton's official Live Object Model API (ControlSurface base class)
166
+ - JSON over TCP, newline-delimited, port 9878
167
+ - Structured errors with codes: INDEX_ERROR, NOT_FOUND, INVALID_PARAM, STATE_ERROR, TIMEOUT, INTERNAL
168
+
169
+ ### Browser & Device Loading
170
+ - Breadth-first device search with exact-match priority
171
+ - Plugin browser support (AU/VST/AUv3) via `search_browser("plugins")`
172
+ - Max for Live browser via `search_browser("max_for_live")`
173
+ - URI-based loading with category hint parsing for fast resolution
174
+ - Case-insensitive parameter name matching
175
+
176
+ ### Arrangement
177
+ - Full arrangement view support: create clips, add/remove/modify notes, automation envelopes
178
+ - Automation on device parameters, volume, panning, and sends
179
+ - Support for return tracks and master track across all tools
180
+
181
+ ### Plugin
182
+ - 5 slash commands: /beat, /mix, /sounddesign, /session, /memory
183
+ - Producer agent for autonomous multi-step tasks
184
+ - Technique memory system (learn, recall, replay, favorite)
185
+ - Built-in Device Atlas covering native Ableton instruments and effects
186
+
187
+ ### Installer
188
+ - Auto-detects Ableton Remote Scripts path on macOS and Windows
189
+ - Copies Remote Script files, verifies installation