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.
Files changed (51) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/AGENTS.md +1 -1
  3. package/CHANGELOG.md +92 -0
  4. package/CODE_OF_CONDUCT.md +27 -0
  5. package/CONTRIBUTING.md +131 -0
  6. package/README.md +112 -387
  7. package/SECURITY.md +48 -0
  8. package/bin/livepilot.js +42 -2
  9. package/livepilot/.Codex-plugin/plugin.json +8 -0
  10. package/livepilot/.claude-plugin/plugin.json +1 -1
  11. package/livepilot/commands/beat.md +18 -6
  12. package/livepilot/commands/sounddesign.md +6 -5
  13. package/livepilot/skills/livepilot-core/SKILL.md +36 -13
  14. package/livepilot/skills/livepilot-core/references/overview.md +1 -1
  15. package/livepilot/skills/livepilot-release/SKILL.md +11 -8
  16. package/m4l_device/LivePilot_Analyzer.amxd +0 -0
  17. package/m4l_device/LivePilot_Analyzer.maxpat +378 -4
  18. package/m4l_device/capture_2026_04_07_192216.wav +0 -0
  19. package/m4l_device/livepilot_bridge.js +487 -184
  20. package/mcp_server/__init__.py +1 -1
  21. package/mcp_server/connection.py +40 -1
  22. package/mcp_server/curves.py +5 -1
  23. package/mcp_server/m4l_bridge.py +93 -26
  24. package/mcp_server/server.py +26 -31
  25. package/mcp_server/tools/_perception_engine.py +26 -3
  26. package/mcp_server/tools/_theory_engine.py +36 -5
  27. package/mcp_server/tools/analyzer.py +74 -18
  28. package/mcp_server/tools/arrangement.py +20 -5
  29. package/mcp_server/tools/automation.py +56 -1
  30. package/mcp_server/tools/devices.py +201 -13
  31. package/mcp_server/tools/generative.py +8 -1
  32. package/mcp_server/tools/harmony.py +16 -3
  33. package/mcp_server/tools/midi_io.py +22 -4
  34. package/mcp_server/tools/notes.py +4 -1
  35. package/mcp_server/tools/perception.py +27 -1
  36. package/mcp_server/tools/scenes.py +4 -1
  37. package/mcp_server/tools/theory.py +23 -8
  38. package/mcp_server/tools/transport.py +16 -6
  39. package/package.json +1 -1
  40. package/remote_script/LivePilot/__init__.py +1 -1
  41. package/remote_script/LivePilot/arrangement.py +25 -134
  42. package/remote_script/LivePilot/browser.py +19 -8
  43. package/remote_script/LivePilot/clip_automation.py +5 -4
  44. package/remote_script/LivePilot/clips.py +14 -6
  45. package/remote_script/LivePilot/devices.py +6 -3
  46. package/remote_script/LivePilot/diagnostics.py +81 -5
  47. package/remote_script/LivePilot/router.py +22 -0
  48. package/remote_script/LivePilot/server.py +41 -17
  49. package/remote_script/LivePilot/tracks.py +7 -2
  50. package/remote_script/LivePilot/transport.py +3 -3
  51. package/requirements.txt +3 -1
package/README.md CHANGED
@@ -7,15 +7,27 @@
7
7
  ╚══════╝╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝
8
8
  ```
9
9
 
10
- An agentic production system for Ableton Live 12.
11
-
12
- 178 tools. Device atlas. Spectral perception. Technique memory.
13
- Neo-Riemannian harmony. Euclidean rhythm. Species counterpoint.
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
- <br>
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
- | Domain | # | Scope |
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, monitoring, freeze, flatten |
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 params |
87
- | Scenes | 12 | create, delete, duplicate, fire, name, color, tempo, scene matrix, selective launch |
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
- ### PERCEPTION
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
- All 146 core tools work without it — the analyzer adds 32 more
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
- ### INTELLIGENCE
130
+ ### Intelligence
127
131
 
128
- <br>
132
+ <details>
133
+ <summary><strong>Theory — 7 tools</strong></summary>
129
134
 
130
- #### Theory — 7 tools
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
- <br>
156
+ </details>
157
+
158
+ <details>
159
+ <summary><strong>Harmony — 4 tools</strong></summary>
152
160
 
153
- #### Harmony — 4 tools
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
- <br>
186
+ </details>
179
187
 
180
- #### Generative — 5 tools
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: above, below, or nearest. The T-voice gravitates toward
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
- <br>
219
+ </details>
220
+
221
+ <details>
222
+ <summary><strong>Automation — 8 tools</strong></summary>
214
223
 
215
- #### Automation — 8 tools
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. The AI doesn't write automation blind — it knows what
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
- <br>
261
+ </details>
254
262
 
255
- ### MEMORY + I/O
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
- <br>
284
+ </details>
285
+
286
+ <details>
287
+ <summary><strong>MIDI I/O — 4 tools</strong></summary>
279
288
 
280
- #### MIDI I/O — 4 tools
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
- ## Install
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
- All core tools work without it.
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
- (Drift, Meld, Wavetable) and Max for Live.
806
- Python 3.9+. Node.js 18+.
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
- [MIT](LICENSE) — Pilot Studio
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
- Sister projects: [TDPilot](https://github.com/dreamrec/TDPilot) (TouchDesigner) · [ComfyPilot](https://github.com/dreamrec/ComfyPilot) (ComfyUI)
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>