livepilot 1.10.6 → 1.10.8

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 (163) hide show
  1. package/CHANGELOG.md +168 -0
  2. package/README.md +12 -10
  3. package/bin/livepilot.js +168 -30
  4. package/installer/install.js +117 -11
  5. package/m4l_device/LivePilot_Analyzer.amxd +0 -0
  6. package/m4l_device/livepilot_bridge.js +215 -3
  7. package/mcp_server/__init__.py +1 -1
  8. package/mcp_server/atlas/__init__.py +132 -33
  9. package/mcp_server/atlas/tools.py +56 -15
  10. package/mcp_server/composer/layer_planner.py +27 -0
  11. package/mcp_server/composer/prompt_parser.py +15 -6
  12. package/mcp_server/connection.py +11 -3
  13. package/mcp_server/corpus/__init__.py +14 -4
  14. package/mcp_server/creative_constraints/tools.py +206 -33
  15. package/mcp_server/experiment/engine.py +7 -9
  16. package/mcp_server/hook_hunter/analyzer.py +62 -9
  17. package/mcp_server/hook_hunter/tools.py +60 -9
  18. package/mcp_server/m4l_bridge.py +68 -12
  19. package/mcp_server/musical_intelligence/detectors.py +32 -0
  20. package/mcp_server/performance_engine/tools.py +112 -29
  21. package/mcp_server/preview_studio/engine.py +89 -8
  22. package/mcp_server/preview_studio/tools.py +22 -6
  23. package/mcp_server/project_brain/automation_graph.py +71 -19
  24. package/mcp_server/project_brain/builder.py +2 -0
  25. package/mcp_server/project_brain/tools.py +55 -5
  26. package/mcp_server/reference_engine/profile_builder.py +129 -3
  27. package/mcp_server/reference_engine/tools.py +47 -6
  28. package/mcp_server/runtime/execution_router.py +66 -2
  29. package/mcp_server/runtime/mcp_dispatch.py +75 -3
  30. package/mcp_server/runtime/remote_commands.py +10 -2
  31. package/mcp_server/sample_engine/analyzer.py +131 -4
  32. package/mcp_server/sample_engine/critics.py +29 -8
  33. package/mcp_server/sample_engine/models.py +42 -4
  34. package/mcp_server/sample_engine/tools.py +48 -14
  35. package/mcp_server/semantic_moves/__init__.py +1 -0
  36. package/mcp_server/semantic_moves/compiler.py +9 -1
  37. package/mcp_server/semantic_moves/device_creation_compilers.py +47 -0
  38. package/mcp_server/semantic_moves/mix_compilers.py +170 -0
  39. package/mcp_server/semantic_moves/mix_moves.py +1 -1
  40. package/mcp_server/semantic_moves/models.py +5 -0
  41. package/mcp_server/semantic_moves/sound_design_compilers.py +22 -59
  42. package/mcp_server/semantic_moves/tools.py +15 -4
  43. package/mcp_server/semantic_moves/transition_compilers.py +12 -19
  44. package/mcp_server/server.py +75 -5
  45. package/mcp_server/services/singletons.py +68 -0
  46. package/mcp_server/session_continuity/models.py +4 -0
  47. package/mcp_server/session_continuity/tracker.py +14 -1
  48. package/mcp_server/song_brain/builder.py +110 -12
  49. package/mcp_server/song_brain/tools.py +77 -13
  50. package/mcp_server/sound_design/tools.py +112 -1
  51. package/mcp_server/splice_client/client.py +29 -8
  52. package/mcp_server/stuckness_detector/detector.py +90 -0
  53. package/mcp_server/stuckness_detector/tools.py +41 -0
  54. package/mcp_server/tools/_agent_os_engine/critics.py +24 -0
  55. package/mcp_server/tools/_composition_engine/__init__.py +2 -2
  56. package/mcp_server/tools/_composition_engine/harmony.py +90 -0
  57. package/mcp_server/tools/_composition_engine/sections.py +47 -4
  58. package/mcp_server/tools/_harmony_engine.py +52 -8
  59. package/mcp_server/tools/_research_engine.py +98 -19
  60. package/mcp_server/tools/_theory_engine.py +138 -9
  61. package/mcp_server/tools/agent_os.py +20 -3
  62. package/mcp_server/tools/analyzer.py +105 -6
  63. package/mcp_server/tools/clips.py +46 -1
  64. package/mcp_server/tools/composition.py +66 -23
  65. package/mcp_server/tools/devices.py +22 -1
  66. package/mcp_server/tools/harmony.py +115 -14
  67. package/mcp_server/tools/midi_io.py +23 -1
  68. package/mcp_server/tools/mixing.py +35 -1
  69. package/mcp_server/tools/motif.py +49 -3
  70. package/mcp_server/tools/research.py +24 -0
  71. package/mcp_server/tools/theory.py +108 -16
  72. package/mcp_server/tools/tracks.py +1 -1
  73. package/mcp_server/tools/transport.py +1 -1
  74. package/mcp_server/transition_engine/critics.py +18 -11
  75. package/mcp_server/translation_engine/tools.py +8 -4
  76. package/package.json +25 -3
  77. package/remote_script/LivePilot/__init__.py +77 -2
  78. package/remote_script/LivePilot/arrangement.py +12 -2
  79. package/remote_script/LivePilot/browser.py +16 -6
  80. package/remote_script/LivePilot/clips.py +69 -0
  81. package/remote_script/LivePilot/devices.py +10 -5
  82. package/remote_script/LivePilot/mixing.py +117 -0
  83. package/remote_script/LivePilot/notes.py +13 -2
  84. package/remote_script/LivePilot/router.py +13 -1
  85. package/remote_script/LivePilot/server.py +51 -13
  86. package/remote_script/LivePilot/version_detect.py +7 -4
  87. package/server.json +20 -0
  88. package/.claude-plugin/marketplace.json +0 -21
  89. package/.mcpbignore +0 -57
  90. package/AGENTS.md +0 -46
  91. package/CODE_OF_CONDUCT.md +0 -27
  92. package/CONTRIBUTING.md +0 -131
  93. package/SECURITY.md +0 -48
  94. package/livepilot/.Codex-plugin/plugin.json +0 -8
  95. package/livepilot/.claude-plugin/plugin.json +0 -8
  96. package/livepilot/agents/livepilot-producer/AGENT.md +0 -313
  97. package/livepilot/commands/arrange.md +0 -47
  98. package/livepilot/commands/beat.md +0 -77
  99. package/livepilot/commands/evaluate.md +0 -49
  100. package/livepilot/commands/memory.md +0 -22
  101. package/livepilot/commands/mix.md +0 -44
  102. package/livepilot/commands/perform.md +0 -42
  103. package/livepilot/commands/session.md +0 -13
  104. package/livepilot/commands/sounddesign.md +0 -43
  105. package/livepilot/skills/livepilot-arrangement/SKILL.md +0 -155
  106. package/livepilot/skills/livepilot-composition-engine/SKILL.md +0 -107
  107. package/livepilot/skills/livepilot-composition-engine/references/form-patterns.md +0 -97
  108. package/livepilot/skills/livepilot-composition-engine/references/transition-archetypes.md +0 -102
  109. package/livepilot/skills/livepilot-core/SKILL.md +0 -184
  110. package/livepilot/skills/livepilot-core/references/ableton-workflow-patterns.md +0 -831
  111. package/livepilot/skills/livepilot-core/references/automation-atlas.md +0 -272
  112. package/livepilot/skills/livepilot-core/references/device-atlas/00-index.md +0 -110
  113. package/livepilot/skills/livepilot-core/references/device-atlas/distortion-and-character.md +0 -687
  114. package/livepilot/skills/livepilot-core/references/device-atlas/drums-and-percussion.md +0 -753
  115. package/livepilot/skills/livepilot-core/references/device-atlas/dynamics-and-punch.md +0 -525
  116. package/livepilot/skills/livepilot-core/references/device-atlas/eq-and-filtering.md +0 -402
  117. package/livepilot/skills/livepilot-core/references/device-atlas/midi-tools.md +0 -963
  118. package/livepilot/skills/livepilot-core/references/device-atlas/movement-and-modulation.md +0 -874
  119. package/livepilot/skills/livepilot-core/references/device-atlas/space-and-depth.md +0 -571
  120. package/livepilot/skills/livepilot-core/references/device-atlas/spectral-and-weird.md +0 -714
  121. package/livepilot/skills/livepilot-core/references/device-atlas/synths-native.md +0 -953
  122. package/livepilot/skills/livepilot-core/references/device-knowledge/00-index.md +0 -34
  123. package/livepilot/skills/livepilot-core/references/device-knowledge/automation-as-music.md +0 -204
  124. package/livepilot/skills/livepilot-core/references/device-knowledge/chains-genre.md +0 -173
  125. package/livepilot/skills/livepilot-core/references/device-knowledge/creative-thinking.md +0 -211
  126. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-distortion.md +0 -188
  127. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-space.md +0 -162
  128. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-spectral.md +0 -229
  129. package/livepilot/skills/livepilot-core/references/device-knowledge/instruments-synths.md +0 -243
  130. package/livepilot/skills/livepilot-core/references/m4l-devices.md +0 -352
  131. package/livepilot/skills/livepilot-core/references/memory-guide.md +0 -107
  132. package/livepilot/skills/livepilot-core/references/midi-recipes.md +0 -402
  133. package/livepilot/skills/livepilot-core/references/mixing-patterns.md +0 -578
  134. package/livepilot/skills/livepilot-core/references/overview.md +0 -290
  135. package/livepilot/skills/livepilot-core/references/sample-manipulation.md +0 -724
  136. package/livepilot/skills/livepilot-core/references/sound-design-deep.md +0 -140
  137. package/livepilot/skills/livepilot-core/references/sound-design.md +0 -393
  138. package/livepilot/skills/livepilot-devices/SKILL.md +0 -169
  139. package/livepilot/skills/livepilot-evaluation/SKILL.md +0 -156
  140. package/livepilot/skills/livepilot-evaluation/references/capability-modes.md +0 -118
  141. package/livepilot/skills/livepilot-evaluation/references/evaluation-contracts.md +0 -121
  142. package/livepilot/skills/livepilot-evaluation/references/memory-promotion.md +0 -110
  143. package/livepilot/skills/livepilot-mix-engine/SKILL.md +0 -123
  144. package/livepilot/skills/livepilot-mix-engine/references/mix-critics.md +0 -143
  145. package/livepilot/skills/livepilot-mix-engine/references/mix-moves.md +0 -105
  146. package/livepilot/skills/livepilot-mixing/SKILL.md +0 -157
  147. package/livepilot/skills/livepilot-notes/SKILL.md +0 -130
  148. package/livepilot/skills/livepilot-performance-engine/SKILL.md +0 -122
  149. package/livepilot/skills/livepilot-performance-engine/references/performance-safety.md +0 -98
  150. package/livepilot/skills/livepilot-release/SKILL.md +0 -130
  151. package/livepilot/skills/livepilot-sample-engine/SKILL.md +0 -105
  152. package/livepilot/skills/livepilot-sample-engine/references/sample-critics.md +0 -87
  153. package/livepilot/skills/livepilot-sample-engine/references/sample-philosophy.md +0 -51
  154. package/livepilot/skills/livepilot-sample-engine/references/sample-techniques.md +0 -131
  155. package/livepilot/skills/livepilot-sound-design-engine/SKILL.md +0 -168
  156. package/livepilot/skills/livepilot-sound-design-engine/references/patch-model.md +0 -119
  157. package/livepilot/skills/livepilot-sound-design-engine/references/sound-design-critics.md +0 -118
  158. package/livepilot/skills/livepilot-wonder/SKILL.md +0 -79
  159. package/m4l_device/LivePilot_Analyzer.maxpat +0 -2705
  160. package/manifest.json +0 -91
  161. package/mcp_server/splice_client/protos/app_pb2.pyi +0 -1153
  162. package/scripts/generate_tool_catalog.py +0 -131
  163. package/scripts/sync_metadata.py +0 -132
@@ -1,290 +0,0 @@
1
- # LivePilot v1.10.6 — Architecture & Tool Reference
2
-
3
- Agentic production system for Ableton Live 12. 320 tools across 43 domains. Device atlas (1305 devices, 81 enriched), spectral perception (M4L analyzer), technique memory, automation intelligence (16 curve types, 15 recipes), music theory (Krumhansl-Schmuckler, species counterpoint), generative algorithms (Euclidean rhythm, tintinnabuli, phase shift, additive process), neo-Riemannian harmony (PRL transforms, Tonnetz), MIDI file I/O, Splice online catalog search and download via gRPC (v1.10.6 unblocked 19,690+ catalog hits previously inaccessible).
4
-
5
- ## Architecture
6
-
7
- ```
8
- AI Client ──MCP──► FastMCP Server ──TCP/9878──► Remote Script (inside Ableton)
9
- (validates) (executes on main thread)
10
-
11
- ├── Device Atlas (1305 devices, 81 enriched with sonic intelligence)
12
- ├── M4L Analyzer ──UDP/OSC──► LivePilot_Analyzer.amxd
13
- └── Technique Memory (~/.livepilot/memory/)
14
- ```
15
-
16
- - **MCP Server** validates inputs (ranges, types) before sending
17
- - **Remote Script** runs inside Ableton's Python environment, executes on the main thread via `schedule_message`
18
- - **Device Atlas** provides structured knowledge of Ableton's device library — real names, real URIs, sonic descriptions
19
- - **M4L Analyzer** reads the master bus in real-time: 8-band spectrum, RMS/peak, pitch tracking, Krumhansl-Schmuckler key detection
20
- - **Technique Memory** persists production decisions across sessions as typed, searchable, replayable data structures
21
- - **Protocol**: JSON over TCP, newline-delimited. Every command gets a response.
22
- - **Thread safety**: All Live Object Model (LOM) access happens on Ableton's main thread
23
-
24
- ## The Agentic Difference
25
-
26
- A flat tool list lets the AI press buttons. LivePilot's three layers give it context:
27
-
28
- 1. **Before loading a device** — the agent consults the atlas to find a real preset, not a hallucinated name
29
- 2. **Before writing harmonic content** — the agent reads the detected key from the analyzer
30
- 3. **Before making creative decisions** — the agent checks technique memory for the user's style preferences
31
- 4. **After every mixing move** — the agent reads the spectrum to verify the result
32
-
33
- This turns "set EQ band 3 to -4 dB" into "cut 400 Hz by 4 dB, then read the spectrum to confirm the mud is actually reduced."
34
-
35
- ## The 320 Tools — What Each One Does
36
-
37
- ### Transport (12) — Playback, tempo, global state, diagnostics
38
-
39
- | Tool | What it does | Key params |
40
- |------|-------------|------------|
41
- | `get_session_info` | Returns tempo, time sig, playing state, track count, scene count, song length | — |
42
- | `set_tempo` | Changes BPM | `tempo` (20-999) |
43
- | `set_time_signature` | Changes time signature | `numerator` (1-99), `denominator` (1,2,4,8,16) |
44
- | `start_playback` | Starts from current position | — |
45
- | `stop_playback` | Stops playback | — |
46
- | `continue_playback` | Resumes from where it stopped | — |
47
- | `toggle_metronome` | Toggles click on/off | — |
48
- | `set_session_loop` | Sets loop region | `loop_start` (beats), `loop_length` (beats) |
49
- | `undo` | Undoes last action | — |
50
- | `redo` | Redoes last undone action | — |
51
- | `get_recent_actions` | Returns log of recent commands sent to Ableton (newest first) | `limit` (1-50, default 20) |
52
- | `get_session_diagnostics` | Analyzes session for issues: armed tracks, solo leftovers, unnamed tracks, empty clips | — |
53
-
54
- ### Tracks (14) — Create, delete, configure, group tracks
55
-
56
- | Tool | What it does | Key params |
57
- |------|-------------|------------|
58
- | `get_track_info` | Returns clips, devices, mixer state, group/fold info for one track | `track_index` (0-based) |
59
- | `create_midi_track` | Creates a new MIDI track | `index` (-1=end), `name`, `color` (0-69) |
60
- | `create_audio_track` | Creates a new audio track | `index` (-1=end), `name`, `color` (0-69) |
61
- | `create_return_track` | Creates a new return track | — |
62
- | `delete_track` | Deletes a track | `track_index` |
63
- | `duplicate_track` | Duplicates track with all contents | `track_index` |
64
- | `set_track_name` | Renames a track | `track_index`, `name` |
65
- | `set_track_color` | Sets track color | `track_index`, `color_index` (0-69) |
66
- | `set_track_mute` | Mutes/unmutes | `track_index`, `muted` (bool) |
67
- | `set_track_solo` | Solos/unsolos | `track_index`, `soloed` (bool) |
68
- | `set_track_arm` | Arms/disarms for recording | `track_index`, `armed` (bool) |
69
- | `stop_track_clips` | Stops all playing clips on track | `track_index` |
70
- | `set_group_fold` | Folds/unfolds a group track | `track_index`, `folded` (bool) |
71
- | `set_track_input_monitoring` | Sets input monitoring state | `track_index`, `state` (0=In, 1=Auto, 2=Off) |
72
-
73
- ### Clips (11) — Clip lifecycle, properties, warp
74
-
75
- | Tool | What it does | Key params |
76
- |------|-------------|------------|
77
- | `get_clip_info` | Returns clip name, length, loop settings, playing state, is_midi/is_audio, warp info | `track_index`, `clip_index` |
78
- | `create_clip` | Creates empty MIDI clip | `track_index`, `clip_index`, `length` (beats) |
79
- | `delete_clip` | Removes a clip from its slot | `track_index`, `clip_index` |
80
- | `duplicate_clip` | Copies clip to next slot | `track_index`, `clip_index` |
81
- | `fire_clip` | Launches a clip | `track_index`, `clip_index` |
82
- | `stop_clip` | Stops a playing clip | `track_index`, `clip_index` |
83
- | `set_clip_name` | Renames a clip | `track_index`, `clip_index`, `name` |
84
- | `set_clip_color` | Sets clip color | `track_index`, `clip_index`, `color_index` (0-69) |
85
- | `set_clip_loop` | Configures loop region | `track_index`, `clip_index`, `loop_start`, `loop_end`, `looping` |
86
- | `set_clip_launch` | Sets launch mode and quantization | `track_index`, `clip_index`, `launch_mode`, `quantization` |
87
- | `set_clip_warp_mode` | Sets warp mode for audio clips | `track_index`, `clip_index`, `mode` (0=Beats,1=Tones,2=Texture,3=Re-Pitch,4=Complex,6=Complex Pro) |
88
-
89
- ### Notes (8) — MIDI note manipulation (Live 12 API)
90
-
91
- | Tool | What it does | Key params |
92
- |------|-------------|------------|
93
- | `add_notes` | Adds MIDI notes to a clip | `track_index`, `clip_index`, `notes` (array) |
94
- | `get_notes` | Reads all notes in a region | `track_index`, `clip_index`, `start_time`, `length` |
95
- | `remove_notes` | Removes notes in a region | `track_index`, `clip_index`, `start_time`, `pitch_start`, etc. |
96
- | `remove_notes_by_id` | Removes specific notes by ID | `track_index`, `clip_index`, `note_ids` |
97
- | `modify_notes` | Changes existing notes (pitch, time, velocity, probability) | `track_index`, `clip_index`, `modifications` |
98
- | `duplicate_notes` | Copies notes in a region | `track_index`, `clip_index`, region params |
99
- | `transpose_notes` | Shifts pitch of notes in a region | `track_index`, `clip_index`, `semitones`, region params |
100
- | `quantize_clip` | Snaps notes to grid | `track_index`, `clip_index`, `grid` (int 0-8: 0=None,1=1/4,2=1/8,5=1/16,8=1/32), `amount` (0-1) |
101
-
102
- **Note format** (for `add_notes`):
103
- ```json
104
- {"pitch": 60, "start_time": 0.0, "duration": 0.5, "velocity": 100, "mute": false}
105
- ```
106
-
107
- **Extended note fields** (returned by `get_notes`):
108
- - `note_id` — unique identifier for modify/remove operations
109
- - `probability` — 0.0-1.0, per-note trigger probability (Live 12)
110
- - `velocity_deviation` — -127.0 to 127.0
111
- - `release_velocity` — 0.0-127.0
112
-
113
- ### Devices (15) — Instruments, effects, racks, 12.3+ device insertion
114
-
115
- | Tool | What it does | Key params |
116
- |------|-------------|------------|
117
- | `get_device_info` | Returns device name, class, active state, all parameters | `track_index`, `device_index` |
118
- | `get_device_parameters` | Lists all parameters with values, ranges, and `display_value` (12.2+) | `track_index`, `device_index` |
119
- | `set_device_parameter` | Sets a single parameter, returns `display_value` on 12.2+ | `track_index`, `device_index`, `parameter_index`, `value` |
120
- | `batch_set_parameters` | Sets multiple parameters at once | `track_index`, `device_index`, `parameters` (array) |
121
- | `toggle_device` | Enables/disables a device | `track_index`, `device_index` |
122
- | `delete_device` | Removes a device from the chain | `track_index`, `device_index` |
123
- | `load_device_by_uri` | Loads a device by browser URI | `track_index`, `uri` |
124
- | `find_and_load_device` | Searches browser and loads first match (uses `insert_device` fast path on 12.3+) | `track_index`, `name` |
125
- | `insert_device` | **12.3+** Insert native device by name — 10x faster than browser. Supports chain insertion for drum racks | `track_index`, `device_name`, `position`, `device_index`, `chain_index` |
126
- | `insert_rack_chain` | **12.3+** Add a chain to Instrument/Audio Effect/Drum Rack | `track_index`, `device_index`, `position` |
127
- | `set_drum_chain_note` | **12.3+** Assign MIDI note to a Drum Rack chain (C1=36 kick, D1=38 snare) | `track_index`, `device_index`, `chain_index`, `note` |
128
- | `get_rack_chains` | Lists chains in an Instrument/Effect Rack | `track_index`, `device_index` |
129
- | `set_simpler_playback_mode` | Switches Simpler mode (Classic/One-Shot/Slice) | `track_index`, `device_index`, `playback_mode` (0/1/2), `slice_by`, `sensitivity` |
130
- | `set_chain_volume` | Sets volume of a rack chain | `track_index`, `device_index`, `chain_index`, `volume` |
131
- | `get_device_presets` | Lists presets for a device (audio effects, instruments, MIDI effects) | `device_name` |
132
-
133
- ### Scenes (8) — Scene management
134
-
135
- | Tool | What it does | Key params |
136
- |------|-------------|------------|
137
- | `get_scenes_info` | Lists all scenes with names, tempo, and color | — |
138
- | `create_scene` | Creates a new scene | `index` (-1=end) |
139
- | `delete_scene` | Deletes a scene | `scene_index` |
140
- | `duplicate_scene` | Duplicates a scene | `scene_index` |
141
- | `fire_scene` | Launches all clips in a scene | `scene_index` |
142
- | `set_scene_name` | Renames a scene | `scene_index`, `name` |
143
- | `set_scene_color` | Sets scene color | `scene_index`, `color_index` (0-69) |
144
- | `set_scene_tempo` | Sets tempo that triggers when scene fires | `scene_index`, `tempo` (20-999 BPM) |
145
-
146
- ### Mixing (11) — Levels, panning, routing, metering
147
-
148
- | Tool | What it does | Key params |
149
- |------|-------------|------------|
150
- | `set_track_volume` | Sets track volume | `track_index`, `volume` (0.0-1.0, where 0.85≈0dB) |
151
- | `set_track_pan` | Sets stereo position | `track_index`, `pan` (-1.0 left to 1.0 right) |
152
- | `set_track_send` | Sets send level to return track | `track_index`, `send_index`, `value` (0.0-1.0) |
153
- | `get_return_tracks` | Lists all return tracks | — |
154
- | `get_master_track` | Returns master track info | — |
155
- | `set_master_volume` | Sets master output level | `volume` (0.0-1.0) |
156
- | `get_track_routing` | Returns input/output routing config | `track_index` |
157
- | `set_track_routing` | Configures input/output routing | `track_index`, routing params |
158
- | `get_track_meters` | Returns real-time output levels for a track | `track_index` |
159
- | `get_master_meters` | Returns real-time output levels for the master | — |
160
- | `get_mix_snapshot` | Returns all levels, panning, routing, mute/solo state for entire session | — |
161
-
162
- ### Browser (4) — Finding and loading presets/devices
163
-
164
- | Tool | What it does | Key params |
165
- |------|-------------|------------|
166
- | `get_browser_tree` | Returns top-level browser categories | — |
167
- | `get_browser_items` | Lists items in a browser path | `path` |
168
- | `search_browser` | Searches the browser | `query` |
169
- | `load_browser_item` | Loads a browser item onto a track — **`uri` MUST come from `search_browser` results, NEVER invented** | `track_index`, `uri` |
170
-
171
- ### Arrangement (20) — Timeline, recording, cue points, arrangement notes
172
-
173
- | Tool | What it does | Key params |
174
- |------|-------------|------------|
175
- | `get_arrangement_clips` | Lists clips in arrangement view | `track_index` |
176
- | `create_arrangement_clip` | Duplicates session clip into arrangement at a beat position | `track_index`, `clip_slot_index`, `start_time`, `length` |
177
- | `create_native_arrangement_clip` | **12.1.10+** Creates native arrangement clip with full automation envelope support | `track_index`, `start_time`, `length`, `name`, `color_index` |
178
- | `add_arrangement_notes` | Adds MIDI notes to an arrangement clip | `track_index`, `clip_index`, `notes` |
179
- | `get_arrangement_notes` | Reads notes from an arrangement clip | `track_index`, `clip_index`, region params |
180
- | `remove_arrangement_notes` | Removes notes in a region of an arrangement clip | `track_index`, `clip_index`, region params |
181
- | `remove_arrangement_notes_by_id` | Removes specific notes by ID | `track_index`, `clip_index`, `note_ids` |
182
- | `modify_arrangement_notes` | Modifies notes by ID (pitch, time, velocity, probability) | `track_index`, `clip_index`, `modifications` |
183
- | `duplicate_arrangement_notes` | Copies notes by ID with optional time offset | `track_index`, `clip_index`, `note_ids`, `time_offset` |
184
- | `transpose_arrangement_notes` | Transposes notes in an arrangement clip | `track_index`, `clip_index`, `semitones`, region params |
185
- | `set_arrangement_clip_name` | Renames an arrangement clip | `track_index`, `clip_index`, `name` |
186
- | `set_arrangement_automation` | Writes automation envelope to an arrangement clip | `track_index`, `clip_index`, `parameter_type`, `points` |
187
- | `back_to_arranger` | Switches playback from session back to arrangement | — |
188
- | `jump_to_time` | Moves playhead to a beat position | `beat_time` (beats) |
189
- | `capture_midi` | Captures recently played MIDI | — |
190
- | `start_recording` | Starts recording (session or arrangement) | `arrangement` (bool) |
191
- | `stop_recording` | Stops all recording | — |
192
- | `get_cue_points` | Lists all cue markers | — |
193
- | `jump_to_cue` | Jumps to a cue point by index | `cue_index` |
194
- | `toggle_cue_point` | Creates/removes cue point at current position | — |
195
-
196
- ### Memory (8) — Technique library persistence
197
-
198
- | Tool | What it does | Key params |
199
- |------|-------------|------------|
200
- | `memory_learn` | Saves a technique with stylistic qualities | `name`, `type`, `qualities`, `payload`, `tags` |
201
- | `memory_recall` | Searches library by text and filters | `query`, `type`, `tags`, `limit` |
202
- | `memory_get` | Fetches full technique including payload | `technique_id` |
203
- | `memory_replay` | Returns technique with replay plan for agent | `technique_id`, `adapt` (bool) |
204
- | `memory_list` | Browses library with filtering/sorting | `type`, `tags`, `sort_by`, `limit` |
205
- | `memory_favorite` | Stars and/or rates a technique | `technique_id`, `favorite`, `rating` (0-5) |
206
- | `memory_update` | Updates name, tags, or qualities | `technique_id`, `name`, `tags`, `qualities` |
207
- | `memory_delete` | Removes technique (backs up first) | `technique_id` |
208
-
209
- ### Analyzer (30) — Real-time DSP analysis (requires LivePilot Analyzer M4L device on master track)
210
-
211
- | Tool | What it does | Key params |
212
- |------|-------------|------------|
213
- | `get_master_spectrum` | 8-band spectral analysis of master output | — |
214
- | `get_master_rms` | True RMS and peak amplitude levels | — |
215
- | `get_detected_key` | Detects musical key (Krumhansl-Schmuckler) | — |
216
- | `get_hidden_parameters` | All device parameters including hidden ones | `track_index`, `device_index` |
217
- | `get_automation_state` | Parameters with active automation | `track_index`, `device_index` |
218
- | `walk_device_tree` | Recursive device tree (racks, drum pads, 6 levels) | `track_index`, `device_index` |
219
- | `get_clip_file_path` | Audio file path on disk | `track_index`, `clip_index` |
220
- | `replace_simpler_sample` | Replace sample in Simpler | `track_index`, `device_index`, `file_path` |
221
- | `load_sample_to_simpler` | Bootstrap Simpler and load sample (full workflow) | `track_index`, `file_path` |
222
- | `get_simpler_slices` | Slice points from Simpler | `track_index`, `device_index` |
223
- | `crop_simpler` | Crop sample to active region | `track_index`, `device_index` |
224
- | `reverse_simpler` | Reverse sample | `track_index`, `device_index` |
225
- | `warp_simpler` | Warp sample to N beats | `track_index`, `device_index`, `beats` |
226
- | `get_warp_markers` | All warp markers (beat_time + sample_time) | `track_index`, `clip_index` |
227
- | `add_warp_marker` | Add warp marker | `track_index`, `clip_index`, `beat_time` |
228
- | `move_warp_marker` | Move warp marker | `track_index`, `clip_index`, `old_beat`, `new_beat` |
229
- | `remove_warp_marker` | Remove warp marker | `track_index`, `clip_index`, `beat_time` |
230
- | `scrub_clip` | Preview audio at position | `track_index`, `clip_index`, `beat_time` |
231
- | `stop_scrub` | Stop preview | `track_index`, `clip_index` |
232
- | `get_display_values` | Human-readable parameter values ("440 Hz", "-6 dB") | `track_index`, `device_index` |
233
-
234
- ### Automation (8) — Clip automation CRUD + intelligent curve generation
235
-
236
- | Tool | What it does | Key params |
237
- |------|-------------|------------|
238
- | `get_clip_automation` | Lists all automation envelopes on a session clip | `track_index`, `clip_index` |
239
- | `set_clip_automation` | Writes automation points to a clip envelope | `track_index`, `clip_index`, `parameter_type`, `points` |
240
- | `clear_clip_automation` | Clears automation envelopes (specific or all) | `track_index`, `clip_index`, `parameter_type` (optional) |
241
- | `apply_automation_shape` | Generates and applies a curve to a clip in one call | `track_index`, `clip_index`, `parameter_type`, `curve_type`, `duration`, `density` |
242
- | `apply_automation_recipe` | Applies a named recipe (filter_sweep_up, dub_throw, etc.) | `track_index`, `clip_index`, `parameter_type`, `recipe`, `duration` |
243
- | `get_automation_recipes` | Lists all 15 recipes with descriptions and targets | — |
244
- | `generate_automation_curve` | Previews curve points without writing them | `curve_type`, `duration`, `density`, curve-specific params |
245
- | `analyze_for_automation` | Spectral analysis + device-aware automation suggestions | `track_index` |
246
-
247
- **16 curve types:** linear, exponential, logarithmic, s_curve, sine, sawtooth, spike, square, steps, perlin, brownian, spring, bezier, easing, euclidean, stochastic
248
-
249
- **15 recipes:** filter_sweep_up, filter_sweep_down, dub_throw, tape_stop, build_rise, sidechain_pump, fade_in, fade_out, tremolo, auto_pan, stutter, breathing, washout, vinyl_crackle, stereo_narrow
250
-
251
- ### Theory (7) — Built-in music theory analysis (zero dependencies)
252
-
253
- | Tool | What it does | Key params |
254
- |------|-------------|------------|
255
- | `analyze_harmony` | Chord-by-chord Roman numeral analysis of a clip | `track_index`, `clip_index`, `key` (optional) |
256
- | `suggest_next_chord` | Suggests theory-valid chord continuations | `track_index`, `clip_index`, `style` (common_practice/jazz/modal/pop) |
257
- | `detect_theory_issues` | Finds parallel fifths/octaves, out-of-key notes, voice crossing | `track_index`, `clip_index`, `strict` (bool) |
258
- | `identify_scale` | Deep scale/mode identification with confidence ranking | `track_index`, `clip_index` |
259
- | `harmonize_melody` | Generates 2 or 4-voice SATB harmonization | `track_index`, `clip_index`, `voices` (2 or 4) |
260
- | `generate_countermelody` | Species counterpoint against a melody | `track_index`, `clip_index`, `species` (1 or 2) |
261
- | `transpose_smart` | Diatonic or chromatic transposition to a new key | `track_index`, `clip_index`, `target_key`, `mode` (diatonic/chromatic) |
262
-
263
- **Built-in** — zero external dependencies, works on every LivePilot install.
264
-
265
- ## Units & Ranges Quick Reference
266
-
267
- | Concept | Unit/Range | Notes |
268
- |---------|-----------|-------|
269
- | Tempo | 20-999 BPM | — |
270
- | Volume | 0.0-1.0 | 0.85 ≈ 0dB, 0.0 = -inf |
271
- | Pan | -1.0 to 1.0 | -1 = full left, 0 = center |
272
- | Time/Position | Beats (float) | 1.0 = quarter note at any tempo |
273
- | Clip length | Beats (float) | 4.0 = 1 bar at 4/4 |
274
- | Pitch | 0-127 (MIDI) | 60 = C3 (middle C) |
275
- | Velocity | 1-127 | 1 = softest, 127 = loudest |
276
- | Probability | 0.0-1.0 | 1.0 = always triggers |
277
- | Color index | 0-69 | Ableton's fixed palette |
278
- | Track index | 0-based | Negative for return tracks (-1=A, -2=B), -1000 for master |
279
- | Grid (quantize) | Integer enum (0-8) | 0=None, 1=1/4, 2=1/8, 3=1/8T, 4=1/8+T, 5=1/16, 6=1/16T, 7=1/16+T, 8=1/32 |
280
- | Time signature | num/denom | denom must be power of 2 |
281
-
282
- ## Common Patterns
283
-
284
- **"Read before write"** — Always `get_session_info` or `get_track_info` before making changes.
285
-
286
- **"Verify after write"** — Re-read state after mutations to confirm the change took effect.
287
-
288
- **"Undo is your safety net"** — The `undo` tool reverts the last operation. Mention it to users.
289
-
290
- **"One step at a time"** — Don't batch unrelated operations. Verify between steps.