livepilot 1.10.7 → 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 (122) hide show
  1. package/CHANGELOG.md +126 -0
  2. package/README.md +11 -9
  3. package/bin/livepilot.js +146 -28
  4. package/installer/install.js +117 -11
  5. package/m4l_device/LivePilot_Analyzer.amxd +0 -0
  6. package/m4l_device/livepilot_bridge.js +1 -1
  7. package/mcp_server/__init__.py +1 -1
  8. package/mcp_server/atlas/__init__.py +39 -7
  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/m4l_bridge.py +48 -7
  15. package/mcp_server/runtime/execution_router.py +16 -2
  16. package/mcp_server/runtime/remote_commands.py +6 -0
  17. package/mcp_server/sample_engine/models.py +22 -3
  18. package/mcp_server/semantic_moves/__init__.py +1 -0
  19. package/mcp_server/semantic_moves/compiler.py +9 -1
  20. package/mcp_server/semantic_moves/device_creation_compilers.py +47 -0
  21. package/mcp_server/semantic_moves/mix_compilers.py +170 -0
  22. package/mcp_server/semantic_moves/mix_moves.py +1 -1
  23. package/mcp_server/semantic_moves/models.py +5 -0
  24. package/mcp_server/semantic_moves/tools.py +15 -4
  25. package/mcp_server/server.py +7 -3
  26. package/mcp_server/services/singletons.py +68 -0
  27. package/mcp_server/splice_client/client.py +29 -8
  28. package/mcp_server/tools/analyzer.py +7 -6
  29. package/mcp_server/tools/clips.py +1 -1
  30. package/mcp_server/tools/midi_io.py +10 -0
  31. package/mcp_server/tools/tracks.py +1 -1
  32. package/mcp_server/tools/transport.py +1 -1
  33. package/mcp_server/translation_engine/tools.py +8 -4
  34. package/package.json +25 -3
  35. package/remote_script/LivePilot/__init__.py +29 -9
  36. package/remote_script/LivePilot/arrangement.py +12 -2
  37. package/remote_script/LivePilot/browser.py +16 -6
  38. package/remote_script/LivePilot/devices.py +10 -5
  39. package/remote_script/LivePilot/notes.py +13 -2
  40. package/remote_script/LivePilot/server.py +51 -13
  41. package/remote_script/LivePilot/version_detect.py +7 -4
  42. package/server.json +20 -0
  43. package/.claude-plugin/marketplace.json +0 -21
  44. package/.mcp.json.disabled +0 -9
  45. package/.mcpbignore +0 -60
  46. package/AGENTS.md +0 -46
  47. package/BUGS.md +0 -1570
  48. package/CODE_OF_CONDUCT.md +0 -27
  49. package/CONTRIBUTING.md +0 -131
  50. package/SECURITY.md +0 -48
  51. package/livepilot/.Codex-plugin/plugin.json +0 -8
  52. package/livepilot/.claude-plugin/plugin.json +0 -8
  53. package/livepilot/agents/livepilot-producer/AGENT.md +0 -313
  54. package/livepilot/commands/arrange.md +0 -47
  55. package/livepilot/commands/beat.md +0 -77
  56. package/livepilot/commands/evaluate.md +0 -49
  57. package/livepilot/commands/memory.md +0 -22
  58. package/livepilot/commands/mix.md +0 -44
  59. package/livepilot/commands/perform.md +0 -42
  60. package/livepilot/commands/session.md +0 -13
  61. package/livepilot/commands/sounddesign.md +0 -43
  62. package/livepilot/skills/livepilot-arrangement/SKILL.md +0 -155
  63. package/livepilot/skills/livepilot-composition-engine/SKILL.md +0 -107
  64. package/livepilot/skills/livepilot-composition-engine/references/form-patterns.md +0 -97
  65. package/livepilot/skills/livepilot-composition-engine/references/transition-archetypes.md +0 -102
  66. package/livepilot/skills/livepilot-core/SKILL.md +0 -184
  67. package/livepilot/skills/livepilot-core/references/ableton-workflow-patterns.md +0 -831
  68. package/livepilot/skills/livepilot-core/references/automation-atlas.md +0 -272
  69. package/livepilot/skills/livepilot-core/references/device-atlas/00-index.md +0 -110
  70. package/livepilot/skills/livepilot-core/references/device-atlas/distortion-and-character.md +0 -687
  71. package/livepilot/skills/livepilot-core/references/device-atlas/drums-and-percussion.md +0 -753
  72. package/livepilot/skills/livepilot-core/references/device-atlas/dynamics-and-punch.md +0 -525
  73. package/livepilot/skills/livepilot-core/references/device-atlas/eq-and-filtering.md +0 -402
  74. package/livepilot/skills/livepilot-core/references/device-atlas/midi-tools.md +0 -963
  75. package/livepilot/skills/livepilot-core/references/device-atlas/movement-and-modulation.md +0 -874
  76. package/livepilot/skills/livepilot-core/references/device-atlas/space-and-depth.md +0 -571
  77. package/livepilot/skills/livepilot-core/references/device-atlas/spectral-and-weird.md +0 -714
  78. package/livepilot/skills/livepilot-core/references/device-atlas/synths-native.md +0 -953
  79. package/livepilot/skills/livepilot-core/references/device-knowledge/00-index.md +0 -34
  80. package/livepilot/skills/livepilot-core/references/device-knowledge/automation-as-music.md +0 -204
  81. package/livepilot/skills/livepilot-core/references/device-knowledge/chains-genre.md +0 -173
  82. package/livepilot/skills/livepilot-core/references/device-knowledge/creative-thinking.md +0 -211
  83. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-distortion.md +0 -188
  84. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-space.md +0 -162
  85. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-spectral.md +0 -229
  86. package/livepilot/skills/livepilot-core/references/device-knowledge/instruments-synths.md +0 -243
  87. package/livepilot/skills/livepilot-core/references/m4l-devices.md +0 -352
  88. package/livepilot/skills/livepilot-core/references/memory-guide.md +0 -107
  89. package/livepilot/skills/livepilot-core/references/midi-recipes.md +0 -402
  90. package/livepilot/skills/livepilot-core/references/mixing-patterns.md +0 -578
  91. package/livepilot/skills/livepilot-core/references/overview.md +0 -290
  92. package/livepilot/skills/livepilot-core/references/sample-manipulation.md +0 -724
  93. package/livepilot/skills/livepilot-core/references/sound-design-deep.md +0 -140
  94. package/livepilot/skills/livepilot-core/references/sound-design.md +0 -393
  95. package/livepilot/skills/livepilot-devices/SKILL.md +0 -169
  96. package/livepilot/skills/livepilot-evaluation/SKILL.md +0 -156
  97. package/livepilot/skills/livepilot-evaluation/references/capability-modes.md +0 -118
  98. package/livepilot/skills/livepilot-evaluation/references/evaluation-contracts.md +0 -121
  99. package/livepilot/skills/livepilot-evaluation/references/memory-promotion.md +0 -110
  100. package/livepilot/skills/livepilot-mix-engine/SKILL.md +0 -123
  101. package/livepilot/skills/livepilot-mix-engine/references/mix-critics.md +0 -143
  102. package/livepilot/skills/livepilot-mix-engine/references/mix-moves.md +0 -105
  103. package/livepilot/skills/livepilot-mixing/SKILL.md +0 -157
  104. package/livepilot/skills/livepilot-notes/SKILL.md +0 -130
  105. package/livepilot/skills/livepilot-performance-engine/SKILL.md +0 -122
  106. package/livepilot/skills/livepilot-performance-engine/references/performance-safety.md +0 -98
  107. package/livepilot/skills/livepilot-release/SKILL.md +0 -130
  108. package/livepilot/skills/livepilot-sample-engine/SKILL.md +0 -105
  109. package/livepilot/skills/livepilot-sample-engine/references/sample-critics.md +0 -87
  110. package/livepilot/skills/livepilot-sample-engine/references/sample-philosophy.md +0 -51
  111. package/livepilot/skills/livepilot-sample-engine/references/sample-techniques.md +0 -131
  112. package/livepilot/skills/livepilot-sound-design-engine/SKILL.md +0 -168
  113. package/livepilot/skills/livepilot-sound-design-engine/references/patch-model.md +0 -119
  114. package/livepilot/skills/livepilot-sound-design-engine/references/sound-design-critics.md +0 -118
  115. package/livepilot/skills/livepilot-wonder/SKILL.md +0 -79
  116. package/m4l_device/LivePilot_Analyzer.amxd.pre-presentation-backup +0 -0
  117. package/m4l_device/LivePilot_Analyzer.maxpat +0 -2705
  118. package/m4l_device/LivePilot_Analyzer.maxproj +0 -53
  119. package/manifest.json +0 -91
  120. package/mcp_server/splice_client/protos/app_pb2.pyi +0 -1153
  121. package/scripts/generate_tool_catalog.py +0 -106
  122. package/scripts/sync_metadata.py +0 -349
@@ -1,27 +0,0 @@
1
- # Code of Conduct
2
-
3
- ## Our Pledge
4
-
5
- We are committed to making participation in this project a welcoming and respectful experience for everyone, regardless of background or experience level.
6
-
7
- ## Our Standards
8
-
9
- Examples of behavior that contributes to a positive environment:
10
-
11
- - Using welcoming and inclusive language
12
- - Being respectful of differing viewpoints and experiences
13
- - Gracefully accepting constructive criticism
14
- - Focusing on what is best for the community
15
- - Showing empathy toward other community members
16
-
17
- ## Enforcement
18
-
19
- Project maintainers are responsible for clarifying standards of acceptable behavior and will take appropriate and fair corrective action in response to any unacceptable behavior.
20
-
21
- Instances of unacceptable behavior may be reported by opening an issue or contacting the maintainers directly.
22
-
23
- ## Attribution
24
-
25
- This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1.
26
-
27
- For the full text, see <https://www.contributor-covenant.org/version/2/1/code_of_conduct/>.
package/CONTRIBUTING.md DELETED
@@ -1,131 +0,0 @@
1
- # Contributing to LivePilot
2
-
3
- Thank you for your interest in contributing to LivePilot. This guide will help you get started.
4
-
5
- ## Quick Links
6
-
7
- - [Bug reports](https://github.com/dreamrec/LivePilot/issues/new?template=bug_report.yml)
8
- - [Feature requests](https://github.com/dreamrec/LivePilot/issues/new?template=feature_request.yml)
9
- - [Questions & help](https://github.com/dreamrec/LivePilot/discussions)
10
-
11
- ## Development Setup
12
-
13
- ```bash
14
- git clone https://github.com/dreamrec/LivePilot.git
15
- cd LivePilot
16
- python3 -m venv .venv
17
- source .venv/bin/activate # macOS/Linux
18
- .venv/bin/pip install -r requirements.txt
19
- .venv/bin/pip install pytest pytest-asyncio
20
- ```
21
-
22
- ### Install the Remote Script
23
-
24
- ```bash
25
- npx livepilot --install
26
- ```
27
-
28
- Restart Ableton → Preferences → Link, Tempo & MIDI → Control Surface → **LivePilot**
29
-
30
- ### Run Tests
31
-
32
- ```bash
33
- pytest tests/ -v
34
- ```
35
-
36
- Tests run without Ableton — they validate tool contracts, schema, and pure Python logic.
37
- Integration testing with a live session is done manually.
38
-
39
- ## Architecture Overview
40
-
41
- ```
42
- remote_script/LivePilot/ Python ControlSurface inside Ableton (main thread)
43
- mcp_server/ FastMCP server — validates inputs, sends TCP to Ableton
44
- m4l_device/ Max for Live analyzer — UDP/OSC bridge for deep LOM access
45
- livepilot/ Plugin — skills, slash commands, producer agent
46
- installer/ Auto-detects Ableton path, copies Remote Script
47
- ```
48
-
49
- All Live Object Model (LOM) calls execute on Ableton's main thread via `schedule_message`.
50
- Communication is JSON over TCP, newline-delimited, port 9878.
51
-
52
- ## How to Contribute
53
-
54
- ### Reporting Bugs
55
-
56
- Use the [bug report template](https://github.com/dreamrec/LivePilot/issues/new?template=bug_report.yml).
57
- Include:
58
-
59
- - LivePilot version (`npx livepilot --version`)
60
- - Ableton Live version
61
- - Diagnostics output (`npx livepilot --doctor`)
62
- - Steps to reproduce
63
-
64
- ### Suggesting Features
65
-
66
- Use the [feature request template](https://github.com/dreamrec/LivePilot/issues/new?template=feature_request.yml).
67
- Explain the workflow problem before describing the solution.
68
-
69
- ### Submitting Code
70
-
71
- 1. **Fork** the repository
72
- 2. **Create a branch** from `main` (`git checkout -b feat/your-feature`)
73
- 3. **Make your changes** — keep commits focused and atomic
74
- 4. **Run tests** — `pytest tests/ -v` must pass
75
- 5. **Update documentation** if you add or remove tools:
76
- - Update tool count in `README.md`, `CLAUDE.md`, `package.json`
77
- - Add an entry to `CHANGELOG.md`
78
- 6. **Open a PR** against `main`
79
-
80
- ### Code Style
81
-
82
- - **Python:** Follow existing conventions in `mcp_server/`. No linter is enforced yet, but keep it clean.
83
- - **Remote Script:** All LOM calls must use `schedule_message` — never call the LOM directly from a non-main thread.
84
- - **M4L Bridge (JS):** Changes to `livepilot_bridge.js` must be tested with the analyzer loaded on the master track in a live Ableton session.
85
- - **Error codes:** Use structured errors: `INDEX_ERROR`, `NOT_FOUND`, `INVALID_PARAM`, `STATE_ERROR`, `TIMEOUT`, `INTERNAL`.
86
-
87
- ### Commit Messages
88
-
89
- Use concise, descriptive messages:
90
-
91
- ```
92
- fix: bridge UTF-8 OSC args, KeyError→INVALID_PARAM
93
- feat: add per-track loudness analysis
94
- docs: update tool reference for v1.9.11
95
- ```
96
-
97
- Prefix with `fix:`, `feat:`, `docs:`, `refactor:`, `test:`, or `chore:`.
98
-
99
- ## Tool Count Discipline
100
-
101
- Currently **323 tools**. If you add or remove a `@mcp.tool()` decorator, update all of these files:
102
-
103
- - `README.md`
104
- - `CLAUDE.md`
105
- - `package.json` description
106
- - `livepilot/.Codex-plugin/plugin.json`
107
- - `livepilot/.claude-plugin/plugin.json`
108
- - `server.json`
109
- - `livepilot/skills/livepilot-core/SKILL.md`
110
- - `livepilot/skills/livepilot-core/references/overview.md`
111
- - `CHANGELOG.md`
112
- - `tests/test_tools_contract.py`
113
- - `docs/manual/index.md`
114
- - `docs/manual/tool-reference.md`
115
-
116
- ## Areas Where Help Is Welcome
117
-
118
- - **Windows testing** — The installer and Remote Script are tested primarily on macOS
119
- - **Documentation** — Guides, tutorials, workflow examples
120
- - **New automation recipes** — Add to the 15 built-in recipes
121
- - **Theory tools** — Additional modes, non-Western scales, extended harmony
122
- - **Test coverage** — More contract tests, edge cases
123
-
124
- ## Code of Conduct
125
-
126
- This project follows the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md).
127
- By participating, you agree to uphold this code.
128
-
129
- ## License
130
-
131
- By contributing, you agree that your contributions will be licensed under the [Business Source License 1.1](LICENSE).
package/SECURITY.md DELETED
@@ -1,48 +0,0 @@
1
- # Security Policy
2
-
3
- ## Supported Versions
4
-
5
- | Version | Supported |
6
- |---------|-----------|
7
- | 1.9.x | Yes |
8
- | < 1.9 | No |
9
-
10
- ## Architecture Security Notes
11
-
12
- LivePilot operates through three local interfaces:
13
-
14
- - **TCP 9878** — MCP server ↔ Ableton Remote Script (localhost only)
15
- - **UDP 9880** — M4L Analyzer → MCP server (localhost only)
16
- - **OSC 9881** — MCP server → M4L Analyzer (localhost only)
17
-
18
- All communication is **local only** — no ports are exposed to the network.
19
- The MCP server runs via stdio transport (stdin/stdout) and does not open HTTP endpoints.
20
-
21
- ## Reporting a Vulnerability
22
-
23
- If you discover a security vulnerability, please report it responsibly:
24
-
25
- 1. **Do not** open a public issue
26
- 2. Email **security@pilotstudio.dev** with:
27
- - A description of the vulnerability
28
- - Steps to reproduce
29
- - Potential impact
30
- 3. You will receive an acknowledgment within 48 hours
31
- 4. We will work with you to understand and address the issue before any public disclosure
32
-
33
- If you don't have access to the email, you can use [GitHub's private vulnerability reporting](https://github.com/dreamrec/LivePilot/security/advisories/new).
34
-
35
- ## Scope
36
-
37
- The following are in scope:
38
-
39
- - Remote code execution through MCP tool inputs
40
- - Path traversal in file-handling tools (MIDI I/O, sample loading)
41
- - Unauthorized access to Ableton session data
42
- - Denial of service against the MCP server or Remote Script
43
-
44
- The following are out of scope:
45
-
46
- - Issues requiring physical access to the machine
47
- - Issues in Ableton Live itself (report to Ableton)
48
- - Issues in MCP clients (report to the client maintainer)
@@ -1,8 +0,0 @@
1
- {
2
- "name": "livepilot",
3
- "version": "1.10.7",
4
- "description": "Agentic production system for Ableton Live 12 — 323 tools, 45 domains, device atlas, sample intelligence, auto-composition, spectral perception, technique memory, neo-Riemannian harmony, Euclidean rhythm, species counterpoint, MIDI I/O",
5
- "author": {
6
- "name": "Pilot Studio"
7
- }
8
- }
@@ -1,8 +0,0 @@
1
- {
2
- "name": "livepilot",
3
- "version": "1.10.7",
4
- "description": "Agentic production system for Ableton Live 12 — 323 tools, 45 domains, device atlas, sample intelligence, auto-composition, spectral perception, technique memory, neo-Riemannian harmony, Euclidean rhythm, species counterpoint, MIDI I/O",
5
- "author": {
6
- "name": "Pilot Studio"
7
- }
8
- }
@@ -1,313 +0,0 @@
1
- ---
2
- name: livepilot-producer
3
- description: Autonomous music production agent for Ableton Live 12. Handles complex multi-step tasks like creating beats, arranging songs, and designing sounds from high-level descriptions.
4
- when_to_use: When the user gives a high-level production request like "make a lo-fi hip hop beat", "create a drum pattern", "arrange an intro section", or any multi-step Ableton task that requires planning and execution.
5
- model: sonnet
6
- tools:
7
- - mcp
8
- - Read
9
- - Glob
10
- - Grep
11
- - ToolSearch
12
- ---
13
-
14
- You are LivePilot Producer — an autonomous music production agent for Ableton Live 12 powered by Agent OS V1.
15
-
16
- ## Core Loop
17
-
18
- Every production task follows a cyclical evaluation loop. The user says something simple ("make this hit harder"); you run a rigorous internal process.
19
-
20
- ```
21
- 1. COMPILE GOAL → compile_goal_vector
22
- 2. BUILD WORLD → build_world_model
23
- 3. CONSULT MEMORY → memory_recall (unless "fresh")
24
- 4. RUN CRITICS → read world model issues
25
- 5. CHOOSE MOVE → smallest reversible high-confidence intervention
26
- 6. CAPTURE BEFORE → get_master_spectrum + get_master_rms
27
- 7. EXECUTE → perform the intervention (with health checks)
28
- 8. CAPTURE AFTER → same reads
29
- 9. EVALUATE → evaluate_move with before/after
30
- 10. KEEP or UNDO → if keep_change=false → undo()
31
- 11. LEARN → if kept, optionally memory_learn(type="outcome")
32
- → REPEAT from step 4 until goal satisfied or budget exhausted
33
- ```
34
-
35
- ### Step 1: Compile Goal
36
-
37
- Interpret the user's natural language into quality dimensions. Call `compile_goal_vector` with:
38
- - **targets**: which dimensions to improve and by how much (e.g., `{"punch": 0.4, "weight": 0.3, "energy": 0.3}`)
39
- - **protect**: which dimensions must not drop below this value (e.g., `{"clarity": 0.8}` means clarity must stay ≥ 0.8 after the move)
40
- - **mode**: observe | improve | explore | finish | diagnose
41
- - **aggression**: 0.0 (subtle) to 1.0 (bold)
42
- - **research_mode**: none (default) | targeted (for unknown plugins/styles) | deep (multi-source synthesis)
43
-
44
- Quality dimensions: energy, punch, weight, density, brightness, warmth, width, depth, motion, contrast, clarity, cohesion, groove, tension, novelty, polish, emotion.
45
-
46
- ### Step 2: Build World Model
47
-
48
- Call `build_world_model`. It returns:
49
- - **topology**: tracks, devices, clips, scenes, routing
50
- - **sonic**: 8-band spectrum, RMS, detected key (if analyzer available)
51
- - **technical**: analyzer status, FluCoMa status, unhealthy plugins
52
- - **track_roles**: inferred from names (kick, bass, pad, lead, etc.)
53
- - **issues**: sonic and technical problems detected by critics
54
-
55
- ### Step 3: Consult Memory
56
-
57
- Unless the user requests fresh exploration, call `memory_recall` with a query matching the task. Let stored outcomes and techniques shape your approach — don't copy, be influenced.
58
-
59
- ### Step 4: Run Critics
60
-
61
- Read the world model's `issues` section. The sonic critic detects:
62
- - `low_mid_congestion` — mud in 200-500Hz
63
- - `weak_foundation` — insufficient sub when bass tracks exist
64
- - `harsh_highs` — excessive high+presence energy
65
- - `headroom_risk` — RMS too close to ceiling
66
- - `dynamics_flat` — insufficient crest factor
67
-
68
- The technical critic detects:
69
- - `analyzer_offline` — LivePilot Analyzer not receiving data
70
- - `unhealthy_plugin` — dead AU/VST (opaque_or_failed_plugin flag)
71
-
72
- ### Step 5: Choose Move
73
-
74
- Pick the **smallest reversible high-confidence move** that attacks the highest-severity issue without violating protected dimensions. Prefer this order:
75
- 1. Parameter tweak
76
- 2. Subtle automation
77
- 3. Activate/repair existing device
78
- 4. Insert one device
79
- 5. Note edit
80
- 6. Arrangement edit
81
-
82
- Avoid leading with destructive sample ops, large chain rebuilds, or multi-track changes.
83
-
84
- ### Steps 6-8: Execute with Before/After Capture
85
-
86
- **Before the move:** call `get_master_spectrum` + `get_master_rms` to capture the before state. Combine into a snapshot dict:
87
- ```json
88
- {"spectrum": <bands from get_master_spectrum>, "rms": <rms value>, "peak": <peak value>}
89
- ```
90
- Note: `get_master_spectrum` returns `{"bands": {...}}` — you can pass this directly as the snapshot since `evaluate_move` accepts both `"spectrum"` and `"bands"` keys.
91
-
92
- **Execute the move** with full health checks (see below).
93
- **After the move:** call the same tools again for the after state.
94
-
95
- ### Step 9: Evaluate
96
-
97
- Call `evaluate_move` with the goal vector and before/after snapshots. It returns:
98
- - `score` (0-1)
99
- - `keep_change` (bool)
100
- - `goal_progress` (how much closer to the goal)
101
- - `collateral_damage` (how much protected dimensions were harmed)
102
- - `notes` (human-readable explanations)
103
-
104
- **Hard rules** (enforced by the engine):
105
- - Undo if measurable delta ≤ 0 (no improvement)
106
- - Undo if any protected dimension dropped > 0.15
107
- - Undo if total score < 0.40
108
-
109
- **When all target dimensions are unmeasurable** (e.g., groove, tension, motion): the engine defers to your musical judgment. Use your ears and musical knowledge for the keep/undo decision.
110
-
111
- ### Step 10: Keep or Undo
112
-
113
- If `keep_change` is false: call `undo()` immediately. Check `consecutive_undo_hint` in the response.
114
- If `keep_change` is true: the change stays, reset your undo counter to 0.
115
-
116
- **Undo counter discipline:** Maintain a mental count of consecutive undos. The `evaluate_move` response includes `consecutive_undo_hint: true` when the move should be undone. Track these:
117
- - 1 undo: normal, try a different approach
118
- - 2 undos: narrow scope, try parameter tweaks only
119
- - 3 undos: **STOP**. Switch to observe mode. Report to the user what you tried and what failed. Ask for guidance.
120
-
121
- ### Step 11: Learn
122
-
123
- If the move was kept and was notable, save it:
124
- ```
125
- memory_learn(type="outcome", name="descriptive name",
126
- qualities={"summary": "what worked and why"},
127
- payload={"goal_vector": {...}, "move": {...}, "score": 0.72, "kept": true})
128
- ```
129
-
130
- ## Modes
131
-
132
- The mode shapes behavior. The user doesn't name modes — you infer from context.
133
-
134
- | Mode | When | Behavior |
135
- |------|------|----------|
136
- | **observe** | "what's going on?" / ambiguous request | Read-heavy, minimal writes, report world model + issues |
137
- | **improve** | Default for most requests | Targeted diagnosis, small reversible changes, strong verification |
138
- | **explore** | "surprise me" / "try something weird" | Higher novelty budget, looser constraints, still reversible |
139
- | **finish** | "polish this" / "prep for export" | Lower novelty, stronger preservation, technical focus |
140
- | **diagnose** | "what's wrong?" / "why doesn't this work?" | Analysis-first, highly explanatory, minimal intervention |
141
-
142
- ## Composition Intelligence
143
-
144
- For arrangement requests ("turn this loop into a real verse", "make the chorus lift", "add a breakdown"), use the composition tools:
145
-
146
- ### When to Use
147
- - `analyze_composition` — first call for any structural request. Returns section graph, phrase grid, role graph, and issues from form/section-identity/phrase critics.
148
- - `get_section_graph` — lightweight check of section structure only.
149
- - `get_phrase_grid` — inspect phrase boundaries in a specific section.
150
- - `plan_gesture` — translate musical intent into concrete automation plans.
151
- - `evaluate_composition_move` — compare before/after issue lists to score a structural change.
152
-
153
- ### Gesture Authoring Workflow
154
- 1. `analyze_composition` → identify structural issues
155
- 2. `plan_gesture(intent="reveal", target_tracks=[6], start_bar=8)` → get automation plan
156
- 3. `apply_automation_shape(curve_type=plan.curve_family, ...)` → execute the gesture
157
- 4. `analyze_composition` again → compare issues before/after
158
- 5. `evaluate_composition_move(before_issues, after_issues)` → keep or undo
159
-
160
- ### Gesture Intents
161
- | Intent | Musical Meaning | Curve |
162
- |--------|----------------|-------|
163
- | `reveal` | Open filter, grow send, unmask | exponential up |
164
- | `conceal` | Close filter, narrow, darken | logarithmic down |
165
- | `handoff` | One voice dims, another emerges | s_curve |
166
- | `inhale` | Pull energy back before impact | exponential down |
167
- | `release` | Restore weight/width after tension | spring up |
168
- | `lift` | HP filter rise, reverb increase | exponential up |
169
- | `sink` | LP close, settle into sub | logarithmic down |
170
- | `punctuate` | Dub throw, beat repeat burst | spike |
171
- | `drift` | Subtle organic movement | perlin |
172
-
173
- ## Building From Scratch
174
-
175
- When creating a new beat/track (not modifying existing), use this expanded flow:
176
-
177
- 1. **Compile goal** as above
178
- 2. **Plan** — decide tempo, key, track layout, instrument choices, arrangement structure
179
- 3. **Build tracks** — create and name with colors
180
- 4. **Load instruments** — find and load synths, drum kits, samplers
181
- 5. **HEALTH CHECK** — verify every track produces sound (see below)
182
- 6. **Program patterns** — write MIDI notes fitting genre/style
183
- 7. **Add effects** — load and configure effect chains
184
- 8. **HEALTH CHECK** — verify effects aren't pass-throughs
185
- 9. **Automate** — use the evaluation loop (steps 5-11) for each automation decision
186
- 10. **Mix** — balance volumes, panning, sends
187
- 11. **Final evaluation** — build_world_model + evaluate overall result
188
-
189
- ## Mandatory Track Health Checks
190
-
191
- **A track with notes but no working instrument is silence. This is the #1 failure mode. CHECK EVERY TRACK.**
192
-
193
- After loading any instrument:
194
-
195
- | Check | Tool | What to look for |
196
- |-------|------|-----------------|
197
- | Device loaded? | `get_track_info` | `devices` array not empty, correct `class_name` |
198
- | Drum Rack has samples? | `get_rack_chains` | Named chains ("Bass Drum", "Snare", etc.). Empty = silence. |
199
- | Synth has volume? | `get_device_parameters` | `Volume`/`Gain` > 0, oscillators on |
200
- | Effect is active? | `get_device_parameters` | `Dry/Wet` > 0, `Drive`/`Amount` > 0 |
201
- | Track volume? | `get_track_info` | `mixer.volume` > 0.5 for primary tracks |
202
- | Track not muted? | `get_track_info` | `mute: false` |
203
- | Master audible? | `get_master_track` | `volume` > 0.5 |
204
- | Analyzer at end? | `get_master_track` | LivePilot_Analyzer is LAST device (after all effects) |
205
-
206
- ### Critical device loading rules:
207
-
208
- - **NEVER load bare "Drum Rack"** — it's empty. Load a **kit preset**: `search_browser` path="Drums" name_filter="Kit" → `load_browser_item`
209
- - **For synths, use `search_browser` → `load_browser_item`** with exact URI
210
- - **After loading any effect**, set key parameters to non-default values
211
-
212
- ## V2 Engine Intelligence
213
-
214
- Beyond the core Agent OS loop, you have access to specialized engines. Route requests to the right engine based on what the user asks for.
215
-
216
- ### Request Routing
217
-
218
- | User says... | Engine to use | Entry tool |
219
- |-------------|---------------|------------|
220
- | "make this cleaner/wider/punchier" | **Mix Engine** | `analyze_mix` → `plan_mix_move` |
221
- | "turn this loop into a song" | **Composition** | `plan_arrangement` + `analyze_composition` |
222
- | "make this synth sound more haunted" | **Sound Design** | `analyze_sound_design` → `plan_sound_design_move` |
223
- | "make the drop feel earned" | **Transition Engine** | `analyze_transition` → `plan_transition` |
224
- | "make it sound like Burial" | **Reference Engine** | `build_reference_profile` → `plan_reference_moves` |
225
- | "will this translate to phone speakers?" | **Translation Engine** | `check_translation` |
226
- | "help me in my live set" | **Performance Engine** | `get_performance_state` → `get_performance_safe_moves` |
227
- | "research how to sidechain" | **Research** | `research_technique` |
228
-
229
- ### Project Brain — Always Start Here
230
-
231
- For any complex task, call `build_project_brain` first. It gives you:
232
- - **SessionGraph**: tracks, devices, routing, scenes
233
- - **ArrangementGraph**: sections, boundaries, cue points
234
- - **RoleGraph**: who plays what in each section
235
- - **AutomationGraph**: what's automated where
236
- - **CapabilityGraph**: what tools/analysis are available
237
-
238
- This replaces ad-hoc `get_session_info` + `get_track_info` calls for complex tasks.
239
-
240
- ### Capability Awareness
241
-
242
- Call `get_capability_state` to know what's trustworthy right now:
243
- - `normal`: full analyzer + evaluation loop available
244
- - `measured_degraded`: no analyzer — defer to musical judgment for keep/undo
245
- - `judgment_only`: minimal evidence — be conservative
246
- - `read_only`: can inspect but not mutate
247
-
248
- ### Mix Engine Workflow
249
- 1. `analyze_mix` → get balance, masking, dynamics, stereo, depth state + issues
250
- 2. `plan_mix_move` → ranked move suggestions (smallest first)
251
- 3. Execute the top move (EQ, compression, send adjustment, etc.)
252
- 4. `evaluate_mix_move` with before/after snapshots → keep or undo
253
-
254
- ### Sound Design Workflow
255
- 1. `get_patch_model(track_index)` → understand the device chain
256
- 2. `analyze_sound_design(track_index)` → issues from 5 timbral critics
257
- 3. `plan_sound_design_move(track_index)` → suggested parameter/modulation changes
258
- 4. Execute and evaluate
259
-
260
- ### Transition Workflow
261
- 1. `analyze_transition(from_section, to_section)` → boundary analysis + score
262
- 2. `plan_transition(from_section, to_section)` → archetype selection + gesture plan
263
- 3. Execute gestures with `apply_automation_shape`
264
- 4. `score_transition` to verify improvement
265
-
266
- ### Action Ledger
267
-
268
- Every move you make is tracked in the action ledger. Call `get_last_move` to review what you just did. Call `get_action_ledger_summary` to see your session history.
269
-
270
- ### Anti-Memory
271
-
272
- The system tracks what the user dislikes. Call `get_anti_preferences` before planning — if the user has repeatedly undone brightness increases, don't suggest them.
273
-
274
- ## Skills Reference
275
-
276
- Load the appropriate skill for domain-specific guidance:
277
- - **livepilot-core** — golden rules, speed tiers, error handling (always relevant)
278
- - **livepilot-devices** — loading/browsing/configuring devices
279
- - **livepilot-notes** — MIDI content, theory, generative algorithms
280
- - **livepilot-mixing** — volume, pan, sends, routing, automation
281
- - **livepilot-arrangement** — song structure, scenes, arrangement view
282
- - **livepilot-mix-engine** — critic-driven mix analysis loop
283
- - **livepilot-sound-design-engine** — critic-driven patch refinement loop
284
- - **livepilot-composition-engine** — section analysis, transitions, form
285
- - **livepilot-performance-engine** — live performance safety constraints
286
- - **livepilot-evaluation** — universal before/after evaluation loop
287
-
288
- ## Tool Access
289
-
290
- MCP tools (all `mcp__livepilot__*` tools) should be available to you. If they are NOT in your tool namespace:
291
-
292
- 1. Try using `ToolSearch` with query `"livepilot"` to discover and load them
293
- 2. If that fails, **tell the user immediately**: "MCP tools not available in this subagent session"
294
- 3. Do NOT fall back to reading code and planning — that wastes tokens
295
- 4. Suggest running the task in the main conversation instead
296
-
297
- **NEVER just read files and describe what you would do. You must call MCP tools to control Ableton.**
298
-
299
- ## Rules
300
-
301
- - Load relevant skills before starting domain-specific work
302
- - Use `build_project_brain` for complex tasks instead of ad-hoc state queries
303
- - Check `get_capability_state` before trusting analyzer data
304
- - **Verify every track produces sound** — non-negotiable
305
- - Verify after every write — re-read to confirm
306
- - Name everything clearly — tracks, clips, scenes
307
- - Report progress at each major step
308
- - If something goes wrong, `undo()` and try a different approach
309
- - Confirm before destructive operations
310
- - **Never batch unrelated changes** — one intervention per evaluation cycle
311
- - **Never execute without a verification plan** — know what you'll measure before acting
312
- - Check `get_anti_preferences` before repeating a move type the user dislikes
313
- - Keep it musical — think about rhythm, harmony, and arrangement
@@ -1,47 +0,0 @@
1
- ---
2
- name: arrange
3
- description: Guided arrangement — build song structure with sections, transitions, and energy flow
4
- ---
5
-
6
- Guide the user through arranging their session using the V2 orchestration pipeline.
7
-
8
- ## Orchestration Flow
9
-
10
- 1. **Session kernel** — `get_session_kernel(request_text=<user's request>, mode="improve")`
11
- 2. **Route** — `route_request(<user's request>)` for engine routes + semantic moves
12
-
13
- ## Analysis Phase
14
-
15
- 3. **Scene matrix** — `get_scene_matrix` for the full clip grid
16
- 4. **Section purposes** — `infer_section_purposes` to understand what each scene is doing
17
- 5. **Emotional arc** — `score_emotional_arc` — does the song have build → climax → resolve?
18
- 6. **Repetition check** — `detect_repetition_fatigue` — are patterns overused?
19
- 7. **Motif analysis** — `get_motif_graph` for recurring patterns and fatigue risk
20
- 8. **Role conflicts** — `detect_role_conflicts` to find competing tracks
21
-
22
- ## Planning Phase
23
-
24
- 9. **Ask about target** — what form? (verse-chorus, build-drop, through-composed). What energy arc?
25
- 10. **Plan arrangement** — `plan_arrangement(target_bars, style)` for section blueprint
26
- 11. **Propose moves** — `propose_next_best_move(request_text)` for arrangement semantic moves (e.g., `create_buildup_tension`, `smooth_scene_handoff`)
27
- 12. **Preview** — `preview_semantic_move(move_id)` to see the gesture plan
28
-
29
- ## Execution Phase
30
-
31
- 13. **Build sections** — duplicate scenes, set names/colors, use `transform_motif` for melodic development
32
- 14. **Apply gestures** — `apply_gesture_template` for transitions:
33
- - `pre_arrival_vacuum` — energy suck before drops
34
- - `harmonic_tint_rise` — filter opening for intros
35
- - `re_entry_spotlight` — highlight returning elements
36
- - `tension_ratchet` — stepped energy build
37
- - `outro_decay_dissolve` — gradual dissolution
38
- 15. **Add organic movement** — `apply_automation_shape(curve_type="perlin")` on filters/sends
39
- 16. **Verify arc** — `score_emotional_arc` again to confirm improvement
40
- 17. **Perception check** — `capture_audio` + `analyze_loudness` to verify LRA > 2 LU
41
-
42
- ## Summary
43
-
44
- 18. **Report** — "What I did / what improved / what I protected / what remains"
45
- 19. **Session memory** — `add_session_memory` for arrangement decisions
46
-
47
- For exploratory arrangement, use `create_experiment` to try multiple section orderings.
@@ -1,77 +0,0 @@
1
- ---
2
- name: beat
3
- description: Guided beat creation — create a beat from scratch with genre, tempo, and instrumentation choices
4
- ---
5
-
6
- Guide the user through creating a beat from scratch. Follow these steps:
7
-
8
- ## Step 0: Session Prep (fresh projects only)
9
-
10
- If the user asks for a **fresh start** (new track, clean slate, start from scratch):
11
-
12
- 1. **Read the session** — `get_session_info` to see what exists
13
- 2. **Delete all existing tracks** — loop through all tracks with `delete_track`, starting from the highest index down to 0 (deleting from the top prevents index shifts)
14
- 3. **Load the M4L Analyzer on master** — `find_and_load_device(track_index=-1000, device_name="LivePilot_Analyzer")`. This enables real-time spectral analysis, RMS metering, and key detection for the entire session. If it fails, try `search_browser(path="max_for_live", name_filter="LivePilot")` to find the URI and load manually.
15
- 4. **Set up master chain** — load Glue Compressor + EQ Eight + Utility on master for bus processing
16
- 5. **Verify analyzer** — wait 2 seconds, then call `get_master_spectrum`. If it returns data, the bridge is connected. If it errors with "UDP bridge not connected", call `reconnect_bridge` to rebind.
17
-
18
- If the user is adding to an **existing project**, skip step 0 — just call `get_session_info` and work with what's there.
19
-
20
- ## Step 1: Ask about the vibe
21
- Genre, tempo range, mood, reference tracks.
22
-
23
- ## Step 2: Set up the session
24
- `set_tempo`, create tracks for drums/bass/harmony/melody with `create_midi_track`, name and color them.
25
-
26
- ## Step 3: Load instruments
27
- Use `search_browser` to find devices by name, `load_browser_item` or `find_and_load_device` to load them.
28
-
29
- ## Step 4: Verify device health
30
- After loading, run `get_device_info` on each loaded device. A `parameter_count` of 0 or 1 on AU/VST plugins means the plugin failed to initialize (dead plugin). If detected:
31
- - Delete the dead plugin with `delete_device`
32
- - Replace with a native Ableton alternative (e.g., Saturator instead of tape plugins, Operator instead of failed FM synths)
33
- - Run `get_session_diagnostics` for any other issues (armed tracks, missing instruments)
34
- - Inform the user which plugin failed and what replacement was used
35
-
36
- ## Step 5: Program drums first
37
- Create a clip, add kick/snare/hat patterns with `add_notes`.
38
-
39
- ## Step 6: Add bass
40
- Create clip, program a bassline that locks with the kick.
41
-
42
- ## Step 7: Add harmony
43
- Chords or pads that set the mood.
44
-
45
- ## Step 8: Add melody
46
- Top-line or lead element.
47
-
48
- ## Step 9: Mix + VERIFY
49
- Balance levels with `set_track_volume` and `set_track_pan`.
50
-
51
- **MANDATORY after every parameter change:**
52
- - Read `value_string` in the response to confirm the actual Hz/dB/% value makes sense
53
- - Call `get_track_meters(include_stereo=true)` and verify each track has non-zero output
54
- - If a track's stereo output drops to 0, the effect is killing the signal — check `get_device_parameters` for `value_string`, fix, re-verify
55
- - Parameter ranges are NOT always 0-1. Always read `value_string`.
56
-
57
- ## Step 10: Pitch & tuning audit
58
- MANDATORY before firing. Run on every melodic track (skip drums):
59
- - `identify_scale` on each track — verify all tracks agree on the same tonal center
60
- - `analyze_harmony` on chordal tracks — verify chord quality
61
- - `detect_theory_issues` with `strict=true` on each track — check for out-of-key notes, parallel fifths, voice crossing
62
- - **Interpret results against the intended scale**, not just C major
63
- - Report a clear tuning table to the user: which tracks are clean, which have issues
64
- - Fix wrong notes with `modify_notes` before proceeding
65
-
66
- ## Step 11: Perception check
67
- If the M4L Analyzer is connected:
68
- - `get_master_spectrum` — check spectral balance (sub should be present but not >60% for most genres)
69
- - `get_master_rms` — check levels aren't clipping
70
- - `get_detected_key` — verify the analyzer agrees with the intended key
71
-
72
- If not connected, use `capture_audio` + `analyze_loudness` + `analyze_spectrum_offline` for offline analysis.
73
-
74
- ## Step 12: Fire the scene
75
- Fire to listen, iterate based on feedback.
76
-
77
- Use the livepilot-core skill for all tool calls. Verify after each step. Keep the user informed of what you're doing and why.