livepilot 1.4.4 → 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 CHANGED
@@ -1,138 +1,153 @@
1
1
  # Changelog
2
2
 
3
- ## [1.4.4] — 2026-03-18
4
-
5
- ### Fixes
6
- - **`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
7
- - **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)"
8
-
9
- ## [1.4.3] — 2026-03-18
10
-
11
- ### Fixes
12
- - **`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")
13
- - **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")`
14
- - **`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"
15
- - **`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
16
- - **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
17
- - **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
18
- - **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
19
-
20
- ### Added
21
- - `search_browser("plugins")` browse all installed AU/VST/AUv3 plugins
22
- - `search_browser("max_for_live")` browse all M4L devices directly
23
- - `search_browser("clips")` and `search_browser("current_project")` — additional browser categories
24
-
25
- ## [1.4.2] 2026-03-18
26
-
27
- ### Fixes
28
- - `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)
29
- - `set_session_loop` returns correct loop state — echoes requested value instead of reading stale LOM property
30
- - `jump_to_time` returns correct position echoes requested beat_time instead of reading stale `current_song_time`
31
-
32
- ## [1.4.1] 2026-03-18
33
-
34
- ### Fixes
35
- - Browser search now enforces global 10,000 iteration budget across all categories (was resetting per-category)
36
- - `_search_recursive` returns early when `max_results` is reached instead of scanning remaining siblings
37
- - Narrowed 29 broad `except Exception` catches to specific types (`AttributeError`, `OSError`, `ValueError`) across browser, devices, mixing, and server modules
38
- - Kept `except Exception` only at the 3 outermost dispatch boundaries (router, command processor, logger)
39
-
40
- ## [1.4.0] 2026-03-18
41
-
42
- ### Added
43
- - **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
44
- - Memory guide reference (`references/memory-guide.md`) with qualities template and examples
45
- - `/memory` command for browsing the technique library
46
- - Producer agent now consults memory by default before creative decisions (override with "fresh" / "ignore history")
47
- - Three memory modes: Informed (default), Fresh (override), Explicit Recall
48
-
49
- ### Changed
50
- - Tool count: 96 → 104 (10 domains, was 9)
51
- - Commands: 4 → 5 (added /memory)
52
-
53
- ## 1.3.02026-03-17
54
-
55
- ### Enhancements
56
- - **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`
57
- - **Mixing tools now support return tracks** `set_track_volume`, `set_track_pan`, `get_track_routing`, `set_track_routing` accept negative indices for return tracks
58
- - Fixed `quantize_clip` grid parameter documentation was incorrectly documented as float beats, now correctly documented as integer enum (0-8)
59
- - Fixed tempo range typo in SKILL.md (was 20-969, corrected to 20-999)
60
-
61
- ## 1.2.1 — 2026-03-17
62
-
63
- ### Fixes
64
- - Remove 3 tools that don't work in Live 12's ControlSurface API: `create_group_track`, `freeze_track`, `flatten_track`
65
- - Fix `set_scene_name` — now allows empty string to clear scene name
66
- - Fix `set_scene_tempo` — removed invalid "0 to clear" (Live 12 range is 20-999 BPM)
67
- - All 96 tools live-tested against Ableton Live 12
68
-
69
- ## 1.2.02026-03-17
70
-
71
- ### New Tools (+5, total 96)
72
- - **`set_group_fold`**fold/unfold a group track to show/hide children
73
- - **`set_track_input_monitoring`**set input monitoring state (In/Auto/Off)
74
- - **`set_clip_warp_mode`**set warp mode for audio clips (Beats/Tones/Texture/Re-Pitch/Complex/Complex Pro)
75
- - **`set_scene_color`**set scene color (0-69)
76
- - **`set_scene_tempo`** — set per-scene tempo that triggers on launch (20-999 BPM)
77
-
78
- ### Removed Tools (-3)
79
- - **`create_group_track`**removed due to Live 12 API limitations
80
- - **`freeze_track`** — removed due to Live 12 API limitations
81
- - **`flatten_track`** removed due to Live 12 API limitations
82
-
83
- ### Enhancements
84
- - `get_clip_info` now returns `is_midi_clip`, `is_audio_clip`, and audio warp fields (`warping`, `warp_mode`)
85
- - `get_track_info` now returns `is_foldable`, `is_grouped`, `fold_state`, and `current_monitoring_state`
86
-
87
- ### Fixes
88
- - `set_scene_name` now allows empty string to clear scene name
89
-
90
- ## 1.1.22026-03-17
91
-
92
- ### Fixes
93
- - Added missing `clip_index` validation to 4 arrangement MCP tools
94
- - Standardized `json` import (removed `_json` alias)
95
- - Added index range to arrangement clip error messages for consistency
96
- - Made installer version-agnostic (`/^Live \d+/` regex instead of hardcoded "Live 12")
97
- - Standardized project description across all config files
98
-
99
- ## 1.1.1 2026-03-17
100
-
101
- ### Fixes
102
- - Fixed `create_arrangement_clip` ignoring `loop_length` parameter (was always using source clip length for tiling)
103
- - Fixed double `end_undo_step()` calls in `create_arrangement_clip` and `set_arrangement_automation` (now uses `try/finally`)
104
- - Fixed `back_to_arranger` setting wrong value (`False` `True`)
105
- - Added guard against `None` clip index after arrangement placement failure
106
- - Fixed `--doctor` summary not reflecting connection test result in exit code
107
-
108
- ## 1.1.0 2026-03-17
109
-
110
- ### New Tools (+7)
111
- - **`back_to_arranger`** switch playback from session clips back to arrangement timeline
112
- - **`get_arrangement_notes`** read MIDI notes from arrangement clips
113
- - **`remove_arrangement_notes`** remove notes in a region of an arrangement clip
114
- - **`remove_arrangement_notes_by_id`** — remove specific notes by ID
115
- - **`modify_arrangement_notes`** — modify notes by ID (pitch, time, velocity, probability)
116
- - **`duplicate_arrangement_notes`** copy notes by ID with optional time offset
117
- - **`get_device_presets`** list presets for any device (audio effects, instruments, MIDI effects)
118
-
119
- ### Fixes
120
- - Fixed arrangement tools test coverage (was missing 5 tools from expected set)
121
- - Synchronized tool count across all documentation (was 80/81/84, now consistently 91)
122
-
123
- ## 1.0.0 — 2026-03-17
124
-
125
- Initial release.
126
-
127
- ### Features
128
- - **84 MCP tools** across 9 domains: transport, tracks, clips, notes, devices, scenes, mixing, browser, arrangement
129
- - **Remote Script** for Ableton Live 12 with thread-safe command queue via `schedule_message`
130
- - **MCP Server** (FastMCP) with input validation, auto-reconnect, and structured error messages
131
- - **CLI** (`npx livepilot`) with `--install`, `--uninstall`, `--status`, `--doctor`, `--version`
132
- - **Claude Code Plugin** with:
133
- - `livepilot-core` skill core discipline and workflow guides
134
- - `livepilot-producer` agent autonomous production from high-level descriptions
135
- - 4 slash commands: `/session`, `/beat`, `/mix`, `/sounddesign`
136
- - **Installer** with auto-detection of Ableton paths on macOS and Windows
137
- - **Live 12 modern note API** support: note IDs, probability, velocity_deviation
138
- - **JSON over TCP** protocol on port 9878 with structured error codes
3
+ ## 1.5.0Agentic 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