livepilot 1.26.0 → 1.26.1

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 (181) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +1 -1
  3. package/installer/codex.js +87 -9
  4. package/livepilot/.Codex-plugin/plugin.json +8 -0
  5. package/livepilot/.claude-plugin/plugin.json +8 -0
  6. package/livepilot/.mcp.json +8 -0
  7. package/livepilot/agents/livepilot-producer/AGENT.md +314 -0
  8. package/livepilot/commands/arrange.md +47 -0
  9. package/livepilot/commands/beat.md +81 -0
  10. package/livepilot/commands/evaluate.md +49 -0
  11. package/livepilot/commands/memory.md +22 -0
  12. package/livepilot/commands/mix.md +47 -0
  13. package/livepilot/commands/perform.md +42 -0
  14. package/livepilot/commands/session.md +13 -0
  15. package/livepilot/commands/sounddesign.md +58 -0
  16. package/livepilot/rubrics/default_preset_check.md +82 -0
  17. package/livepilot/rubrics/layer_accumulation.md +79 -0
  18. package/livepilot/rubrics/layer_precision.md +79 -0
  19. package/livepilot/rubrics/modulation_presence.md +63 -0
  20. package/livepilot/rubrics/sound_design_depth.md +40 -0
  21. package/livepilot/skills/livepilot-arrangement/SKILL.md +164 -0
  22. package/livepilot/skills/livepilot-composition-engine/SKILL.md +151 -0
  23. package/livepilot/skills/livepilot-composition-engine/references/form-patterns.md +97 -0
  24. package/livepilot/skills/livepilot-composition-engine/references/transition-archetypes.md +102 -0
  25. package/livepilot/skills/livepilot-core/SKILL.md +261 -0
  26. package/livepilot/skills/livepilot-core/references/ableton-workflow-patterns.md +831 -0
  27. package/livepilot/skills/livepilot-core/references/affordances/_schema.md +160 -0
  28. package/livepilot/skills/livepilot-core/references/affordances/devices/auto-filter.yaml +133 -0
  29. package/livepilot/skills/livepilot-core/references/affordances/devices/chorus-ensemble.yaml +91 -0
  30. package/livepilot/skills/livepilot-core/references/affordances/devices/compressor.yaml +98 -0
  31. package/livepilot/skills/livepilot-core/references/affordances/devices/convolution-reverb.yaml +113 -0
  32. package/livepilot/skills/livepilot-core/references/affordances/devices/corpus.yaml +84 -0
  33. package/livepilot/skills/livepilot-core/references/affordances/devices/drift.yaml +105 -0
  34. package/livepilot/skills/livepilot-core/references/affordances/devices/echo.yaml +108 -0
  35. package/livepilot/skills/livepilot-core/references/affordances/devices/eq-eight.yaml +95 -0
  36. package/livepilot/skills/livepilot-core/references/affordances/devices/glue-compressor.yaml +88 -0
  37. package/livepilot/skills/livepilot-core/references/affordances/devices/granulator-iii.yaml +104 -0
  38. package/livepilot/skills/livepilot-core/references/affordances/devices/hybrid-reverb.yaml +83 -0
  39. package/livepilot/skills/livepilot-core/references/affordances/devices/operator.yaml +98 -0
  40. package/livepilot/skills/livepilot-core/references/affordances/devices/ping-pong-delay.yaml +104 -0
  41. package/livepilot/skills/livepilot-core/references/affordances/devices/poli.yaml +98 -0
  42. package/livepilot/skills/livepilot-core/references/affordances/devices/saturator.yaml +98 -0
  43. package/livepilot/skills/livepilot-core/references/affordances/devices/shifter.yaml +77 -0
  44. package/livepilot/skills/livepilot-core/references/affordances/devices/simpler.yaml +113 -0
  45. package/livepilot/skills/livepilot-core/references/affordances/devices/utility.yaml +95 -0
  46. package/livepilot/skills/livepilot-core/references/affordances/devices/vinyl-distortion.yaml +92 -0
  47. package/livepilot/skills/livepilot-core/references/affordances/devices/wavetable.yaml +98 -0
  48. package/livepilot/skills/livepilot-core/references/artist-vocabularies.md +389 -0
  49. package/livepilot/skills/livepilot-core/references/automation-atlas.md +272 -0
  50. package/livepilot/skills/livepilot-core/references/concepts/_schema.md +158 -0
  51. package/livepilot/skills/livepilot-core/references/concepts/artists/akufen.yaml +116 -0
  52. package/livepilot/skills/livepilot-core/references/concepts/artists/aphex-twin.yaml +133 -0
  53. package/livepilot/skills/livepilot-core/references/concepts/artists/arca-sophie.yaml +131 -0
  54. package/livepilot/skills/livepilot-core/references/concepts/artists/autechre.yaml +130 -0
  55. package/livepilot/skills/livepilot-core/references/concepts/artists/basic-channel.yaml +140 -0
  56. package/livepilot/skills/livepilot-core/references/concepts/artists/basinski.yaml +126 -0
  57. package/livepilot/skills/livepilot-core/references/concepts/artists/boards-of-canada.yaml +124 -0
  58. package/livepilot/skills/livepilot-core/references/concepts/artists/burial.yaml +127 -0
  59. package/livepilot/skills/livepilot-core/references/concepts/artists/com-truise-tycho.yaml +121 -0
  60. package/livepilot/skills/livepilot-core/references/concepts/artists/daft-punk.yaml +117 -0
  61. package/livepilot/skills/livepilot-core/references/concepts/artists/dj-premier-rza.yaml +119 -0
  62. package/livepilot/skills/livepilot-core/references/concepts/artists/gas.yaml +134 -0
  63. package/livepilot/skills/livepilot-core/references/concepts/artists/hawtin.yaml +127 -0
  64. package/livepilot/skills/livepilot-core/references/concepts/artists/isolee-luomo.yaml +130 -0
  65. package/livepilot/skills/livepilot-core/references/concepts/artists/j-dilla.yaml +133 -0
  66. package/livepilot/skills/livepilot-core/references/concepts/artists/jeff-mills.yaml +120 -0
  67. package/livepilot/skills/livepilot-core/references/concepts/artists/johannsson-richter.yaml +132 -0
  68. package/livepilot/skills/livepilot-core/references/concepts/artists/madlib.yaml +124 -0
  69. package/livepilot/skills/livepilot-core/references/concepts/artists/moodymann-theo-parrish.yaml +121 -0
  70. package/livepilot/skills/livepilot-core/references/concepts/artists/oneohtrix-point-never.yaml +126 -0
  71. package/livepilot/skills/livepilot-core/references/concepts/artists/photek-source-direct.yaml +120 -0
  72. package/livepilot/skills/livepilot-core/references/concepts/artists/rashad-spinn-traxman.yaml +122 -0
  73. package/livepilot/skills/livepilot-core/references/concepts/artists/robert-henke.yaml +113 -0
  74. package/livepilot/skills/livepilot-core/references/concepts/artists/shackleton.yaml +124 -0
  75. package/livepilot/skills/livepilot-core/references/concepts/artists/skream-mala.yaml +119 -0
  76. package/livepilot/skills/livepilot-core/references/concepts/artists/stars-of-the-lid.yaml +119 -0
  77. package/livepilot/skills/livepilot-core/references/concepts/artists/tim-hecker.yaml +122 -0
  78. package/livepilot/skills/livepilot-core/references/concepts/artists/villalobos.yaml +135 -0
  79. package/livepilot/skills/livepilot-core/references/concepts/genres/ambient.yaml +137 -0
  80. package/livepilot/skills/livepilot-core/references/concepts/genres/boom_bap.yaml +124 -0
  81. package/livepilot/skills/livepilot-core/references/concepts/genres/deep-minimal.yaml +130 -0
  82. package/livepilot/skills/livepilot-core/references/concepts/genres/deep_house.yaml +130 -0
  83. package/livepilot/skills/livepilot-core/references/concepts/genres/detroit_techno.yaml +116 -0
  84. package/livepilot/skills/livepilot-core/references/concepts/genres/disco.yaml +123 -0
  85. package/livepilot/skills/livepilot-core/references/concepts/genres/downtempo.yaml +129 -0
  86. package/livepilot/skills/livepilot-core/references/concepts/genres/drone.yaml +133 -0
  87. package/livepilot/skills/livepilot-core/references/concepts/genres/drum-and-bass.yaml +119 -0
  88. package/livepilot/skills/livepilot-core/references/concepts/genres/dub-techno.yaml +132 -0
  89. package/livepilot/skills/livepilot-core/references/concepts/genres/dub.yaml +129 -0
  90. package/livepilot/skills/livepilot-core/references/concepts/genres/dubstep.yaml +120 -0
  91. package/livepilot/skills/livepilot-core/references/concepts/genres/experimental.yaml +136 -0
  92. package/livepilot/skills/livepilot-core/references/concepts/genres/footwork.yaml +119 -0
  93. package/livepilot/skills/livepilot-core/references/concepts/genres/hip-hop.yaml +132 -0
  94. package/livepilot/skills/livepilot-core/references/concepts/genres/house.yaml +126 -0
  95. package/livepilot/skills/livepilot-core/references/concepts/genres/hyperpop.yaml +128 -0
  96. package/livepilot/skills/livepilot-core/references/concepts/genres/idm.yaml +134 -0
  97. package/livepilot/skills/livepilot-core/references/concepts/genres/lo_fi.yaml +129 -0
  98. package/livepilot/skills/livepilot-core/references/concepts/genres/microhouse.yaml +138 -0
  99. package/livepilot/skills/livepilot-core/references/concepts/genres/minimal-techno.yaml +116 -0
  100. package/livepilot/skills/livepilot-core/references/concepts/genres/modern-classical.yaml +123 -0
  101. package/livepilot/skills/livepilot-core/references/concepts/genres/soul.yaml +125 -0
  102. package/livepilot/skills/livepilot-core/references/concepts/genres/synthwave.yaml +123 -0
  103. package/livepilot/skills/livepilot-core/references/concepts/genres/techno.yaml +123 -0
  104. package/livepilot/skills/livepilot-core/references/concepts/genres/trap.yaml +120 -0
  105. package/livepilot/skills/livepilot-core/references/concepts/genres/uk-garage.yaml +121 -0
  106. package/livepilot/skills/livepilot-core/references/device-atlas/00-index.md +110 -0
  107. package/livepilot/skills/livepilot-core/references/device-atlas/distortion-and-character.md +687 -0
  108. package/livepilot/skills/livepilot-core/references/device-atlas/drums-and-percussion.md +753 -0
  109. package/livepilot/skills/livepilot-core/references/device-atlas/dynamics-and-punch.md +525 -0
  110. package/livepilot/skills/livepilot-core/references/device-atlas/eq-and-filtering.md +402 -0
  111. package/livepilot/skills/livepilot-core/references/device-atlas/midi-tools.md +963 -0
  112. package/livepilot/skills/livepilot-core/references/device-atlas/movement-and-modulation.md +874 -0
  113. package/livepilot/skills/livepilot-core/references/device-atlas/space-and-depth.md +571 -0
  114. package/livepilot/skills/livepilot-core/references/device-atlas/spectral-and-weird.md +714 -0
  115. package/livepilot/skills/livepilot-core/references/device-atlas/synths-native.md +953 -0
  116. package/livepilot/skills/livepilot-core/references/device-knowledge/00-index.md +34 -0
  117. package/livepilot/skills/livepilot-core/references/device-knowledge/automation-as-music.md +204 -0
  118. package/livepilot/skills/livepilot-core/references/device-knowledge/chains-genre.md +173 -0
  119. package/livepilot/skills/livepilot-core/references/device-knowledge/creative-thinking.md +211 -0
  120. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-distortion.md +188 -0
  121. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-space.md +162 -0
  122. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-spectral.md +229 -0
  123. package/livepilot/skills/livepilot-core/references/device-knowledge/instruments-synths.md +243 -0
  124. package/livepilot/skills/livepilot-core/references/genre-vocabularies.md +382 -0
  125. package/livepilot/skills/livepilot-core/references/m4l-devices.md +352 -0
  126. package/livepilot/skills/livepilot-core/references/memory-guide.md +178 -0
  127. package/livepilot/skills/livepilot-core/references/midi-recipes.md +402 -0
  128. package/livepilot/skills/livepilot-core/references/mixing-patterns.md +578 -0
  129. package/livepilot/skills/livepilot-core/references/overview.md +300 -0
  130. package/livepilot/skills/livepilot-core/references/pack-knowledge.md +319 -0
  131. package/livepilot/skills/livepilot-core/references/sample-manipulation.md +724 -0
  132. package/livepilot/skills/livepilot-core/references/sound-design-deep.md +140 -0
  133. package/livepilot/skills/livepilot-core/references/sound-design.md +393 -0
  134. package/livepilot/skills/livepilot-corpus-builder/SKILL.md +379 -0
  135. package/livepilot/skills/livepilot-creative-director/SKILL.md +455 -0
  136. package/livepilot/skills/livepilot-creative-director/references/anti-repetition-rules.md +214 -0
  137. package/livepilot/skills/livepilot-creative-director/references/creative-brief-template.md +222 -0
  138. package/livepilot/skills/livepilot-creative-director/references/hybrid-compilation.md +185 -0
  139. package/livepilot/skills/livepilot-creative-director/references/move-family-diversity-rule.md +258 -0
  140. package/livepilot/skills/livepilot-creative-director/references/phase-6-execution.md +409 -0
  141. package/livepilot/skills/livepilot-creative-director/references/the-four-move-rule.md +192 -0
  142. package/livepilot/skills/livepilot-devices/SKILL.md +213 -0
  143. package/livepilot/skills/livepilot-devices/references/load_browser_item-uri-grammar.md +82 -0
  144. package/livepilot/skills/livepilot-evaluation/SKILL.md +195 -0
  145. package/livepilot/skills/livepilot-evaluation/references/capability-modes.md +176 -0
  146. package/livepilot/skills/livepilot-evaluation/references/evaluation-contracts.md +121 -0
  147. package/livepilot/skills/livepilot-evaluation/references/memory-promotion.md +110 -0
  148. package/livepilot/skills/livepilot-mix-engine/SKILL.md +136 -0
  149. package/livepilot/skills/livepilot-mix-engine/references/mix-critics.md +143 -0
  150. package/livepilot/skills/livepilot-mix-engine/references/mix-moves.md +105 -0
  151. package/livepilot/skills/livepilot-mixing/SKILL.md +157 -0
  152. package/livepilot/skills/livepilot-notes/SKILL.md +130 -0
  153. package/livepilot/skills/livepilot-performance-engine/SKILL.md +122 -0
  154. package/livepilot/skills/livepilot-performance-engine/references/performance-safety.md +98 -0
  155. package/livepilot/skills/livepilot-release/SKILL.md +151 -0
  156. package/livepilot/skills/livepilot-sample-engine/SKILL.md +117 -0
  157. package/livepilot/skills/livepilot-sample-engine/references/sample-critics.md +87 -0
  158. package/livepilot/skills/livepilot-sample-engine/references/sample-philosophy.md +51 -0
  159. package/livepilot/skills/livepilot-sample-engine/references/sample-techniques.md +131 -0
  160. package/livepilot/skills/livepilot-sound-design-engine/SKILL.md +225 -0
  161. package/livepilot/skills/livepilot-sound-design-engine/references/patch-model.md +119 -0
  162. package/livepilot/skills/livepilot-sound-design-engine/references/sound-design-critics.md +118 -0
  163. package/livepilot/skills/livepilot-wonder/SKILL.md +143 -0
  164. package/m4l_device/LivePilot_Analyzer.amxd +0 -0
  165. package/m4l_device/LivePilot_Elektron.amxd +0 -0
  166. package/m4l_device/LivePilot_Elektron.maxpat +758 -0
  167. package/m4l_device/livepilot_bridge.js +1 -1
  168. package/m4l_device/livepilot_elektron_bridge.js +82 -0
  169. package/mcp_server/__init__.py +1 -1
  170. package/mcp_server/composer/develop/apply.py +1 -1
  171. package/mcp_server/composer/full/apply.py +32 -6
  172. package/mcp_server/m4l_bridge.py +5 -0
  173. package/mcp_server/runtime/execution_router.py +6 -0
  174. package/mcp_server/runtime/mcp_dispatch.py +18 -0
  175. package/mcp_server/runtime/remote_commands.py +2 -0
  176. package/mcp_server/server.py +11 -7
  177. package/package.json +20 -5
  178. package/remote_script/LivePilot/__init__.py +1 -1
  179. package/remote_script/LivePilot/server.py +63 -2
  180. package/requirements.txt +3 -3
  181. package/server.json +3 -3
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: evaluate
3
+ description: Evaluate recent changes — run the full before/after evaluation loop and recommend keep or undo
4
+ ---
5
+
6
+ Run the universal evaluation loop on recent production changes.
7
+
8
+ 1. **Check capability state** — `get_capability_state` to see what evaluation modes are available:
9
+ - `normal` — full measured evaluation with analyzer data
10
+ - `measured_degraded` — analyzer online but stale data
11
+ - `judgment_only` — no analyzer, parameter-level heuristics only
12
+ - `read_only` — session disconnected
13
+
14
+ 2. **Ensure analyzer** — if mode is `judgment_only`, try to get full perception:
15
+ - `find_and_load_device(track_index=-1000, device_name="LivePilot_Analyzer")`
16
+ - Wait 2s, then `get_master_spectrum` to test the bridge
17
+ - If bridge disconnected: `reconnect_bridge`
18
+ - If still unavailable: proceed with `judgment_only` but tell the user
19
+
20
+ 3. **Get the last move** — `get_last_move` to understand what was changed. If no recent move, `get_recent_actions` for history.
21
+
22
+ 4. **Ask what the goal was** — what were they trying to achieve? More clarity? Wider stereo? Punchier drums?
23
+
24
+ 5. **Compile the goal** — `compile_goal_vector(goal_description, mode="improve")`
25
+
26
+ 6. **Capture current state** — full perception snapshot:
27
+ - `get_master_spectrum` + `get_master_rms` (if analyzer available)
28
+ - `get_track_meters(include_stereo=true)` — verify all tracks producing audio
29
+ - `get_mix_snapshot` — full volume/pan/send state
30
+ - Optionally: `capture_audio` + `analyze_loudness` + `analyze_spectrum_offline` for ground truth
31
+
32
+ 7. **Undo the change** — `undo()` to restore the before state
33
+
34
+ 8. **Capture before state** — same reads as step 6
35
+
36
+ 9. **Redo the change** — `redo()` to restore the after state
37
+
38
+ 10. **Evaluate** — `evaluate_move(before_snapshot, after_snapshot, goal)` or use engine-specific:
39
+ - Mix changes: `evaluate_mix_move`
40
+ - Composition changes: `evaluate_composition_move`
41
+ - Multi-dimensional: `evaluate_with_fabric`
42
+
43
+ 11. **Report results** — show: score (0-1), keep_change recommendation, goal_progress, collateral_damage, dimension changes
44
+
45
+ 12. **Act on recommendation:**
46
+ - If `keep_change=true` — keep, suggest `memory_learn` if score > 0.7
47
+ - If `keep_change=false` — `undo()`, explain why (collateral damage, goal regression)
48
+
49
+ Use the livepilot-evaluation skill for the full evaluation loop details.
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: memory
3
+ description: Browse, search, and manage your saved technique library
4
+ ---
5
+
6
+ Show the user's technique memory library. Follow these steps:
7
+
8
+ 1. Call `memory_list(limit=20)` to get an overview of saved techniques
9
+ 2. Format as an organized list grouped by type:
10
+ - **Beats** — beat_pattern techniques
11
+ - **Device Chains** — device_chain techniques
12
+ - **Mix Templates** — mix_template techniques
13
+ - **Browser Pins** — browser_pin techniques
14
+ - **Preferences** — preference techniques
15
+ 3. For each technique show: name, summary, rating (stars), favorite marker, tags
16
+ 4. Show total count and breakdown by type
17
+
18
+ After presenting, ask if the user wants to:
19
+ - **Search** — "search for [query]" → use memory_recall
20
+ - **View details** — "show me [name]" → use memory_get
21
+ - **Delete** — "delete [name]" → use memory_delete (confirm first)
22
+ - **Rate** — "rate [name] 5 stars" → use memory_favorite
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: mix
3
+ description: Mixing assistant — analyze and balance track levels, panning, and sends
4
+ ---
5
+
6
+ Help the user mix 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")` for the full turn snapshot
11
+ 2. **Route** — `route_request(<user's request>)` to get engine routes + semantic move recommendations
12
+ 3. **Ensure analyzer** — if `get_master_spectrum` errors, load it: `find_and_load_device(track_index=-1000, device_name="LivePilot_Analyzer")`. If bridge disconnected, try `reconnect_bridge`.
13
+
14
+ ## Analysis Phase
15
+
16
+ 4. **Quick status** — `get_mix_summary` for track count, dynamics, stereo, issues
17
+ 5. **Run critics** — `get_mix_issues` for problems. `get_masking_report` for frequency collisions.
18
+ 6. **Spectral check** — `get_master_spectrum` for 9-band balance (sub_low → air). Genre targets:
19
+ - Hip-hop: sub/sub_low dominant, centroid 400-800 Hz
20
+ - Electronic / microhouse: sub_low carries the kick (Villalobos), centroid 800-1500 Hz
21
+ - Ambient: mid-focused, low sub_low + sub, centroid 500-1000 Hz
22
+ 7. **Musical intelligence** — `detect_role_conflicts` to find tracks competing for the same space. `detect_repetition_fatigue` if arrangement feels stale.
23
+
24
+ ## Decision Phase
25
+
26
+ 8. **Propose semantic moves** — `propose_next_best_move(request_text=<user's request>)` for ranked suggestions (e.g., `make_punchier`, `widen_stereo`, `tighten_low_end`)
27
+ 9. **Preview chosen move** — `preview_semantic_move(move_id)` to see the full compile plan before executing
28
+ 10. **Rank by taste** — if user has history, `rank_moves_by_taste(move_specs)` to personalize ordering
29
+
30
+ ## Execution Phase
31
+
32
+ 11. **Apply with approval** — `apply_semantic_move(move_id, mode="improve")` returns the compiled plan. Present it to the user: "I'd suggest: push Drums to 0.75, pull Pad to 0.25. Shall I do it?"
33
+ 12. **Verify after EVERY change** — read `value_string` in response, call `get_track_meters(include_stereo=true)`, check no track went silent
34
+ 13. **Capture + analyze** — `capture_audio` then `analyze_loudness` for LUFS/LRA, `analyze_spectrum_offline` for centroid/balance
35
+ 14. **Evaluate** — `evaluate_mix_move` with before/after snapshots. If `keep_change` is false, `undo` immediately.
36
+
37
+ ## Summary
38
+
39
+ 15. **Report** — "What I did / what improved / what I protected / what remains"
40
+ 16. **Session memory** — `add_session_memory` for notable decisions
41
+ 17. **Taste update** — successful moves update the TasteGraph automatically
42
+
43
+ For deeper critic-driven iterative improvement, use the livepilot-mix-engine skill.
44
+
45
+ ## Branch-Native Exploratory Mode
46
+
47
+ When the user asks for multiple options or is vague about direction ("try a few things", "I don't know what's wrong — just make it better", "what would you do?"), use Flow B from livepilot-core SKILL.md. Build 2-3 `create_experiment` seeds with different angles — for example one `semantic_move` seed for a conventional fix, one `freeform` seed for an unconventional approach (sidechain from an unexpected source, mid/side EQ instead of stereo EQ, etc.), one `synthesis` seed if the root cause is instrument-level (PR9+). Set `get_session_kernel(freshness=0.7)` to nudge branches away from the safest option.
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: perform
3
+ description: Performance mode — enter a safety-constrained live performance context with energy tracking and safe moves
4
+ ---
5
+
6
+ Enter performance mode with safety constraints and energy tracking.
7
+
8
+ ## Orchestration Flow
9
+
10
+ 1. **Session kernel** — `get_session_kernel(request_text="live performance", mode="improve")`
11
+ 2. **Route** — `route_request("live performance")` → workflow_mode should be `performance_safe`
12
+ 3. **Performance state** — `get_performance_state` for current scene, energy level, and safe moves
13
+
14
+ ## Safety-First Rules
15
+
16
+ - **NEVER** execute moves rated "high risk" during performance
17
+ - **ALWAYS** use `get_performance_safe_moves` before ANY change
18
+ - Only fire scenes, adjust volumes, and trigger safe effects
19
+ - No device loading, track creation, or destructive operations
20
+
21
+ ## Performance Tools
22
+
23
+ 4. **Safe moves** — `get_performance_safe_moves` for available actions
24
+ 5. **Scene handoff** — `plan_scene_handoff` for safe transitions between scenes
25
+ 6. **Energy tracking** — monitor energy level across scene transitions
26
+ 7. **Semantic moves** — only performance-safe semantic moves:
27
+ - `smooth_scene_handoff` — safe transition between scenes
28
+ - Gesture templates: `pre_arrival_vacuum`, `re_entry_spotlight`
29
+
30
+ ## Live Dashboard
31
+
32
+ 8. **Monitor** — `get_track_meters(include_stereo=true)` for real-time levels
33
+ 9. **Spectrum** — `get_master_spectrum` for frequency balance during performance
34
+ 10. **Playing clips** — `get_playing_clips` to see what's active
35
+
36
+ ## Recovery
37
+
38
+ 11. **If something goes wrong** — `undo` immediately
39
+ 12. **Emergency** — `stop_all_clips` if audio goes haywire
40
+ 13. **Check safety** — `check_safety` to verify constraints are holding
41
+
42
+ Keep the user informed of what's happening. Never make surprise changes during a live set.
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: session
3
+ description: Get a full overview of the current Ableton Live session
4
+ ---
5
+
6
+ Get a comprehensive overview of the current Ableton Live session by calling `get_session_info`. Format the results as an organized report showing:
7
+
8
+ 1. **Transport** — tempo, time signature, playing state, loop settings
9
+ 2. **Tracks** — list all tracks with type, name, color, arm/mute/solo state
10
+ 3. **Scenes** — scene names and clip occupancy
11
+ 4. **Master** — master volume and devices
12
+
13
+ After presenting the overview, ask if the user wants to dive deeper into any specific track, device, or area.
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: sounddesign
3
+ description: Sound design workflow — load instruments and effects, shape parameters for a target sound
4
+ ---
5
+
6
+ Guide the user through designing a sound 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
+ ## Design Phase
14
+
15
+ 3. **Ask about target** — what character? (warm pad, aggressive bass, shimmering lead, etc.)
16
+ 4. **Choose instrument** — `search_browser` to find devices, `load_browser_item` to load
17
+ 5. **Verify health** — `get_device_info` to confirm plugin initialized. Read `value_string` from `get_device_parameters` to understand actual units.
18
+ 6. **Shape sound** — `set_device_parameter` or `batch_set_parameters`. **ALWAYS read `value_string` in response** to confirm Hz/dB/% values make sense.
19
+ 7. **Verify after every change** — `get_track_meters(include_stereo=true)` — if stereo drops to 0, the effect killed the signal.
20
+
21
+ ## Critic Phase
22
+
23
+ 8. **Run critics** — `analyze_sound_design(track_index)` for static timbre, missing modulation, spectral imbalance
24
+ 9. **Plan improvements** — `plan_sound_design_move(track_index)` for suggested changes
25
+ 10. **Patch model** — `get_patch_model(track_index)` to see chain structure and controllable blocks
26
+
27
+ ## Effects & Automation
28
+
29
+ 11. **Add effects** — load with `find_and_load_device(track_index, device_name)`. Verify health.
30
+ 12. **Organic movement** — `apply_automation_shape(curve_type="perlin")` for filter/send drift
31
+ 13. **Automation recipes** — `apply_automation_recipe` for breathing, vinyl_crackle, auto_pan. Verify after applying.
32
+
33
+ ## Evaluation
34
+
35
+ 14. **Perception check** — `get_master_spectrum` or `capture_audio` + `analyze_spectrum_offline`
36
+ 15. **Evaluate** — `evaluate_move(goal_vector, before_snapshot, after_snapshot)` to score improvement
37
+
38
+ ## Summary
39
+
40
+ 16. **Report** — "What I changed / what improved / what I protected"
41
+ 17. **Memory** — if score > 0.7, suggest `memory_learn` to save the technique
42
+
43
+ For critic-driven iterative refinement, use the livepilot-sound-design-engine skill.
44
+
45
+ ## Branch-Native Exploratory Mode
46
+
47
+ For open-ended sound design ("design me something that feels like X", "make this more interesting", "surprise me"), use Flow B from livepilot-core SKILL.md. Prefer `source="synthesis"` seeds for any request that calls for genuinely different timbres — PR9+ introduces native-synth adapters (Wavetable, Operator, Analog, Drift, Meld) that can propose per-device parameter branches. Pass `synth_hints` on `get_session_kernel` when you know which tracks or devices to focus on:
48
+
49
+ ```
50
+ get_session_kernel(
51
+ request_text="make the pad more alive",
52
+ freshness=0.75,
53
+ creativity_profile="sculptor",
54
+ synth_hints={"track_indices": [pad_track_idx], "preferred_devices": ["Wavetable", "Operator"]},
55
+ )
56
+ ```
57
+
58
+ Seeds with `source="synthesis"` that arrive without a compiled plan will (post-PR9) be compiled by the synthesis_brain; pre-PR9 they must ship with a freeform plan attached via `compiled_plans`.
@@ -0,0 +1,82 @@
1
+ # §1 — Default Preset Energy is Forbidden
2
+
3
+ Mechanical check: when a melodic-role track (bass / pad / lead) is loaded
4
+ with a banned default synth and no preset has been applied, flag it.
5
+
6
+ CLAUDE.md §1: "Never reach for Analog / Poli / Drift / Meld as a default for
7
+ bass / pad / lead. They read as 'generic AI synth' and have been rejected
8
+ multiple times."
9
+
10
+ This rubric does NOT ban these synths outright — it bans them in their
11
+ **factory-default state** for melodic roles. A programmed Drift bass with a
12
+ preset name and modulated parameters is fine. A naked `Drift` device with
13
+ display name `"Drift"` is the chronic anti-pattern.
14
+
15
+ ## Inputs
16
+
17
+ ```
18
+ {
19
+ "tracks": [
20
+ {
21
+ "index": int,
22
+ "name": str,
23
+ "devices": [
24
+ {"class_name": str, "name": str, ...},
25
+ ...
26
+ ],
27
+ }, ...
28
+ ],
29
+ }
30
+ ```
31
+
32
+ The first instrument-class device on each track is the candidate. `name` is
33
+ Ableton's display name for the device — for a freshly-loaded Drift it
34
+ equals `"Drift"`; for a preset-loaded Drift it equals the preset stem.
35
+
36
+ ## Banned default class names
37
+
38
+ | Class name | Reason |
39
+ |------------|--------|
40
+ | Drift | Generic subtractive — reach for Granulator III / Wavetable / sample-based instead |
41
+ | Analog | Same reason |
42
+ | Poli | M4L opaque — sound-design critic can't analyze |
43
+ | Meld | M4L opaque — sound-design critic can't analyze |
44
+
45
+ ## Trigger conditions for banned roles
46
+
47
+ | Role | Triggers |
48
+ |------|----------|
49
+ | bass | banned class + default name |
50
+ | pad | banned class + default name |
51
+ | lead | banned class + default name |
52
+
53
+ Other roles (kick, snare, hat, perc, vox, atmos, fx, unknown) are
54
+ **not flagged** by this rubric.
55
+
56
+ ## Default-name detection
57
+
58
+ A device is considered "default-loaded" when its display `name` matches its
59
+ `class_name` exactly (case-insensitive). For example:
60
+ - `class_name="Drift", name="Drift"` → default
61
+ - `class_name="Drift", name="BoC Wash"` → preset applied → not default
62
+
63
+ ## Criteria
64
+
65
+ ### `no_banned_default_instruments`
66
+
67
+ - All tracks pass → **pass**
68
+ - One or more banned-default + banned-role tracks → **fail**
69
+
70
+ ### `prefer_curated_or_under_used`
71
+
72
+ Advisory: when the first instrument is on the user's under-used list
73
+ (Operator, Wavetable, Sampler, Simpler, Granulator III, Tension, Collision,
74
+ Electric, Drum Synths, Inspired-by-Nature variants), praise it. This is a
75
+ **signal-only** check, never blocks — it surfaces in evidence.
76
+
77
+ ## What this rubric does NOT check
78
+
79
+ - Sound-design depth — see §2 rubric (Phase 2b)
80
+ - Whether the preset is musically right for the genre — that's taste
81
+ - Whether the player has been told to use a banned class explicitly
82
+ ("subtractive" / "analog texture") — context lives outside the snapshot
@@ -0,0 +1,79 @@
1
+ # §7.3 — Layer Accumulation Rubric
2
+
3
+ Mechanical checks on track count and per-role volume balance, derived from
4
+ CLAUDE.md §7.3 ("no layer accumulation with low volume — 5–6 GREAT layers
5
+ prominent > 12 mediocre layers buried") and the track-meter hierarchy
6
+ feedback memory.
7
+
8
+ This rubric is graded by `mcp_server.grader.client.evaluate("layer_accumulation", state)`.
9
+ All checks are pure Python — zero LLM calls, zero token cost.
10
+
11
+ ## Inputs
12
+
13
+ The grader expects a `state` dict shaped like:
14
+
15
+ ```
16
+ {
17
+ "tracks": [
18
+ {
19
+ "index": int,
20
+ "name": str,
21
+ "mixer": {"volume": 0.0–1.0, "panning": -1.0–1.0},
22
+ "devices": [{"class_name": str, ...}, ...],
23
+ "meter": {"peak": 0.0–1.0} | None, # optional
24
+ }, ...
25
+ ],
26
+ }
27
+ ```
28
+
29
+ In production this comes from `get_session_info` + per-track `get_track_info`
30
+ + optional `get_track_meters`. In tests, synthesize the dict directly.
31
+
32
+ ## Criteria
33
+
34
+ ### `track_count_within_limit`
35
+
36
+ Total non-master, non-return tracks under the sustainable threshold.
37
+
38
+ - ≤ 8 tracks → **pass**
39
+ - 9–11 tracks → **warn** (approaching the §7.3 ceiling)
40
+ - ≥ 12 tracks → **fail** (delete buried layers, feature 5–6 great ones)
41
+
42
+ ### `no_extreme_buried_track`
43
+
44
+ Any track with `mixer.volume < 0.15` is a buried layer that should be
45
+ deleted unless it's explicitly tagged ghost. Track-name keyword match:
46
+ `ghost`, `_g`, `gh `.
47
+
48
+ - All buried tracks are ghost-tagged → **pass**
49
+ - Any non-ghost track at volume < 0.15 → **fail** with track names
50
+
51
+ ### `role_volume_hierarchy`
52
+
53
+ Per-track role inferred via `infer_role` from `audit/checks.py`. Volume
54
+ must land within the role's permitted band:
55
+
56
+ | Role | Band | Why |
57
+ |-------|--------------|-----|
58
+ | kick | [0.60, 0.85] | anchor — must dominate |
59
+ | bass | [0.60, 0.85] | anchor — must carry |
60
+ | snare | [0.55, 0.80] | groove |
61
+ | hat | [0.40, 0.70] | groove — often quieter |
62
+ | perc | [0.40, 0.65] | groove |
63
+ | lead | [0.50, 0.80] | accent / anchor |
64
+ | vox | [0.55, 0.85] | anchor |
65
+ | pad | [0.25, 0.50] | atmosphere — hide, don't dominate |
66
+ | atmos | [0.25, 0.45] | atmosphere |
67
+ | fx | [0.30, 0.70] | variable |
68
+ | unknown | [0.30, 0.80] | generous default |
69
+
70
+ - All tracks within role band → **pass**
71
+ - Any track outside band → **warn** (not blocking — could be deliberate;
72
+ the grader flags it for review, not auto-undo)
73
+
74
+ ## What this rubric does NOT check
75
+
76
+ §5 layer-by-layer precision (timbre, sequence, stereo, modulation, automation)
77
+ — that's `audit_layer` territory and gets its own rubric in Phase 2. This
78
+ rubric is intentionally narrow: it catches the **layer accumulation**
79
+ anti-pattern only.
@@ -0,0 +1,79 @@
1
+ # §5 — Layer-by-Layer Precision
2
+
3
+ Wraps the seven `audit/checks.py` functions into one rubric. Each criterion
4
+ runs the relevant audit check across every track and aggregates per-track
5
+ results into a single criterion verdict (worst-case severity).
6
+
7
+ CLAUDE.md §5: "For EVERY layer (drums, bass, lead, pad, vox, perc): solo +
8
+ spectrum check tone, critique sequence (swing/humanization/ghosts/per-bar
9
+ variation/micro-timing), check stereo image, plan automation/pitch-bends/
10
+ filter sweeps. Same depth as the 2026-04-25 hi-hat critique. No layer is
11
+ 'done' without this checklist."
12
+
13
+ This rubric is the most data-hungry of the set. Each criterion degrades to
14
+ n/a gracefully when the corresponding signal is missing on every track.
15
+
16
+ ## Criteria
17
+
18
+ ### `timbre_per_track` (§5.1)
19
+ Calls `audit_checks.check_timbre(role, fingerprint)`. Requires per-track
20
+ `fingerprint` (from `get_master_spectrum` after solo).
21
+
22
+ - All tracks pass → **pass**
23
+ - Any track has wrong-band dominance → **fail** (sample is wrong for role)
24
+ - Off-band but secondary in expected range → **warn**
25
+
26
+ ### `sequence_per_track` (§5.2)
27
+ Calls `audit_checks.check_sequence(role, notes_per_clip)`. Requires per-track
28
+ `notes_per_clip` (from `get_notes` per clip slot).
29
+
30
+ - Drum-role tracks need humanization + ghost notes
31
+ - Pad/lead/bass need pitch + duration variation
32
+ - Audio tracks → n/a (no notes)
33
+
34
+ ### `stereo_per_track` (§5.3)
35
+ Calls `audit_checks.check_stereo(role, track)`. Pure pan-position check.
36
+
37
+ - Bass panned > 0.05 → **warn** (sub should be center for translation)
38
+ - Kick/snare panned > 0.15 → **warn**
39
+
40
+ ### `masking_per_track` (§5.4)
41
+ Calls `audit_checks.check_masking(track_index, masking_report)`. Requires
42
+ session-level `masking_report` from `get_masking_report`.
43
+
44
+ - Any high-severity collision → **fail**
45
+ - Mid-severity collision → **warn**
46
+ - No `masking_report` provided → criterion **n/a** (whole rubric still runs)
47
+
48
+ ### `modulation_per_track` (§5.5 + §4)
49
+ Calls `audit_checks.check_modulation(role, devices, has_clip_automation,
50
+ wavetable_mod_routings)`. More accurate than the standalone
51
+ `modulation_presence` rubric — analyzes parameter routings (`Fe < Env`,
52
+ `Pe < Env`, etc.) on the actual instrument.
53
+
54
+ ### `params_per_track` (§5.6 + §2)
55
+ Calls `audit_checks.check_params(role, devices)`. Detects "unprogrammed"
56
+ instruments — pad/lead/bass with ≥3 key shaping parameters at default values.
57
+ Drum roles auto-pass (single-sample minimal-shaping is correct by design).
58
+
59
+ ### `effects_per_track` (§5.8)
60
+ Calls `audit_checks.check_effects(role, devices)`. Verifies role-appropriate
61
+ effect chain coverage:
62
+ - kick / snare / bass / vox / lead → EQ required
63
+ - bass / vox / lead → compressor required
64
+ - pad / atmos / vox / lead → reverb or delay required
65
+
66
+ ## Aggregation
67
+
68
+ Per criterion: worst severity wins. If any track fails → criterion fails.
69
+ Otherwise if any warns → warns. Otherwise pass. Tracks where the audit
70
+ returns n/a (data missing, role doesn't apply) are filtered before
71
+ aggregation — they don't drag the criterion to n/a unless every track is n/a.
72
+
73
+ Whole-rubric `passed` is False iff any criterion is fail (blocking).
74
+
75
+ ## What this rubric does NOT cover
76
+
77
+ - Sample audition (§5.7) — slice classification — niche, separate rubric later
78
+ - Aesthetic register (§8) — taste, never rubric-graded
79
+ - Per-track meter levels — that's the §7.3 `layer_accumulation` rubric
@@ -0,0 +1,63 @@
1
+ # §4 — Modulation > Static
2
+
3
+ Mechanical check: every melodic/harmonic layer (bass / pad / lead / vox /
4
+ atmos) should have at least one form of motion — a modulation-matrix entry,
5
+ an LFO routing producing audible change, or a clip-automation envelope.
6
+
7
+ CLAUDE.md §4: "Static MIDI at default velocity ≈ 'didn't try'. Every
8
+ melodic/harmonic layer should have AT LEAST one parameter moving over time."
9
+
10
+ ## Inputs
11
+
12
+ The grader requires per-track modulation signals to be populated by the
13
+ caller (the `audit_layer` orchestrator already computes both):
14
+
15
+ ```
16
+ {
17
+ "tracks": [
18
+ {
19
+ "index": int,
20
+ "name": str,
21
+ "devices": [...],
22
+ "modulation_count": int, # sum of mod-matrix non-zero entries
23
+ "has_clip_automation": bool, # any clip on track has automation
24
+ }, ...
25
+ ],
26
+ }
27
+ ```
28
+
29
+ Missing fields are degraded gracefully:
30
+ - Track has neither key → reported as `unknown`, doesn't pass or fail
31
+ - All checked tracks unknown → criterion returns `n/a`
32
+
33
+ ## Roles required to have motion
34
+
35
+ bass · pad · lead · vox · atmos
36
+
37
+ Drum-role tracks (kick / snare / hat / perc) are excluded — sequencer
38
+ humanization is critiqued by the §5 layer-precision rubric, not this one.
39
+ FX tracks are also excluded.
40
+
41
+ ## Criterion
42
+
43
+ ### `melodic_layers_have_motion`
44
+
45
+ - All checked melodic-role tracks have `modulation_count > 0` OR
46
+ `has_clip_automation == True` → **pass**
47
+ - One or more static melodic-role tracks → **warn** (advisory; not blocking)
48
+ - No melodic-role tracks present, or all unknown → **n/a**
49
+
50
+ ## Why advisory, not blocking
51
+
52
+ A stab patch with deliberate static behavior (one-shot pluck, plocked
53
+ bass) is musically valid. The grader can't distinguish "static by intent"
54
+ from "static by neglect" — so it surfaces the layer for review rather than
55
+ auto-undoing. Promote to blocking in a future phase if false-positive
56
+ rate stays low.
57
+
58
+ ## What this rubric does NOT check
59
+
60
+ - Whether the modulation is **musical** — quality of motion is taste
61
+ - Internal LFOs of opaque curated presets (Vector / Wavetable .adg) —
62
+ per the standing-rule memory, those are off-limits to modulate
63
+ - Pitch-bend / portamento — handled by the §5 sequence check
@@ -0,0 +1,40 @@
1
+ # §2 — Sound Design = Instrument Programming
2
+
3
+ Single-criterion rubric isolating the §5.6 instrument-parameter check from
4
+ the full layer-precision rubric. Runnable on its own when the agent claims
5
+ "I added sound design" but actually only added effects.
6
+
7
+ CLAUDE.md §2: "Sound design = instrument parameter programming, NOT effects
8
+ chains. Adding Saturator/Redux/Shifter is EFFECT DESIGN, not sound design.
9
+ Real sound design sculpts the source at the instrument/sampler level
10
+ (envelopes, LFO routing, filter envelope, pitch modulation, sample start
11
+ mod, spread, detune)."
12
+
13
+ ## Criterion
14
+
15
+ ### `params_per_track`
16
+ Calls `audit_checks.check_params(role, devices)`. Detection:
17
+ - Inspects the first native-instrument device on each track
18
+ - Looks at parameter values for `Fe < Env`, `Pe < Env`, `Spread`, `Detune`,
19
+ `Unison`, etc. (the `_SUSPICIOUS_AT_ZERO` set)
20
+ - A param at exactly 0 / factory default is "untouched"
21
+ - For pad / lead / bass roles: ≥3 untouched key params → **fail** with
22
+ `unprogrammed_instrument` issue
23
+ - For other roles: ≥4 untouched → **warn** with `many_default_params`
24
+ - Drum roles auto-pass — minimal shaping is correct by design
25
+
26
+ The check has built-in escape hatches: an `Fe < Env` of 0 is fine when
27
+ `Fe On` is also 0 (filter envelope deliberately disabled). Same for pitch.
28
+
29
+ ## What this rubric does NOT check
30
+
31
+ - Effects chain depth — §5 `effects_per_track` covers that
32
+ - Whether the programmed values are musically right — taste
33
+ - 3rd-party VST/AU instruments — `check_params` returns n/a (no native
34
+ parameter readouts available)
35
+
36
+ ## Why this exists alongside §5
37
+
38
+ The full §5 rubric is heavyweight (7 criteria, 6+ data sources). When the
39
+ user is iterating fast on sound design specifically, running just this
40
+ rubric is faster and the brief is sharper.