livepilot 1.9.9 → 1.9.12
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/.claude-plugin/marketplace.json +1 -1
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +92 -0
- package/CODE_OF_CONDUCT.md +27 -0
- package/CONTRIBUTING.md +131 -0
- package/README.md +112 -387
- package/SECURITY.md +48 -0
- package/bin/livepilot.js +42 -2
- package/livepilot/.Codex-plugin/plugin.json +8 -0
- package/livepilot/.claude-plugin/plugin.json +1 -1
- package/livepilot/commands/beat.md +18 -6
- package/livepilot/commands/sounddesign.md +6 -5
- package/livepilot/skills/livepilot-core/SKILL.md +36 -13
- package/livepilot/skills/livepilot-core/references/overview.md +1 -1
- package/livepilot/skills/livepilot-release/SKILL.md +11 -8
- package/m4l_device/LivePilot_Analyzer.amxd +0 -0
- package/m4l_device/LivePilot_Analyzer.maxpat +378 -4
- package/m4l_device/capture_2026_04_07_192216.wav +0 -0
- package/m4l_device/livepilot_bridge.js +487 -184
- package/mcp_server/__init__.py +1 -1
- package/mcp_server/connection.py +40 -1
- package/mcp_server/curves.py +5 -1
- package/mcp_server/m4l_bridge.py +93 -26
- package/mcp_server/server.py +26 -31
- package/mcp_server/tools/_perception_engine.py +26 -3
- package/mcp_server/tools/_theory_engine.py +36 -5
- package/mcp_server/tools/analyzer.py +74 -18
- package/mcp_server/tools/arrangement.py +20 -5
- package/mcp_server/tools/automation.py +56 -1
- package/mcp_server/tools/devices.py +201 -13
- package/mcp_server/tools/generative.py +8 -1
- package/mcp_server/tools/harmony.py +16 -3
- package/mcp_server/tools/midi_io.py +22 -4
- package/mcp_server/tools/notes.py +4 -1
- package/mcp_server/tools/perception.py +27 -1
- package/mcp_server/tools/scenes.py +4 -1
- package/mcp_server/tools/theory.py +23 -8
- package/mcp_server/tools/transport.py +16 -6
- package/package.json +1 -1
- package/remote_script/LivePilot/__init__.py +1 -1
- package/remote_script/LivePilot/arrangement.py +25 -134
- package/remote_script/LivePilot/browser.py +19 -8
- package/remote_script/LivePilot/clip_automation.py +5 -4
- package/remote_script/LivePilot/clips.py +14 -6
- package/remote_script/LivePilot/devices.py +6 -3
- package/remote_script/LivePilot/diagnostics.py +81 -5
- package/remote_script/LivePilot/router.py +22 -0
- package/remote_script/LivePilot/server.py +41 -17
- package/remote_script/LivePilot/tracks.py +7 -2
- package/remote_script/LivePilot/transport.py +3 -3
- package/requirements.txt +3 -1
package/README.md
CHANGED
|
@@ -7,15 +7,27 @@
|
|
|
7
7
|
╚══════╝╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝
|
|
8
8
|
```
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
<p align="center">
|
|
11
|
+
<a href="https://github.com/dreamrec/LivePilot/actions"><img src="https://img.shields.io/github/actions/workflow/status/dreamrec/LivePilot/ci.yml?style=flat-square&label=CI" alt="CI"></a>
|
|
12
|
+
<a href="https://www.npmjs.com/package/livepilot"><img src="https://img.shields.io/npm/v/livepilot?style=flat-square&color=blue" alt="npm version"></a>
|
|
13
|
+
<a href="https://www.npmjs.com/package/livepilot"><img src="https://img.shields.io/npm/dm/livepilot?style=flat-square" alt="npm downloads"></a>
|
|
14
|
+
<a href="https://github.com/dreamrec/LivePilot/blob/main/LICENSE"><img src="https://img.shields.io/github/license/dreamrec/LivePilot?style=flat-square" alt="License"></a>
|
|
15
|
+
<a href="https://github.com/dreamrec/LivePilot/releases"><img src="https://img.shields.io/github/v/release/dreamrec/LivePilot?style=flat-square&label=release" alt="Latest Release"></a>
|
|
16
|
+
</p>
|
|
14
17
|
|
|
18
|
+
<p align="center">
|
|
19
|
+
An agentic production system for Ableton Live 12.<br>
|
|
20
|
+
178 tools. Device atlas. Spectral perception. Technique memory.
|
|
21
|
+
</p>
|
|
15
22
|
|
|
16
23
|
<br>
|
|
17
24
|
|
|
18
|
-
|
|
25
|
+
> [!NOTE]
|
|
26
|
+
> LivePilot works with **any MCP client** — Claude Code, Claude Desktop, Cursor, VS Code, Windsurf.
|
|
27
|
+
> All tools execute on Ableton's main thread through the official Live Object Model API.
|
|
28
|
+
> Everything is reversible with undo.
|
|
29
|
+
|
|
30
|
+
<br>
|
|
19
31
|
|
|
20
32
|
## Architecture
|
|
21
33
|
|
|
@@ -50,17 +62,16 @@ Neo-Riemannian harmony. Euclidean rhythm. Species counterpoint.
|
|
|
50
62
|
└─────────────────────────────────────────────────────────────┘
|
|
51
63
|
```
|
|
52
64
|
|
|
53
|
-
The atlas gives the AI knowledge of every device in Ableton's library —
|
|
65
|
+
The **atlas** gives the AI knowledge of every device in Ableton's library —
|
|
54
66
|
real names, real URIs, real parameters.
|
|
55
67
|
|
|
56
|
-
The analyzer gives it ears — spectral data from the master bus
|
|
68
|
+
The **analyzer** gives it ears — spectral data from the master bus
|
|
57
69
|
via a Max for Live device.
|
|
58
70
|
|
|
59
|
-
The memory gives it history — a searchable library of production decisions
|
|
71
|
+
The **memory** gives it history — a searchable library of production decisions
|
|
60
72
|
that persists across sessions.
|
|
61
73
|
|
|
62
|
-
All three feed into 178 deterministic tools that execute on Ableton's main thread
|
|
63
|
-
through the official Live Object Model API. Everything is reversible with undo.
|
|
74
|
+
All three feed into 178 deterministic tools that execute on Ableton's main thread.
|
|
64
75
|
|
|
65
76
|
<br>
|
|
66
77
|
|
|
@@ -68,37 +79,33 @@ through the official Live Object Model API. Everything is reversible with undo.
|
|
|
68
79
|
|
|
69
80
|
## Tools
|
|
70
81
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
### CORE
|
|
74
|
-
|
|
75
|
-
The foundation. Session control, MIDI, device management, mixing.
|
|
76
|
-
Every tool maps directly to an LOM call — no abstraction, no guessing.
|
|
82
|
+
178 tools across 17 domains. Highlights below — [full catalog here](docs/manual/tool-catalog.md).
|
|
77
83
|
|
|
78
84
|
<br>
|
|
79
85
|
|
|
80
|
-
|
|
81
|
-
|
|
86
|
+
### Core
|
|
87
|
+
|
|
88
|
+
| Domain | # | What it covers |
|
|
89
|
+
|--------|:-:|----------------|
|
|
82
90
|
| Transport | 12 | playback, tempo, time sig, loop, metronome, undo/redo, cue points, diagnostics |
|
|
83
|
-
| Tracks | 17 | create MIDI/audio/return, delete, duplicate, arm, mute, solo, color,
|
|
91
|
+
| Tracks | 17 | create MIDI/audio/return, delete, duplicate, arm, mute, solo, color, freeze, flatten |
|
|
84
92
|
| Clips | 11 | create, delete, duplicate, fire, stop, loop, launch mode, warp mode, quantize |
|
|
85
93
|
| Notes | 8 | add/get/remove/modify MIDI notes, transpose, duplicate, per-note probability |
|
|
86
|
-
| Devices | 15 | load by name or URI, get/set parameters, batch edit, racks, chains, presets, plugin
|
|
87
|
-
| Scenes | 12 | create, delete, duplicate, fire, name, color, tempo, scene matrix
|
|
94
|
+
| Devices | 15 | load by name or URI, get/set parameters, batch edit, racks, chains, presets, plugin deep control |
|
|
95
|
+
| Scenes | 12 | create, delete, duplicate, fire, name, color, tempo, scene matrix |
|
|
88
96
|
| Browser | 4 | search library, browse tree, load items, filter by category |
|
|
89
97
|
| Mixing | 11 | volume, pan, sends, routing, meters, return tracks, master, full mix snapshot |
|
|
98
|
+
| Arrangement | 19 | timeline clips, arrangement notes, arrangement automation, recording, cue points |
|
|
90
99
|
|
|
91
100
|
<br>
|
|
92
101
|
|
|
93
|
-
###
|
|
102
|
+
### Perception — 29 tools `[M4L]`
|
|
94
103
|
|
|
95
104
|
The M4L Analyzer sits on the master track. UDP 9880 carries spectral data
|
|
96
105
|
from Max to the server. OSC 9881 sends commands back.
|
|
97
106
|
|
|
98
|
-
|
|
99
|
-
and closes the feedback loop.
|
|
100
|
-
|
|
101
|
-
<br>
|
|
107
|
+
> [!TIP]
|
|
108
|
+
> All 149 core tools work without the analyzer — it adds 29 more and closes the feedback loop.
|
|
102
109
|
|
|
103
110
|
```
|
|
104
111
|
SPECTRAL ─────── 8-band frequency decomposition (sub → air)
|
|
@@ -116,18 +123,16 @@ SIMPLER ──────── replace / load samples
|
|
|
116
123
|
|
|
117
124
|
WARP ─────────── get / add / move / remove markers
|
|
118
125
|
tempo manipulation at the sample level
|
|
119
|
-
|
|
120
|
-
PREVIEW ──────── scrub at beat position
|
|
121
|
-
stop scrub
|
|
122
126
|
```
|
|
123
127
|
|
|
124
128
|
<br>
|
|
125
129
|
|
|
126
|
-
###
|
|
130
|
+
### Intelligence
|
|
127
131
|
|
|
128
|
-
<
|
|
132
|
+
<details>
|
|
133
|
+
<summary><strong>Theory — 7 tools</strong></summary>
|
|
129
134
|
|
|
130
|
-
|
|
135
|
+
<br>
|
|
131
136
|
|
|
132
137
|
Krumhansl-Schmuckler key detection with 7 mode profiles:
|
|
133
138
|
major, minor, dorian, phrygian, lydian, mixolydian, locrian.
|
|
@@ -148,9 +153,12 @@ identify_scale harmonize_melody generate_countermelody
|
|
|
148
153
|
transpose_smart
|
|
149
154
|
```
|
|
150
155
|
|
|
151
|
-
|
|
156
|
+
</details>
|
|
157
|
+
|
|
158
|
+
<details>
|
|
159
|
+
<summary><strong>Harmony — 4 tools</strong></summary>
|
|
152
160
|
|
|
153
|
-
|
|
161
|
+
<br>
|
|
154
162
|
|
|
155
163
|
Neo-Riemannian PRL transforms on the Tonnetz.
|
|
156
164
|
|
|
@@ -175,9 +183,12 @@ navigate_tonnetz find_voice_leading_path
|
|
|
175
183
|
classify_progression suggest_chromatic_mediants
|
|
176
184
|
```
|
|
177
185
|
|
|
178
|
-
|
|
186
|
+
</details>
|
|
179
187
|
|
|
180
|
-
|
|
188
|
+
<details>
|
|
189
|
+
<summary><strong>Generative — 5 tools</strong></summary>
|
|
190
|
+
|
|
191
|
+
<br>
|
|
181
192
|
|
|
182
193
|
**Euclidean Rhythm** — Bjorklund distributes N pulses across M steps.
|
|
183
194
|
Bresenham's line algorithm applied to rhythm.
|
|
@@ -191,17 +202,12 @@ E(7,16) = Brazilian necklace ×·×·×××·×·×·×××·
|
|
|
191
202
|
Layer multiple patterns at different pitches for polyrhythmic textures.
|
|
192
203
|
|
|
193
204
|
**Tintinnabuli** (Arvo Pärt) — for each melody note, find the nearest tone
|
|
194
|
-
of a specified triad
|
|
195
|
-
the triad while the M-voice moves stepwise. Two voices, one rule, infinite music.
|
|
205
|
+
of a specified triad. Two voices, one rule, infinite music.
|
|
196
206
|
|
|
197
207
|
**Phase Shifting** (Steve Reich) — identical voices with accumulating timing drift.
|
|
198
|
-
Voice 0 plays straight. Each subsequent voice shifts by N beats per repetition.
|
|
199
208
|
They start in unison, gradually separate, and eventually realign.
|
|
200
209
|
|
|
201
210
|
**Additive Process** (Philip Glass) — melody unfolds note by note.
|
|
202
|
-
Forward: 1, then 1-2, then 1-2-3.
|
|
203
|
-
Backward: full melody, then remove from front.
|
|
204
|
-
Both: forward then backward.
|
|
205
211
|
The structure *is* the composition.
|
|
206
212
|
|
|
207
213
|
```
|
|
@@ -210,9 +216,12 @@ generate_tintinnabuli generate_phase_shift
|
|
|
210
216
|
generate_additive_process
|
|
211
217
|
```
|
|
212
218
|
|
|
213
|
-
|
|
219
|
+
</details>
|
|
220
|
+
|
|
221
|
+
<details>
|
|
222
|
+
<summary><strong>Automation — 8 tools</strong></summary>
|
|
214
223
|
|
|
215
|
-
|
|
224
|
+
<br>
|
|
216
225
|
|
|
217
226
|
16 curve types in 4 categories:
|
|
218
227
|
|
|
@@ -241,8 +250,7 @@ washout vinyl_crackle stereo_narrow
|
|
|
241
250
|
|
|
242
251
|
Perception-action loop: `analyze_for_automation` reads the spectrum
|
|
243
252
|
and device chain, suggests what to automate, and maps each suggestion
|
|
244
|
-
to a recipe.
|
|
245
|
-
to automate based on what it hears.
|
|
253
|
+
to a recipe.
|
|
246
254
|
|
|
247
255
|
```
|
|
248
256
|
get_clip_automation set_clip_automation clear_clip_automation
|
|
@@ -250,14 +258,13 @@ apply_automation_shape apply_automation_recipe get_automation_recipes
|
|
|
250
258
|
generate_automation_curve analyze_for_automation
|
|
251
259
|
```
|
|
252
260
|
|
|
253
|
-
|
|
261
|
+
</details>
|
|
254
262
|
|
|
255
|
-
|
|
263
|
+
<details>
|
|
264
|
+
<summary><strong>Memory — 8 tools</strong></summary>
|
|
256
265
|
|
|
257
266
|
<br>
|
|
258
267
|
|
|
259
|
-
#### Memory — 8 tools
|
|
260
|
-
|
|
261
268
|
Persistent technique library across sessions.
|
|
262
269
|
|
|
263
270
|
Five types: `beat_pattern` · `device_chain` · `mix_template` · `preference` · `browser_pin`
|
|
@@ -268,16 +275,18 @@ Each stores:
|
|
|
268
275
|
- **Payload** — raw MIDI, device params, tempo, URIs
|
|
269
276
|
|
|
270
277
|
Recall by text query matching mood, genre, texture — not just names.
|
|
271
|
-
Favorite, rate, replay.
|
|
272
278
|
|
|
273
279
|
```
|
|
274
280
|
memory_learn memory_recall memory_list memory_get
|
|
275
281
|
memory_update memory_delete memory_favorite memory_replay
|
|
276
282
|
```
|
|
277
283
|
|
|
278
|
-
|
|
284
|
+
</details>
|
|
285
|
+
|
|
286
|
+
<details>
|
|
287
|
+
<summary><strong>MIDI I/O — 4 tools</strong></summary>
|
|
279
288
|
|
|
280
|
-
|
|
289
|
+
<br>
|
|
281
290
|
|
|
282
291
|
Export session clips to standard .mid files.
|
|
283
292
|
Import .mid into session clips — auto-creates the clip, tempo-aware timing.
|
|
@@ -288,21 +297,39 @@ pitch range, velocity stats, density curve, key estimate.
|
|
|
288
297
|
Piano roll extraction: 2D velocity matrix at configurable resolution
|
|
289
298
|
(default 1/32 note).
|
|
290
299
|
|
|
291
|
-
Dependencies lazy-loaded — graceful error if missing.
|
|
292
|
-
|
|
293
300
|
```
|
|
294
301
|
export_clip_midi import_midi_to_clip
|
|
295
302
|
analyze_midi_file extract_piano_roll
|
|
296
303
|
```
|
|
297
304
|
|
|
305
|
+
</details>
|
|
306
|
+
|
|
307
|
+
<details>
|
|
308
|
+
<summary><strong>Perception — 4 tools</strong></summary>
|
|
309
|
+
|
|
298
310
|
<br>
|
|
299
311
|
|
|
300
|
-
|
|
312
|
+
Offline audio analysis — no M4L required.
|
|
301
313
|
|
|
302
|
-
|
|
314
|
+
```
|
|
315
|
+
analyze_loudness Integrated LUFS, true peak, LRA, streaming compliance
|
|
316
|
+
analyze_spectrum_offline Spectral centroid, rolloff, flatness, 5-band balance
|
|
317
|
+
compare_to_reference Mix vs reference: loudness + spectral delta
|
|
318
|
+
read_audio_metadata Format, duration, sample rate, tags
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
</details>
|
|
303
322
|
|
|
304
323
|
<br>
|
|
305
324
|
|
|
325
|
+
> **[View all 178 tools →](docs/manual/tool-catalog.md)**
|
|
326
|
+
|
|
327
|
+
<br>
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## Install
|
|
332
|
+
|
|
306
333
|
### 1. Remote Script
|
|
307
334
|
|
|
308
335
|
```bash
|
|
@@ -311,8 +338,6 @@ npx livepilot --install
|
|
|
311
338
|
|
|
312
339
|
Restart Ableton → Preferences → Link, Tempo & MIDI → Control Surface → **LivePilot**
|
|
313
340
|
|
|
314
|
-
<br>
|
|
315
|
-
|
|
316
341
|
### 2. MCP Client
|
|
317
342
|
|
|
318
343
|
<details open>
|
|
@@ -419,8 +444,6 @@ Windsurf — `~/.codeium/windsurf/mcp_config.json`:
|
|
|
419
444
|
|
|
420
445
|
</details>
|
|
421
446
|
|
|
422
|
-
<br>
|
|
423
|
-
|
|
424
447
|
### 3. M4L Analyzer (optional)
|
|
425
448
|
|
|
426
449
|
Drag `LivePilot_Analyzer.amxd` onto the master track.
|
|
@@ -428,9 +451,8 @@ Drag `LivePilot_Analyzer.amxd` onto the master track.
|
|
|
428
451
|
Unlocks 32 additional tools: spectral analysis, key detection,
|
|
429
452
|
sample manipulation, deep device introspection, plugin parameter mapping.
|
|
430
453
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
<br>
|
|
454
|
+
> [!IMPORTANT]
|
|
455
|
+
> All core tools work without the analyzer. It adds perception, not dependency.
|
|
434
456
|
|
|
435
457
|
### 4. Verify
|
|
436
458
|
|
|
@@ -448,8 +470,6 @@ npx livepilot --status
|
|
|
448
470
|
claude plugin add github:dreamrec/LivePilot/plugin
|
|
449
471
|
```
|
|
450
472
|
|
|
451
|
-
<br>
|
|
452
|
-
|
|
453
473
|
| Command | What |
|
|
454
474
|
|---------|------|
|
|
455
475
|
| `/session` | Full session overview with diagnostics |
|
|
@@ -458,13 +478,9 @@ claude plugin add github:dreamrec/LivePilot/plugin
|
|
|
458
478
|
| `/sounddesign` | Sound design workflow |
|
|
459
479
|
| `/memory` | Technique library management |
|
|
460
480
|
|
|
461
|
-
<br>
|
|
462
|
-
|
|
463
481
|
**Producer Agent** — autonomous multi-step production.
|
|
464
482
|
Consults memory for style context, searches the atlas for instruments,
|
|
465
483
|
creates tracks, programs MIDI, chains effects, reads the spectrum to verify.
|
|
466
|
-
Ships with a reference corpus (drum patterns, chord voicings,
|
|
467
|
-
sound design recipes, mixing templates).
|
|
468
484
|
|
|
469
485
|
**Core Skill** — operational discipline connecting all three layers.
|
|
470
486
|
Consult atlas before loading. Read analyzer after mixing.
|
|
@@ -474,318 +490,6 @@ Check memory before creative decisions. Verify every mutation.
|
|
|
474
490
|
|
|
475
491
|
---
|
|
476
492
|
|
|
477
|
-
## Full Tool List
|
|
478
|
-
|
|
479
|
-
178 tools across 17 domains.
|
|
480
|
-
|
|
481
|
-
<br>
|
|
482
|
-
|
|
483
|
-
### Transport (12)
|
|
484
|
-
|
|
485
|
-
| Tool | Description |
|
|
486
|
-
|------|-------------|
|
|
487
|
-
| `get_session_info` | Session state: tempo, tracks, scenes, transport |
|
|
488
|
-
| `set_tempo` | Set tempo (20-999 BPM) |
|
|
489
|
-
| `set_time_signature` | Set time signature |
|
|
490
|
-
| `start_playback` | Start from beginning |
|
|
491
|
-
| `stop_playback` | Stop |
|
|
492
|
-
| `continue_playback` | Resume from current position |
|
|
493
|
-
| `toggle_metronome` | Enable/disable click |
|
|
494
|
-
| `set_session_loop` | Set loop start, length, on/off |
|
|
495
|
-
| `undo` | Undo last action |
|
|
496
|
-
| `redo` | Redo |
|
|
497
|
-
| `get_recent_actions` | Recent undo history |
|
|
498
|
-
| `get_session_diagnostics` | Analyze session for issues |
|
|
499
|
-
|
|
500
|
-
<br>
|
|
501
|
-
|
|
502
|
-
### Tracks (17)
|
|
503
|
-
|
|
504
|
-
| Tool | Description |
|
|
505
|
-
|------|-------------|
|
|
506
|
-
| `get_track_info` | Track details: clips, devices, mixer |
|
|
507
|
-
| `create_midi_track` | New MIDI track |
|
|
508
|
-
| `create_audio_track` | New audio track |
|
|
509
|
-
| `create_return_track` | New return track |
|
|
510
|
-
| `delete_track` | Delete a track |
|
|
511
|
-
| `duplicate_track` | Copy track with all content |
|
|
512
|
-
| `set_track_name` | Rename |
|
|
513
|
-
| `set_track_color` | Set color (0-69) |
|
|
514
|
-
| `set_track_mute` | Mute on/off |
|
|
515
|
-
| `set_track_solo` | Solo on/off |
|
|
516
|
-
| `set_track_arm` | Arm for recording |
|
|
517
|
-
| `stop_track_clips` | Stop all clips on track |
|
|
518
|
-
| `set_group_fold` | Fold/unfold group track |
|
|
519
|
-
| `set_track_input_monitoring` | Set monitoring mode |
|
|
520
|
-
| `freeze_track` | Freeze track (render devices to audio) |
|
|
521
|
-
| `flatten_track` | Flatten frozen track (commit audio permanently) |
|
|
522
|
-
| `get_freeze_status` | Check if track is frozen |
|
|
523
|
-
|
|
524
|
-
<br>
|
|
525
|
-
|
|
526
|
-
### Clips (11)
|
|
527
|
-
|
|
528
|
-
| Tool | Description |
|
|
529
|
-
|------|-------------|
|
|
530
|
-
| `get_clip_info` | Clip details: length, loop, launch |
|
|
531
|
-
| `create_clip` | New empty MIDI clip |
|
|
532
|
-
| `delete_clip` | Delete a clip |
|
|
533
|
-
| `duplicate_clip` | Copy to another slot |
|
|
534
|
-
| `fire_clip` | Launch a clip |
|
|
535
|
-
| `stop_clip` | Stop a clip |
|
|
536
|
-
| `set_clip_name` | Rename |
|
|
537
|
-
| `set_clip_color` | Set color |
|
|
538
|
-
| `set_clip_loop` | Loop start, end, on/off |
|
|
539
|
-
| `set_clip_launch` | Launch mode and quantization |
|
|
540
|
-
| `set_clip_warp_mode` | Set warp algorithm |
|
|
541
|
-
|
|
542
|
-
<br>
|
|
543
|
-
|
|
544
|
-
### Notes (8)
|
|
545
|
-
|
|
546
|
-
| Tool | Description |
|
|
547
|
-
|------|-------------|
|
|
548
|
-
| `add_notes` | Add MIDI notes with velocity, probability |
|
|
549
|
-
| `get_notes` | Read notes from a region |
|
|
550
|
-
| `remove_notes` | Remove notes in a region |
|
|
551
|
-
| `remove_notes_by_id` | Remove specific notes by ID |
|
|
552
|
-
| `modify_notes` | Change pitch, time, velocity, probability |
|
|
553
|
-
| `duplicate_notes` | Copy notes to new position |
|
|
554
|
-
| `transpose_notes` | Shift pitch by semitones |
|
|
555
|
-
| `quantize_clip` | Quantize to grid |
|
|
556
|
-
|
|
557
|
-
<br>
|
|
558
|
-
|
|
559
|
-
### Devices (12)
|
|
560
|
-
|
|
561
|
-
| Tool | Description |
|
|
562
|
-
|------|-------------|
|
|
563
|
-
| `get_device_info` | Device name, class, parameters |
|
|
564
|
-
| `get_device_parameters` | All params with names, values, ranges |
|
|
565
|
-
| `set_device_parameter` | Set param by name or index |
|
|
566
|
-
| `batch_set_parameters` | Set multiple params in one call |
|
|
567
|
-
| `toggle_device` | Enable/disable |
|
|
568
|
-
| `delete_device` | Remove from chain |
|
|
569
|
-
| `load_device_by_uri` | Load by browser URI |
|
|
570
|
-
| `find_and_load_device` | Search and load by name |
|
|
571
|
-
| `get_rack_chains` | Get chains in a rack |
|
|
572
|
-
| `set_simpler_playback_mode` | Classic/1-shot/slice |
|
|
573
|
-
| `set_chain_volume` | Set chain volume in rack |
|
|
574
|
-
| `get_device_presets` | List available presets |
|
|
575
|
-
|
|
576
|
-
<br>
|
|
577
|
-
|
|
578
|
-
### Scenes (12)
|
|
579
|
-
|
|
580
|
-
| Tool | Description |
|
|
581
|
-
|------|-------------|
|
|
582
|
-
| `get_scenes_info` | All scenes: name, tempo, color |
|
|
583
|
-
| `create_scene` | New scene |
|
|
584
|
-
| `delete_scene` | Delete a scene |
|
|
585
|
-
| `duplicate_scene` | Copy scene with all clips |
|
|
586
|
-
| `fire_scene` | Launch all clips in scene |
|
|
587
|
-
| `set_scene_name` | Rename |
|
|
588
|
-
| `set_scene_color` | Set color |
|
|
589
|
-
| `set_scene_tempo` | Per-scene tempo |
|
|
590
|
-
| `get_scene_matrix` | Full clip grid: every track × every scene with states |
|
|
591
|
-
| `fire_scene_clips` | Fire scene with optional track filter |
|
|
592
|
-
| `stop_all_clips` | Stop all playing clips (panic) |
|
|
593
|
-
| `get_playing_clips` | All currently playing/triggered clips |
|
|
594
|
-
|
|
595
|
-
<br>
|
|
596
|
-
|
|
597
|
-
### Mixing (11)
|
|
598
|
-
|
|
599
|
-
| Tool | Description |
|
|
600
|
-
|------|-------------|
|
|
601
|
-
| `set_track_volume` | Volume (0.0-1.0) |
|
|
602
|
-
| `set_track_pan` | Pan (-1.0 to 1.0) |
|
|
603
|
-
| `set_track_send` | Send level (0.0-1.0) |
|
|
604
|
-
| `get_return_tracks` | Return track info |
|
|
605
|
-
| `get_master_track` | Master track info |
|
|
606
|
-
| `set_master_volume` | Master volume |
|
|
607
|
-
| `get_track_routing` | Input/output routing |
|
|
608
|
-
| `set_track_routing` | Set routing by display name |
|
|
609
|
-
| `get_track_meters` | Live meter levels |
|
|
610
|
-
| `get_master_meters` | Master meter levels |
|
|
611
|
-
| `get_mix_snapshot` | Full mix state in one call |
|
|
612
|
-
|
|
613
|
-
<br>
|
|
614
|
-
|
|
615
|
-
### Browser (4)
|
|
616
|
-
|
|
617
|
-
| Tool | Description |
|
|
618
|
-
|------|-------------|
|
|
619
|
-
| `get_browser_tree` | Browse category tree |
|
|
620
|
-
| `get_browser_items` | List items in a category |
|
|
621
|
-
| `search_browser` | Search by name with filters |
|
|
622
|
-
| `load_browser_item` | Load item by URI |
|
|
623
|
-
|
|
624
|
-
<br>
|
|
625
|
-
|
|
626
|
-
### Arrangement (19)
|
|
627
|
-
|
|
628
|
-
| Tool | Description |
|
|
629
|
-
|------|-------------|
|
|
630
|
-
| `get_arrangement_clips` | List arrangement clips |
|
|
631
|
-
| `create_arrangement_clip` | New clip at timeline position |
|
|
632
|
-
| `add_arrangement_notes` | Add MIDI notes to arrangement clip |
|
|
633
|
-
| `get_arrangement_notes` | Read arrangement notes |
|
|
634
|
-
| `remove_arrangement_notes` | Remove notes in region |
|
|
635
|
-
| `remove_arrangement_notes_by_id` | Remove by ID |
|
|
636
|
-
| `modify_arrangement_notes` | Modify arrangement notes |
|
|
637
|
-
| `duplicate_arrangement_notes` | Copy notes |
|
|
638
|
-
| `transpose_arrangement_notes` | Shift pitch |
|
|
639
|
-
| `set_arrangement_clip_name` | Rename arrangement clip |
|
|
640
|
-
| `set_arrangement_automation` | Write arrangement automation |
|
|
641
|
-
| `back_to_arranger` | Switch to arrangement view |
|
|
642
|
-
| `jump_to_time` | Seek to beat position |
|
|
643
|
-
| `capture_midi` | Capture played MIDI |
|
|
644
|
-
| `start_recording` | Start recording |
|
|
645
|
-
| `stop_recording` | Stop recording |
|
|
646
|
-
| `get_cue_points` | List cue points |
|
|
647
|
-
| `jump_to_cue` | Jump to cue point |
|
|
648
|
-
| `toggle_cue_point` | Add/remove cue point |
|
|
649
|
-
|
|
650
|
-
<br>
|
|
651
|
-
|
|
652
|
-
### Automation (8)
|
|
653
|
-
|
|
654
|
-
| Tool | Description |
|
|
655
|
-
|------|-------------|
|
|
656
|
-
| `get_clip_automation` | List envelopes on a clip |
|
|
657
|
-
| `set_clip_automation` | Write automation points |
|
|
658
|
-
| `clear_clip_automation` | Clear envelopes |
|
|
659
|
-
| `apply_automation_shape` | Generate + write curve in one call |
|
|
660
|
-
| `apply_automation_recipe` | Apply named recipe |
|
|
661
|
-
| `get_automation_recipes` | List all 15 recipes |
|
|
662
|
-
| `generate_automation_curve` | Preview curve without writing |
|
|
663
|
-
| `analyze_for_automation` | Spectral analysis + suggestions |
|
|
664
|
-
|
|
665
|
-
<br>
|
|
666
|
-
|
|
667
|
-
### Memory (8)
|
|
668
|
-
|
|
669
|
-
| Tool | Description |
|
|
670
|
-
|------|-------------|
|
|
671
|
-
| `memory_learn` | Save a technique |
|
|
672
|
-
| `memory_recall` | Search by text/mood/genre |
|
|
673
|
-
| `memory_list` | Browse library |
|
|
674
|
-
| `memory_get` | Get full technique with payload |
|
|
675
|
-
| `memory_update` | Update a technique |
|
|
676
|
-
| `memory_delete` | Delete a technique |
|
|
677
|
-
| `memory_favorite` | Toggle favorite |
|
|
678
|
-
| `memory_replay` | Replay saved technique |
|
|
679
|
-
|
|
680
|
-
<br>
|
|
681
|
-
|
|
682
|
-
### Analyzer (29) `[M4L]`
|
|
683
|
-
|
|
684
|
-
| Tool | Description |
|
|
685
|
-
|------|-------------|
|
|
686
|
-
| `get_master_spectrum` | 8-band frequency analysis |
|
|
687
|
-
| `get_master_rms` | RMS and peak levels |
|
|
688
|
-
| `get_detected_key` | Krumhansl-Schmuckler key detection |
|
|
689
|
-
| `get_hidden_parameters` | All params including hidden ones |
|
|
690
|
-
| `get_automation_state` | Automation state per parameter |
|
|
691
|
-
| `walk_device_tree` | Recursive device chain tree (6 levels) |
|
|
692
|
-
| `get_display_values` | Human-readable param values |
|
|
693
|
-
| `get_clip_file_path` | Audio file path on disk |
|
|
694
|
-
| `replace_simpler_sample` | Load audio into Simpler |
|
|
695
|
-
| `load_sample_to_simpler` | Bootstrap Simpler + load sample |
|
|
696
|
-
| `get_simpler_slices` | Slice point positions |
|
|
697
|
-
| `crop_simpler` | Crop to active region |
|
|
698
|
-
| `reverse_simpler` | Reverse sample |
|
|
699
|
-
| `warp_simpler` | Time-stretch to N beats |
|
|
700
|
-
| `get_warp_markers` | Get all warp markers |
|
|
701
|
-
| `add_warp_marker` | Add warp marker |
|
|
702
|
-
| `move_warp_marker` | Move warp marker |
|
|
703
|
-
| `remove_warp_marker` | Remove warp marker |
|
|
704
|
-
| `scrub_clip` | Preview at beat position |
|
|
705
|
-
| `stop_scrub` | Stop preview |
|
|
706
|
-
| `get_spectral_shape` | 7 spectral descriptors via FluCoMa |
|
|
707
|
-
| `get_mel_spectrum` | 40-band mel spectrum |
|
|
708
|
-
| `get_chroma` | 12 pitch class energies |
|
|
709
|
-
| `get_onsets` | Real-time onset detection |
|
|
710
|
-
| `get_novelty` | Spectral novelty for section boundaries |
|
|
711
|
-
| `get_momentary_loudness` | EBU R128 momentary LUFS + peak |
|
|
712
|
-
| `check_flucoma` | Verify FluCoMa installation |
|
|
713
|
-
| `capture_audio` | Record master output to WAV |
|
|
714
|
-
| `capture_stop` | Cancel in-progress capture |
|
|
715
|
-
|
|
716
|
-
### Devices — Plugin Deep Control (3) `[M4L]`
|
|
717
|
-
|
|
718
|
-
| Tool | Description |
|
|
719
|
-
|------|-------------|
|
|
720
|
-
| `get_plugin_parameters` | All VST/AU params including unconfigured |
|
|
721
|
-
| `map_plugin_parameter` | Add param to Ableton's Configure list |
|
|
722
|
-
| `get_plugin_presets` | List plugin's internal presets/banks |
|
|
723
|
-
|
|
724
|
-
<br>
|
|
725
|
-
|
|
726
|
-
### Perception (4)
|
|
727
|
-
|
|
728
|
-
| Tool | Description |
|
|
729
|
-
|------|-------------|
|
|
730
|
-
| `analyze_loudness` | Integrated LUFS, true peak, LRA, streaming compliance |
|
|
731
|
-
| `analyze_spectrum_offline` | Spectral centroid, rolloff, flatness, 5-band balance |
|
|
732
|
-
| `compare_to_reference` | Mix vs reference: loudness + spectral delta |
|
|
733
|
-
| `read_audio_metadata` | Format, duration, sample rate, tags |
|
|
734
|
-
|
|
735
|
-
<br>
|
|
736
|
-
|
|
737
|
-
### Theory (7)
|
|
738
|
-
|
|
739
|
-
| Tool | Description |
|
|
740
|
-
|------|-------------|
|
|
741
|
-
| `analyze_harmony` | Chord-by-chord Roman numeral analysis |
|
|
742
|
-
| `suggest_next_chord` | Theory-valid continuations with style presets |
|
|
743
|
-
| `detect_theory_issues` | Parallel 5ths, out-of-key, voice crossing |
|
|
744
|
-
| `identify_scale` | Key/mode detection with confidence ranking |
|
|
745
|
-
| `harmonize_melody` | 2 or 4-voice SATB harmonization |
|
|
746
|
-
| `generate_countermelody` | Species counterpoint (1st/2nd) |
|
|
747
|
-
| `transpose_smart` | Diatonic or chromatic transposition |
|
|
748
|
-
|
|
749
|
-
<br>
|
|
750
|
-
|
|
751
|
-
### Generative (5)
|
|
752
|
-
|
|
753
|
-
| Tool | Description |
|
|
754
|
-
|------|-------------|
|
|
755
|
-
| `generate_euclidean_rhythm` | Bjorklund algorithm, identifies named rhythms |
|
|
756
|
-
| `layer_euclidean_rhythms` | Stack patterns for polyrhythmic textures |
|
|
757
|
-
| `generate_tintinnabuli` | Arvo Pärt — triad voice from melody |
|
|
758
|
-
| `generate_phase_shift` | Steve Reich — drifting canon |
|
|
759
|
-
| `generate_additive_process` | Philip Glass — expanding/contracting melody |
|
|
760
|
-
|
|
761
|
-
<br>
|
|
762
|
-
|
|
763
|
-
### Harmony (4)
|
|
764
|
-
|
|
765
|
-
| Tool | Description |
|
|
766
|
-
|------|-------------|
|
|
767
|
-
| `navigate_tonnetz` | PRL neighbors at depth N |
|
|
768
|
-
| `find_voice_leading_path` | Shortest path between two chords |
|
|
769
|
-
| `classify_progression` | Identify neo-Riemannian pattern |
|
|
770
|
-
| `suggest_chromatic_mediants` | All chromatic mediant relations |
|
|
771
|
-
|
|
772
|
-
<br>
|
|
773
|
-
|
|
774
|
-
### MIDI I/O (4)
|
|
775
|
-
|
|
776
|
-
| Tool | Description |
|
|
777
|
-
|------|-------------|
|
|
778
|
-
| `export_clip_midi` | Export clip to .mid file |
|
|
779
|
-
| `import_midi_to_clip` | Import .mid into session clip |
|
|
780
|
-
| `analyze_midi_file` | Offline MIDI analysis |
|
|
781
|
-
| `extract_piano_roll` | 2D velocity matrix extraction |
|
|
782
|
-
|
|
783
|
-
<br>
|
|
784
|
-
|
|
785
|
-
---
|
|
786
|
-
|
|
787
|
-
---
|
|
788
|
-
|
|
789
493
|
## CLI
|
|
790
494
|
|
|
791
495
|
```bash
|
|
@@ -799,14 +503,19 @@ npx livepilot --version # Show version
|
|
|
799
503
|
|
|
800
504
|
<br>
|
|
801
505
|
|
|
506
|
+
---
|
|
507
|
+
|
|
802
508
|
## Compatibility
|
|
803
509
|
|
|
804
|
-
Live 12 all editions. Suite required for stock instruments
|
|
805
|
-
|
|
806
|
-
|
|
510
|
+
- **Ableton Live 12** — all editions. Suite required for Max for Live and stock instruments (Drift, Meld, Wavetable).
|
|
511
|
+
- **Python** 3.9+
|
|
512
|
+
- **Node.js** 18+
|
|
513
|
+
- **macOS / Windows**
|
|
807
514
|
|
|
808
515
|
<br>
|
|
809
516
|
|
|
517
|
+
---
|
|
518
|
+
|
|
810
519
|
## Development
|
|
811
520
|
|
|
812
521
|
```bash
|
|
@@ -816,10 +525,26 @@ python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
|
|
|
816
525
|
.venv/bin/pytest tests/ -v
|
|
817
526
|
```
|
|
818
527
|
|
|
528
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for architecture details, code guidelines, and how to add tools.
|
|
529
|
+
|
|
819
530
|
<br>
|
|
820
531
|
|
|
821
532
|
---
|
|
822
533
|
|
|
823
|
-
|
|
534
|
+
## Community
|
|
535
|
+
|
|
536
|
+
- [Discussions](https://github.com/dreamrec/LivePilot/discussions) — questions, ideas, show & tell
|
|
537
|
+
- [Bug reports](https://github.com/dreamrec/LivePilot/issues/new?template=bug_report.yml)
|
|
538
|
+
- [Feature requests](https://github.com/dreamrec/LivePilot/issues/new?template=feature_request.yml)
|
|
539
|
+
- [Contributing guide](CONTRIBUTING.md)
|
|
540
|
+
- [Security policy](SECURITY.md)
|
|
541
|
+
|
|
542
|
+
<br>
|
|
543
|
+
|
|
544
|
+
---
|
|
824
545
|
|
|
825
|
-
|
|
546
|
+
<p align="center">
|
|
547
|
+
<a href="LICENSE">MIT</a> — Pilot Studio
|
|
548
|
+
<br><br>
|
|
549
|
+
Sister projects: <a href="https://github.com/dreamrec/TDPilot">TDPilot</a> (TouchDesigner) · <a href="https://github.com/dreamrec/ComfyPilot">ComfyPilot</a> (ComfyUI)
|
|
550
|
+
</p>
|