livepilot 1.0.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 +33 -0
- package/LICENSE +21 -0
- package/README.md +409 -0
- package/bin/livepilot.js +390 -0
- package/installer/install.js +95 -0
- package/installer/paths.js +79 -0
- package/mcp_server/__init__.py +2 -0
- package/mcp_server/__main__.py +5 -0
- package/mcp_server/connection.py +210 -0
- package/mcp_server/memory/__init__.py +5 -0
- package/mcp_server/memory/technique_store.py +296 -0
- package/mcp_server/server.py +87 -0
- package/mcp_server/tools/__init__.py +1 -0
- package/mcp_server/tools/arrangement.py +407 -0
- package/mcp_server/tools/browser.py +86 -0
- package/mcp_server/tools/clips.py +218 -0
- package/mcp_server/tools/devices.py +256 -0
- package/mcp_server/tools/memory.py +198 -0
- package/mcp_server/tools/mixing.py +121 -0
- package/mcp_server/tools/notes.py +269 -0
- package/mcp_server/tools/scenes.py +89 -0
- package/mcp_server/tools/tracks.py +175 -0
- package/mcp_server/tools/transport.py +117 -0
- package/package.json +37 -0
- package/plugin/agents/livepilot-producer/AGENT.md +62 -0
- package/plugin/commands/beat.md +18 -0
- package/plugin/commands/memory.md +22 -0
- package/plugin/commands/mix.md +15 -0
- package/plugin/commands/session.md +13 -0
- package/plugin/commands/sounddesign.md +16 -0
- package/plugin/plugin.json +19 -0
- package/plugin/skills/livepilot-core/SKILL.md +208 -0
- package/plugin/skills/livepilot-core/references/ableton-workflow-patterns.md +831 -0
- package/plugin/skills/livepilot-core/references/device-atlas/00-index.md +110 -0
- package/plugin/skills/livepilot-core/references/device-atlas/distortion-and-character.md +687 -0
- package/plugin/skills/livepilot-core/references/device-atlas/drums-and-percussion.md +753 -0
- package/plugin/skills/livepilot-core/references/device-atlas/dynamics-and-punch.md +525 -0
- package/plugin/skills/livepilot-core/references/device-atlas/eq-and-filtering.md +402 -0
- package/plugin/skills/livepilot-core/references/device-atlas/midi-tools.md +963 -0
- package/plugin/skills/livepilot-core/references/device-atlas/movement-and-modulation.md +874 -0
- package/plugin/skills/livepilot-core/references/device-atlas/space-and-depth.md +571 -0
- package/plugin/skills/livepilot-core/references/device-atlas/spectral-and-weird.md +714 -0
- package/plugin/skills/livepilot-core/references/device-atlas/synths-native.md +953 -0
- package/plugin/skills/livepilot-core/references/m4l-devices.md +352 -0
- package/plugin/skills/livepilot-core/references/memory-guide.md +107 -0
- package/plugin/skills/livepilot-core/references/midi-recipes.md +402 -0
- package/plugin/skills/livepilot-core/references/mixing-patterns.md +578 -0
- package/plugin/skills/livepilot-core/references/overview.md +209 -0
- package/plugin/skills/livepilot-core/references/sound-design.md +392 -0
- package/remote_script/LivePilot/__init__.py +42 -0
- package/remote_script/LivePilot/arrangement.py +693 -0
- package/remote_script/LivePilot/browser.py +424 -0
- package/remote_script/LivePilot/clips.py +211 -0
- package/remote_script/LivePilot/devices.py +596 -0
- package/remote_script/LivePilot/diagnostics.py +198 -0
- package/remote_script/LivePilot/mixing.py +194 -0
- package/remote_script/LivePilot/notes.py +339 -0
- package/remote_script/LivePilot/router.py +74 -0
- package/remote_script/LivePilot/scenes.py +99 -0
- package/remote_script/LivePilot/server.py +293 -0
- package/remote_script/LivePilot/tracks.py +268 -0
- package/remote_script/LivePilot/transport.py +151 -0
- package/remote_script/LivePilot/utils.py +123 -0
- package/requirements.txt +2 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 1.0.0 — LivePilot
|
|
4
|
+
|
|
5
|
+
**AI copilot for Ableton Live 12 — 104 MCP tools for real-time music production.**
|
|
6
|
+
|
|
7
|
+
### Core
|
|
8
|
+
- 104 MCP tools across 10 domains: transport, tracks, clips, notes, devices, scenes, mixing, browser, arrangement, memory
|
|
9
|
+
- Remote Script using Ableton's official Live Object Model API (ControlSurface base class)
|
|
10
|
+
- JSON over TCP, newline-delimited, port 9878
|
|
11
|
+
- Structured errors with codes: INDEX_ERROR, NOT_FOUND, INVALID_PARAM, STATE_ERROR, TIMEOUT, INTERNAL
|
|
12
|
+
|
|
13
|
+
### Browser & Device Loading
|
|
14
|
+
- Breadth-first device search with exact-match priority
|
|
15
|
+
- Plugin browser support (AU/VST/AUv3) via `search_browser("plugins")`
|
|
16
|
+
- Max for Live browser via `search_browser("max_for_live")`
|
|
17
|
+
- URI-based loading with category hint parsing for fast resolution
|
|
18
|
+
- Case-insensitive parameter name matching
|
|
19
|
+
|
|
20
|
+
### Arrangement
|
|
21
|
+
- Full arrangement view support: create clips, add/remove/modify notes, automation envelopes
|
|
22
|
+
- Automation on device parameters, volume, panning, and sends
|
|
23
|
+
- Support for return tracks and master track across all tools
|
|
24
|
+
|
|
25
|
+
### Plugin
|
|
26
|
+
- 5 slash commands: /beat, /mix, /sounddesign, /session, /memory
|
|
27
|
+
- Producer agent for autonomous multi-step tasks
|
|
28
|
+
- Technique memory system (learn, recall, replay, favorite)
|
|
29
|
+
- Built-in Device Atlas covering native Ableton instruments and effects
|
|
30
|
+
|
|
31
|
+
### Installer
|
|
32
|
+
- Auto-detects Ableton Remote Scripts path on macOS and Windows
|
|
33
|
+
- Copies Remote Script files, verifies installation
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Pilot Studio
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
```
|
|
2
|
+
██╗ ██╗██╗ ██╗███████╗██████╗ ██╗██╗ ██████╗ ████████╗
|
|
3
|
+
██║ ██║██║ ██║██╔════╝██╔══██╗██║██║ ██╔═══██╗╚══██╔══╝
|
|
4
|
+
██║ ██║██║ ██║█████╗ ██████╔╝██║██║ ██║ ██║ ██║
|
|
5
|
+
██║ ██║╚██╗ ██╔╝██╔══╝ ██╔═══╝ ██║██║ ██║ ██║ ██║
|
|
6
|
+
███████╗██║ ╚████╔╝ ███████╗██║ ██║███████╗╚██████╔╝ ██║
|
|
7
|
+
╚══════╝╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
[](LICENSE)
|
|
11
|
+
[](https://github.com/dreamrec/LivePilot/actions/workflows/ci.yml)
|
|
12
|
+
[](https://github.com/dreamrec/LivePilot/stargazers)
|
|
13
|
+
|
|
14
|
+
**AI copilot for Ableton Live 12** — 104 MCP tools for music production, sound design, and mixing.
|
|
15
|
+
|
|
16
|
+
Talk to your DAW. Create tracks, program MIDI, load instruments, tweak parameters, arrange songs, and mix — all through natural language. LivePilot connects any MCP-compatible AI client (Claude, Cursor, VS Code Copilot) to Ableton Live and gives it full control over your session.
|
|
17
|
+
|
|
18
|
+
Every command goes through Ableton's official Live Object Model API. No hacks, no injection — the same interface Ableton's own control surfaces use. Everything is deterministic and reversible with undo.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Agent & Technique Memory
|
|
23
|
+
|
|
24
|
+
LivePilot is stateless by default — 104 tools, deterministic execution, no hidden context. The agent layer adds **persistent state** on top: a technique memory system that stores production decisions as typed, searchable, replayable data structures with structured metadata.
|
|
25
|
+
|
|
26
|
+
### How it works
|
|
27
|
+
|
|
28
|
+
The memory system stores five technique types: `beat_pattern`, `device_chain`, `mix_template`, `preference`, and `browser_pin`. Each technique consists of three layers:
|
|
29
|
+
|
|
30
|
+
| Layer | Contents | Purpose |
|
|
31
|
+
|-------|----------|---------|
|
|
32
|
+
| **Identity** | UUID, name, type, tags, timestamps, rating, replay count | Indexing, filtering, sorting |
|
|
33
|
+
| **Qualities** | Structured analysis — summary, mood, genre tags, rhythm feel, harmonic character, sonic texture, production notes, reference points | Search ranking, agent context at decision time |
|
|
34
|
+
| **Payload** | Raw data — MIDI notes, device params, tempo, kit URIs, send levels | Exact replay or adaptation |
|
|
35
|
+
|
|
36
|
+
When you save a technique, the agent collects raw data from Ableton using existing tools (`get_notes`, `get_device_parameters`, etc.) and writes a structured qualities analysis. The qualities are what make search useful — `memory_recall(query="dark heavy 808")` matches against mood, genre tags, sonic texture, and summary fields, not just names.
|
|
37
|
+
|
|
38
|
+
### Three operating modes
|
|
39
|
+
|
|
40
|
+
| Mode | Trigger | Behavior |
|
|
41
|
+
|------|---------|----------|
|
|
42
|
+
| **Informed** (default) | Any creative task | Agent calls `memory_recall`, reads top results' qualities, lets them influence decisions (kit selection, parameter ranges, rhythmic density) without copying |
|
|
43
|
+
| **Fresh** | "ignore my history" / "something new" | Agent skips memory entirely — uses only the shipped reference corpus and its own knowledge |
|
|
44
|
+
| **Explicit recall** | "use that boom bap beat" / "load my reverb chain" | Direct retrieval via `memory_get` → `memory_replay` with `adapt=false` (exact) or `adapt=true` (variation) |
|
|
45
|
+
|
|
46
|
+
The agent consults memory by default but never constrains itself to it. Override is always one sentence away.
|
|
47
|
+
|
|
48
|
+
### Replay architecture
|
|
49
|
+
|
|
50
|
+
`memory_replay` does not execute Ableton commands directly. It returns a structured plan — an ordered list of tool calls (`search_browser`, `load_browser_item`, `create_clip`, `add_notes`, etc.) that the agent then executes through the existing MCP tools. This keeps the memory system decoupled from the Ableton connection and makes replay logic testable without a running DAW.
|
|
51
|
+
|
|
52
|
+
### Building the corpus over time
|
|
53
|
+
|
|
54
|
+
The shipped plugin includes a reference corpus (~2,700 lines): genre-specific drum patterns, chord voicings, sound design recipes, mixing templates, and workflow patterns. This is the baseline — the agent is competent from the first session.
|
|
55
|
+
|
|
56
|
+
The technique memory extends this with user-specific data. As you save techniques, rate them, and tag them, the library becomes a structured representation of your production preferences. The agent reads across saved qualities at decision time — not to copy stored patterns, but to understand tendencies: swing ranges, kit preferences, harmonic language, arrangement density. New output is always generated; the memory informs the generation.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## What You Can Do
|
|
61
|
+
|
|
62
|
+
- **Produce** — Create tracks, load instruments, program drum patterns, bass lines, chord progressions, and melodies
|
|
63
|
+
- **Arrange** — Build full song structures in arrangement view with MIDI editing, cue points, automation, and timeline navigation
|
|
64
|
+
- **Design sounds** — Browse Ableton's library, load presets, tweak every device parameter, chain effects
|
|
65
|
+
- **Mix** — Set levels, panning, sends, and routing across all track types including return tracks and master. Run diagnostics to catch silent tracks and stale solos
|
|
66
|
+
- **Remember and evolve** — Save techniques, build a personal style library, and let the agent learn your taste over time
|
|
67
|
+
- **Iterate fast** — Transpose, humanize, quantize, duplicate, and reshape patterns through conversation
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Quick Start
|
|
72
|
+
|
|
73
|
+
### 1. Install the Remote Script
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
npx -y github:dreamrec/LivePilot --install
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 2. Enable in Ableton
|
|
80
|
+
|
|
81
|
+
Restart Ableton Live, then go to **Preferences > Link, Tempo & MIDI > Control Surface** and select **LivePilot**.
|
|
82
|
+
|
|
83
|
+
### 3. Add to your MCP client
|
|
84
|
+
|
|
85
|
+
<details open>
|
|
86
|
+
<summary><strong>Claude Code</strong></summary>
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
claude mcp add LivePilot -- npx -y github:dreamrec/LivePilot
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Or add to `.mcp.json`:
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"mcpServers": {
|
|
97
|
+
"LivePilot": {
|
|
98
|
+
"command": "npx",
|
|
99
|
+
"args": ["-y", "github:dreamrec/LivePilot"]
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Optional:** Install the Claude Code plugin for skills, slash commands, and the producer agent:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
claude plugin add github:dreamrec/LivePilot/plugin
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
</details>
|
|
112
|
+
|
|
113
|
+
<details>
|
|
114
|
+
<summary><strong>Claude Desktop (macOS)</strong></summary>
|
|
115
|
+
|
|
116
|
+
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
117
|
+
|
|
118
|
+
```json
|
|
119
|
+
{
|
|
120
|
+
"mcpServers": {
|
|
121
|
+
"LivePilot": {
|
|
122
|
+
"command": "npx",
|
|
123
|
+
"args": ["-y", "github:dreamrec/LivePilot"]
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Restart Claude Desktop after saving.
|
|
130
|
+
|
|
131
|
+
</details>
|
|
132
|
+
|
|
133
|
+
<details>
|
|
134
|
+
<summary><strong>Claude Desktop (Windows)</strong></summary>
|
|
135
|
+
|
|
136
|
+
On Windows, `npx` can cause EBUSY file-locking errors. Install globally instead:
|
|
137
|
+
|
|
138
|
+
```cmd
|
|
139
|
+
npm install -g github:dreamrec/LivePilot
|
|
140
|
+
livepilot --install
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Add to `%APPDATA%\Claude\claude_desktop_config.json`:
|
|
144
|
+
|
|
145
|
+
```json
|
|
146
|
+
{
|
|
147
|
+
"mcpServers": {
|
|
148
|
+
"LivePilot": {
|
|
149
|
+
"command": "livepilot"
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Restart Claude Desktop after saving.
|
|
156
|
+
|
|
157
|
+
</details>
|
|
158
|
+
|
|
159
|
+
<details>
|
|
160
|
+
<summary><strong>Cursor</strong></summary>
|
|
161
|
+
|
|
162
|
+
Open Cursor Settings > MCP Servers > Add Server, then use:
|
|
163
|
+
|
|
164
|
+
- **Name:** LivePilot
|
|
165
|
+
- **Command:** `npx -y github:dreamrec/LivePilot`
|
|
166
|
+
|
|
167
|
+
Or add to `.cursor/mcp.json`:
|
|
168
|
+
|
|
169
|
+
```json
|
|
170
|
+
{
|
|
171
|
+
"mcpServers": {
|
|
172
|
+
"LivePilot": {
|
|
173
|
+
"command": "npx",
|
|
174
|
+
"args": ["-y", "github:dreamrec/LivePilot"]
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
</details>
|
|
181
|
+
|
|
182
|
+
<details>
|
|
183
|
+
<summary><strong>VS Code (Copilot)</strong></summary>
|
|
184
|
+
|
|
185
|
+
Add to `.vscode/mcp.json`:
|
|
186
|
+
|
|
187
|
+
```json
|
|
188
|
+
{
|
|
189
|
+
"servers": {
|
|
190
|
+
"LivePilot": {
|
|
191
|
+
"command": "npx",
|
|
192
|
+
"args": ["-y", "github:dreamrec/LivePilot"]
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
</details>
|
|
199
|
+
|
|
200
|
+
<details>
|
|
201
|
+
<summary><strong>Windsurf</strong></summary>
|
|
202
|
+
|
|
203
|
+
Add to `~/.codeium/windsurf/mcp_config.json`:
|
|
204
|
+
|
|
205
|
+
```json
|
|
206
|
+
{
|
|
207
|
+
"mcpServers": {
|
|
208
|
+
"LivePilot": {
|
|
209
|
+
"command": "npx",
|
|
210
|
+
"args": ["-y", "github:dreamrec/LivePilot"]
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
</details>
|
|
217
|
+
|
|
218
|
+
### 4. Verify connection
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
npx -y github:dreamrec/LivePilot --status
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## 104 Tools Across 10 Domains
|
|
227
|
+
|
|
228
|
+
| Domain | Tools | What you can do |
|
|
229
|
+
|--------|:-----:|-----------------|
|
|
230
|
+
| **Transport** | 12 | Play/stop, tempo, time signature, loop, undo/redo, metronome, diagnostics |
|
|
231
|
+
| **Tracks** | 14 | Create MIDI/audio/return tracks, name, color, mute, solo, arm, group fold, input monitoring |
|
|
232
|
+
| **Clips** | 11 | Create, delete, duplicate, fire, stop, loop settings, launch mode, warp mode |
|
|
233
|
+
| **Notes** | 8 | Add/get/remove/modify MIDI notes, transpose, quantize, duplicate |
|
|
234
|
+
| **Devices** | 12 | Load instruments & effects, tweak parameters, rack chains, presets — works on regular, return, and master tracks |
|
|
235
|
+
| **Scenes** | 8 | Create, delete, duplicate, fire, rename, color, per-scene tempo |
|
|
236
|
+
| **Mixing** | 8 | Volume, pan, sends, routing — return tracks and master fully supported |
|
|
237
|
+
| **Browser** | 4 | Search Ableton's library, browse categories, load presets |
|
|
238
|
+
| **Arrangement** | 19 | Create clips, full MIDI note CRUD, cue points, recording, automation |
|
|
239
|
+
| **Memory** | 8 | Save, recall, replay, and manage production techniques |
|
|
240
|
+
|
|
241
|
+
<details>
|
|
242
|
+
<summary><strong>Full tool list</strong></summary>
|
|
243
|
+
|
|
244
|
+
### Transport (12)
|
|
245
|
+
`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`
|
|
246
|
+
|
|
247
|
+
### Tracks (14)
|
|
248
|
+
`get_track_info` · `create_midi_track` · `create_audio_track` · `create_return_track` · `delete_track` · `duplicate_track` · `set_track_name` · `set_track_color` · `set_track_mute` · `set_track_solo` · `set_track_arm` · `stop_track_clips` · `set_group_fold` · `set_track_input_monitoring`
|
|
249
|
+
|
|
250
|
+
### Clips (11)
|
|
251
|
+
`get_clip_info` · `create_clip` · `delete_clip` · `duplicate_clip` · `fire_clip` · `stop_clip` · `set_clip_name` · `set_clip_color` · `set_clip_loop` · `set_clip_launch` · `set_clip_warp_mode`
|
|
252
|
+
|
|
253
|
+
### Notes (8)
|
|
254
|
+
`add_notes` · `get_notes` · `remove_notes` · `remove_notes_by_id` · `modify_notes` · `duplicate_notes` · `transpose_notes` · `quantize_clip`
|
|
255
|
+
|
|
256
|
+
### Devices (12)
|
|
257
|
+
`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`
|
|
258
|
+
|
|
259
|
+
### Scenes (8)
|
|
260
|
+
`get_scenes_info` · `create_scene` · `delete_scene` · `duplicate_scene` · `fire_scene` · `set_scene_name` · `set_scene_color` · `set_scene_tempo`
|
|
261
|
+
|
|
262
|
+
### Mixing (8)
|
|
263
|
+
`set_track_volume` · `set_track_pan` · `set_track_send` · `get_return_tracks` · `get_master_track` · `set_master_volume` · `get_track_routing` · `set_track_routing`
|
|
264
|
+
|
|
265
|
+
### Browser (4)
|
|
266
|
+
`get_browser_tree` · `get_browser_items` · `search_browser` · `load_browser_item`
|
|
267
|
+
|
|
268
|
+
### Arrangement (19)
|
|
269
|
+
`get_arrangement_clips` · `create_arrangement_clip` · `add_arrangement_notes` · `get_arrangement_notes` · `remove_arrangement_notes` · `remove_arrangement_notes_by_id` · `modify_arrangement_notes` · `duplicate_arrangement_notes` · `transpose_arrangement_notes` · `set_arrangement_clip_name` · `set_arrangement_automation` · `back_to_arranger` · `jump_to_time` · `capture_midi` · `start_recording` · `stop_recording` · `get_cue_points` · `jump_to_cue` · `toggle_cue_point`
|
|
270
|
+
|
|
271
|
+
### Memory (8)
|
|
272
|
+
`memory_learn` · `memory_recall` · `memory_get` · `memory_replay` · `memory_list` · `memory_favorite` · `memory_update` · `memory_delete`
|
|
273
|
+
|
|
274
|
+
</details>
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Plugin
|
|
279
|
+
|
|
280
|
+
The plugin adds a skill, an autonomous agent, and 5 slash commands on top of the MCP tools.
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
claude plugin add github:dreamrec/LivePilot/plugin
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Commands
|
|
287
|
+
|
|
288
|
+
| Command | Description |
|
|
289
|
+
|---------|-------------|
|
|
290
|
+
| `/session` | Full session overview with diagnostics |
|
|
291
|
+
| `/beat` | Guided beat creation — genre, tempo, instrumentation |
|
|
292
|
+
| `/mix` | Mixing assistant — levels, panning, sends |
|
|
293
|
+
| `/sounddesign` | Sound design workflow — instruments, effects, presets |
|
|
294
|
+
| `/memory` | Browse, search, and manage your technique library |
|
|
295
|
+
|
|
296
|
+
### Producer Agent
|
|
297
|
+
|
|
298
|
+
Autonomous agent that executes multi-step production tasks from high-level descriptions. Handles the full pipeline: session planning, track creation, instrument loading, MIDI programming, effect configuration, and mixing — with mandatory health checks between each stage to verify every track produces audible output.
|
|
299
|
+
|
|
300
|
+
The agent ships with a 2,700-line reference corpus covering genre-specific drum patterns, chord voicings, sound design parameter recipes, mixing templates, and song structures. It consults the technique memory by default (see above), and can be overridden to work from a clean slate.
|
|
301
|
+
|
|
302
|
+
### Core Skill
|
|
303
|
+
|
|
304
|
+
`livepilot-core` encodes operational discipline for the 104 tools: read state before writing, verify after every mutation, validate instrument loading (empty Drum Racks produce silence), never hallucinate device names (always `search_browser` first), use negative track indices for return tracks. Without it, an LLM with access to the tools will produce silent tracks and load wrong devices.
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## How It Compares
|
|
309
|
+
|
|
310
|
+
| Feature | LivePilot | [AbletonMCP](https://github.com/ahujasid/ableton-mcp) | [Ableton MCP Extended](https://github.com/uisato/ableton-mcp-extended) |
|
|
311
|
+
|---------|:---------:|:---------:|:---------:|
|
|
312
|
+
| **Tools** | 104 | ~20 | ~50 |
|
|
313
|
+
| **Arrangement view** | Full (clips, notes, cue points, automation) | No | Partial (automation "not perfect yet") |
|
|
314
|
+
| **MIDI note editing** | Full CRUD with note IDs, probability, velocity deviation | Basic add/get | Add/get/modify |
|
|
315
|
+
| **Device control** | Load, params, batch edit, rack chains, presets, Simpler modes | Load, basic params | Load, params |
|
|
316
|
+
| **Browser search** | Tree navigation, path filtering, URI-based loading | Basic search | Search with categories |
|
|
317
|
+
| **Mixing** | Volume, pan, sends, routing, master, diagnostics | Volume, pan | Volume, pan, sends |
|
|
318
|
+
| **Undo support** | Full (begin/end_undo_step wrapping) | No | Partial |
|
|
319
|
+
| **Session diagnostics** | Built-in health checks (armed tracks, solos, silent tracks) | No | No |
|
|
320
|
+
| **Per-note probability** | Yes (Live 12 API) | No | No |
|
|
321
|
+
| **Plugin/skills** | Plugin with 5 commands + producer agent | No | No |
|
|
322
|
+
| **Voice generation** | No | No | Yes (ElevenLabs) |
|
|
323
|
+
| **UDP low-latency mode** | No (TCP, reliable) | No | Yes (experimental) |
|
|
324
|
+
| **Protocol** | JSON/TCP, single-client, structured errors | JSON/TCP | JSON/TCP + UDP |
|
|
325
|
+
| **Installation** | Auto-detect CLI (`--install`) | Manual copy | Manual copy |
|
|
326
|
+
| **Live version** | Live 12 (modern note API) | Live 11+ | Live 11+ |
|
|
327
|
+
| **License** | MIT | MIT | MIT |
|
|
328
|
+
|
|
329
|
+
LivePilot focuses on **comprehensive, deterministic control** with safety nets (undo wrapping, diagnostics, verification patterns). It trades real-time parameter streaming (Extended's UDP mode) and external service integration (Extended's ElevenLabs) for deeper coverage of Ableton's core operations — especially arrangement, device management, and MIDI editing with Live 12's modern note API.
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Architecture
|
|
334
|
+
|
|
335
|
+
```
|
|
336
|
+
AI Client
|
|
337
|
+
│ MCP Protocol (stdio)
|
|
338
|
+
▼
|
|
339
|
+
┌─────────────────────┐
|
|
340
|
+
│ MCP Server │ Python (FastMCP)
|
|
341
|
+
│ mcp_server/ │ Input validation, auto-reconnect
|
|
342
|
+
└────────┬────────────┘
|
|
343
|
+
│ JSON over TCP (port 9878)
|
|
344
|
+
▼
|
|
345
|
+
┌─────────────────────┐
|
|
346
|
+
│ Remote Script │ Runs inside Ableton's Python
|
|
347
|
+
│ remote_script/ │ Thread-safe command queue
|
|
348
|
+
│ LivePilot/ │ ControlSurface base class
|
|
349
|
+
└─────────────────────┘
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
All commands execute on Ableton's main thread via `schedule_message` — the same thread that handles the UI. This guarantees consistency with what you see on screen. Single-client TCP by design, because Ableton's Live Object Model is not thread-safe.
|
|
353
|
+
|
|
354
|
+
**Structured errors** with codes (`INDEX_ERROR`, `NOT_FOUND`, `INVALID_PARAM`, `STATE_ERROR`, `TIMEOUT`, `INTERNAL`) so the AI can understand what went wrong and recover.
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## Compatibility
|
|
359
|
+
|
|
360
|
+
| | Live 12 (all editions) | Suite only |
|
|
361
|
+
|---|:---:|:---:|
|
|
362
|
+
| Transport, tracks, clips, scenes, mixing | Yes | — |
|
|
363
|
+
| MIDI notes (add, modify, remove, probability) | Yes | — |
|
|
364
|
+
| Device parameters, effects, browser | Yes | — |
|
|
365
|
+
| Arrangement (clips, notes, cue points) | Yes | — |
|
|
366
|
+
| Stock instruments (Drift, Meld, Wavetable) | — | Yes |
|
|
367
|
+
| Max for Live devices | — | Yes |
|
|
368
|
+
| Third-party VST/AU plugins | Yes | — |
|
|
369
|
+
|
|
370
|
+
**Requirements:** Ableton Live 12 · Python 3.10+ · Node.js 18+
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
## CLI
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
npx livepilot # Start MCP server (stdio)
|
|
378
|
+
npx livepilot --install # Install Remote Script
|
|
379
|
+
npx livepilot --uninstall # Remove Remote Script
|
|
380
|
+
npx livepilot --status # Check Ableton connection
|
|
381
|
+
npx livepilot --doctor # Full diagnostic check
|
|
382
|
+
npx livepilot --version # Show version
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
## Documentation
|
|
388
|
+
|
|
389
|
+
**[Read the full manual](docs/manual/index.md)** — Getting started, tool reference, production workflows, MIDI programming, sound design, mixing, and troubleshooting.
|
|
390
|
+
|
|
391
|
+
---
|
|
392
|
+
|
|
393
|
+
## Development
|
|
394
|
+
|
|
395
|
+
```bash
|
|
396
|
+
git clone https://github.com/dreamrec/LivePilot.git
|
|
397
|
+
cd LivePilot
|
|
398
|
+
python3 -m venv .venv
|
|
399
|
+
.venv/bin/pip install -r requirements.txt
|
|
400
|
+
.venv/bin/pytest tests/ -v
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
## Contributing
|
|
404
|
+
|
|
405
|
+
Contributions welcome. Please [open an issue](https://github.com/dreamrec/LivePilot/issues) first to discuss what you'd like to change.
|
|
406
|
+
|
|
407
|
+
## License
|
|
408
|
+
|
|
409
|
+
[MIT](LICENSE) — Pilot Studio
|