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,225 @@
1
+ ---
2
+ name: livepilot-sound-design-engine
3
+ description: This skill should be used when the user asks to "design a sound", "analyze a patch", "fix a static sound", "add modulation", "check my timbre", "improve a synth patch", or wants critic-driven sound design feedback and iterative patch refinement.
4
+ ---
5
+
6
+ # Sound Design Engine — Critic-Driven Patch Refinement
7
+
8
+ The sound design engine analyzes synth patches, identifies timbral weaknesses, and iteratively refines them through a measured critic loop. Every change is evaluated against the before state.
9
+
10
+ ## Atlas-first reflex (v1.23.x+, MANDATORY before any creative move)
11
+
12
+ Before producing ANY creative response, query the user's atlas overlays. The corpus contains 337 entries across 3 namespaces, plus 3,917 parameter-level JSON sidecars — far richer than anything inferable from training data alone.
13
+
14
+ **Query order:**
15
+
16
+ 1. **`extension_atlas_search(namespace="packs", query=<intent>)`** — pack identity, signature workflows, hidden gems, anti-patterns, notable presets with macro deep-data, demo projects
17
+ 2. **`extension_atlas_search(namespace="packs", query=<intent>, entity_type="cross_pack_workflow")`** — multi-pack signature recipes (15 entries: dub-techno spectral drone bed, BoC decayed pad, Mica Levi orchestral dread, etc.)
18
+ 3. **`extension_atlas_search(namespace="m4l-devices", query=<sonic descriptor>)`** — M4L instrument/effect/midi-effect device catalog (155 entries)
19
+ 4. **`atlas_search(...)`** — bundled atlas (Core Library, fallback)
20
+
21
+ **Multi-grain traversal:**
22
+
23
+ When an aesthetic-level query lands a pack-level result, AUTO-DRILL: pack → its `notable_presets` → those preset macro states → load via `load_browser_item`. Don't stop at "I found a relevant pack" — drill to the actual preset/parameter level the user can immediately use.
24
+
25
+ ```python
26
+ # Example — agent received "design a BoC pad — sublime, decayed, harmonic warmth"
27
+ hit = extension_atlas_search(namespace="packs", query="BoC sublime decayed pad harmonic warmth")
28
+ # → boc_decayed_pad cross-pack-workflow + inspired_by_nature pack
29
+
30
+ workflow = extension_atlas_get("packs", "boc_decayed_pad")
31
+ # → reveals signal flow + which notable_presets to start from
32
+
33
+ drone_lab = extension_atlas_get("packs", "drone_lab")
34
+ # → notable_presets reveals Razor Wire Drone with macros Filter Control=108, Movement=53...
35
+
36
+ # Now propose the patch with concrete preset names + macro starting values, not vague descriptions
37
+ ```
38
+
39
+ **When the user mentions a producer or pack by name:**
40
+
41
+ - "BoC sublime pad" → atlas hit: `boc_decayed_pad` cross-pack-workflow + `inspired_by_nature` pack
42
+ - "Henke spectral chain" → atlas hit: `pitchloop89` + `granulator_iii` + 2 Henke cross-pack workflows
43
+ - "Mica Levi orchestral dread" → atlas hit: `mica_levi_orchestral_dread` workflow + the orchestral suite packs
44
+ - "Drone Lab" → atlas hit: `drone_lab` pack + 4 Drone Lab demo_project entries
45
+
46
+ The atlas knows the user's installed library at parameter depth. **Producer-anchor queries land specific moves, not vague descriptions.**
47
+
48
+ **Anti-pattern surfacing:**
49
+
50
+ Every pack entry has an `anti_patterns` body field listing "don't reach for this when X." Surface the relevant anti-pattern when proposing a move so the user knows the move's domain. (E.g. "Drone Lab is sustain-only — don't use for percussive content.")
51
+
52
+ **For deliberately rule-breaking creative requests** ("eclectic", "ignore the limits", "weird combo", "mix incompatible aesthetics"): enter **Eclectic Mode** inside this sound-design loop. Anti-patterns become prompt tension rather than guardrails: keep hard safety and protected-user constraints, then pair one normally-avoided source or processor with one identity-preserving anchor. Do not route to a private or missing skill.
53
+
54
+ ## The Sound Design Critic Loop
55
+
56
+ ### Step 1 — Build Patch Model
57
+
58
+ Call `get_patch_model(track_index)` to build a PatchModel for the target track. The PatchModel maps every device on the track into typed blocks (oscillator, filter, envelope, lfo, saturation, spatial, effect) and classifies each as `controllable` or `opaque`.
59
+
60
+ Read the response carefully:
61
+ - `blocks`: ordered list of processing blocks with types and parameter names
62
+ - `controllable_params`: parameters you can modify via `set_device_parameter`
63
+ - `opaque_blocks`: third-party plugins where parameters may not map cleanly
64
+ - `modulation_sources`: detected LFOs, envelopes, and macro mappings
65
+ - `signal_flow`: how blocks connect (serial, parallel, or rack chains)
66
+
67
+ See `references/patch-model.md` for the full PatchModel structure and native device block map.
68
+
69
+ ### Step 2 — Analyze
70
+
71
+ Call `analyze_sound_design(track_index)` to run all sound design critics against the patch. The response contains an `issues` array with `critic`, `severity`, `block`, and `evidence`.
72
+
73
+ Five critics run during analysis. See `references/sound-design-critics.md` for thresholds:
74
+
75
+ - **static_timbre** — sound does not evolve over time, no movement
76
+ - **no_modulation_sources** — no LFOs, envelopes, or automation detected
77
+ - **modulation_flatness** — modulation exists but ranges are too narrow to hear
78
+ - **missing_filter** — raw oscillator output with no spectral shaping
79
+ - **spectral_imbalance** — too much energy in one frequency region, or gaps
80
+
81
+ ### Step 3 — Plan
82
+
83
+ Pick the highest-severity issue. Call `plan_sound_design_move(track_index)` with the issue. The planner returns a single intervention:
84
+
85
+ - `move_type`: one of the move vocabulary entries
86
+ - `target_device`: device index on the track
87
+ - `target_parameter`: parameter name or index
88
+ - `target_value`: the new value
89
+ - `rationale`: why this move addresses the issue
90
+
91
+ Move vocabulary:
92
+ - **modulation_injection** — add or increase LFO/envelope depth on a parameter
93
+ - **filter_shaping** — adjust cutoff, resonance, or filter type
94
+ - **parameter_automation** — create clip automation for time-varying timbral change
95
+ - **oscillator_tuning** — adjust pitch, detune, waveform, or unison settings
96
+
97
+ ### Step 4 — Capture Before
98
+
99
+ 1. Call `get_device_parameters(track_index, device_index)` — save current parameter state
100
+ 2. Call `get_master_spectrum` — save spectral snapshot (if analyzer available)
101
+
102
+ ### Step 5 — Execute
103
+
104
+ Apply the planned move using the appropriate tool:
105
+
106
+ - `set_device_parameter` for direct parameter changes (filter cutoff, LFO rate, oscillator shape)
107
+ - `toggle_device` for enabling/disabling processing blocks
108
+ - `batch_set_parameters` when the move requires coordinated changes (e.g., LFO depth + rate together)
109
+ - `set_clip_automation` for parameter automation moves
110
+ - `find_and_load_device` when the fix requires adding a new device (e.g., adding an Auto Filter)
111
+
112
+ Execute one move at a time. Verify before continuing.
113
+
114
+ ### Step 6 — Capture After
115
+
116
+ Repeat the same measurements:
117
+
118
+ 1. Call `get_device_parameters(track_index, device_index)` — confirm the change took effect
119
+ 2. Call `get_master_spectrum` — save post-change spectral snapshot
120
+
121
+ ### Step 7 — Evaluate
122
+
123
+ Call `evaluate_move(goal_vector, before_snapshot, after_snapshot)` where `goal_vector` is the compiled goal from Step 1 and snapshots contain `{spectrum: {...}, rms: float, peak: float}`. Read:
124
+
125
+ - `keep_change` (bool): whether the change improved the sound
126
+ - `score` (0.0-1.0): quality improvement magnitude
127
+ - `timbral_delta`: what changed spectrally
128
+ - `explanation`: human-readable summary
129
+
130
+ ### Step 8 — Keep or Undo
131
+
132
+ If `keep_change` is `false`, call `undo()`. Explain what was tried and why it did not improve the sound.
133
+
134
+ If `keep_change` is `true`, report the improvement. If score > 0.7, consider calling `memory_learn(name="...", type="device_chain", qualities={"summary": "..."}, payload={...})` to save the technique.
135
+
136
+ ### Step 9 — Repeat
137
+
138
+ Return to Step 2. Re-analyze after each kept change. The critic list updates as issues are resolved. Continue until the user is satisfied or no high-severity issues remain.
139
+
140
+ ## Working with Opaque Plugins
141
+
142
+ Third-party AU/VST plugins may report as `opaque` in the PatchModel:
143
+
144
+ 1. Check `get_plugin_parameters(track_index, device_index)` — some plugins expose parameters through the host
145
+ 2. If `parameter_count <= 1`, the plugin is dead or unresponsive. Call `delete_device` and suggest a native alternative
146
+ 3. If parameters are available but unnamed (Parameter 1, Parameter 2...), try `map_plugin_parameter` to identify them by ear
147
+ 4. Report opaque status to the user — sound design critics cannot fully analyze what they cannot inspect
148
+
149
+ ## Quick Sound Design Checks
150
+
151
+ - **"What's wrong with this sound?"** — Call `get_sound_design_issues(track_index)` for a diagnostic without executing fixes
152
+ - **"Show me the patch"** — Call `get_patch_model(track_index)` then `walk_device_tree(track_index)` for full device chain visibility
153
+ - **"What can I automate?"** — Read the `controllable_params` list from the PatchModel response
154
+
155
+ ## Native Device Strengths
156
+
157
+ When adding processing blocks, prefer native Ableton devices for controllability:
158
+
159
+ - **Wavetable** — complex oscillator section with built-in modulation matrix
160
+ - **Operator** — FM synthesis with per-operator envelopes and LFO
161
+ - **Analog** — subtractive with two filters and two LFOs
162
+ - **Auto Filter** — standalone filter with envelope follower and LFO
163
+ - **Corpus** — resonant body modeling for physical character
164
+ - **Erosion** — high-frequency noise and distortion artifacts
165
+ - **Saturator** — waveshaping with multiple curve types
166
+
167
+ Always `search_browser` before loading — never guess device names.
168
+
169
+ ## M4L Instruments in the Library — When the Standard Synths Are the Wrong Aesthetic
170
+
171
+ Wavetable / Operator / Analog cover most subtractive and FM work, but several installed packs ship M4L instruments that produce sounds those three architecturally cannot. Reach for them when the standard list is the wrong starting point:
172
+
173
+ - **Granulator III** (Live Suite + Max for Live) — granular synthesis as a first-class instrument. Loop / Cloud / Classic modes, MPE per-note grain control, built-in audio capture. Use when the source needs to *be* a sample but evolve as a sustained voice.
174
+ - **Harmonic Drone Generator** (Drone Lab pack) — 8-voice M4L drone synth by Expert Math. Just intonation, Pythagorean, Pelog, equal temperament. Use when the patch is a sustained tonal bed and standard equal-tempered subtractive sounds wrong (microtonal beating is the point).
175
+ - **Bouncy Notes** (Inspired by Nature, Dillon Bastan) — gravity-based MIDI sequencer. Drop a ball, it bounces on a piano roll producing asymmetric never-repeating note cascades. Use as a generative source instead of writing notes by hand.
176
+ - **Tree Tone** (Inspired by Nature) — fractal-plant-growth resonator. Each branch is a tunable resonator (frequency / decay / amplitude). Use when you want resonance/body that evolves under itself, instead of static Corpus.
177
+ - **Vector FM / Vector Grain / Vector Map** (Inspired by Nature) — particle-physics modulation systems. Vector Map can route one particle to multiple parameters at once — useful when the patch needs *coupled* modulation that LFOs cannot produce.
178
+ - **PitchLoop89** (Live Suite) — Henke pitch-shift delay (Publison DHM 89 emulation). Use as the spatial/pitched-echo block on any sustained voice when standard delay + Auto Pan is too rigid.
179
+
180
+ These do not replace the modulation_injection / filter_shaping / parameter_automation move vocabulary. They change what "the source" can be — which is upstream of the critic loop.
181
+
182
+ ## Deep Sound Design Reference
183
+
184
+ Consult `references/sound-design-deep.md` for advanced techniques when working on creative requests. Key principles:
185
+
186
+ ### Making Sounds Breathe
187
+ Every static sound can become alive with modulation below conscious perception:
188
+ - **Filter breathing:** LFO at 0.1-0.5 Hz on filter cutoff, 5-15% depth
189
+ - **Oscillator drift:** ±1-3 cent detune with very slow LFO (0.05-0.2 Hz)
190
+ - **Amplitude micro-variation:** Perlin/brownian noise on volume, ±1-3 dB
191
+ - **Rule:** If the listener can hear the modulation, it's too much. The best modulation is felt, not heard.
192
+
193
+ ### Space as Composition
194
+ Reverb and delay are not decorations — in dub/minimal they ARE the composition:
195
+ - **Dub chord:** Short stab → long delay (70-80% feedback) + filter on the delay return
196
+ - **Delay throws:** Momentary send spikes (0→70% for half a beat) — the echo IS the event
197
+ - **Sidechain reverb:** Dry drums trigger sidechain compression on reverb returns — the room pulses
198
+ - **Feedback modulation:** Delay feedback at 75-85% + modulate delay time ±5-10% for warped echoes
199
+
200
+ ### Creative Sidechain (Beyond Pump)
201
+ Sidechain compression is a modulation source, not just a mix tool:
202
+ - **Sidechain filter:** Envelope follower from kick modulates pad filter cutoff — pad brightens between kicks
203
+ - **Ghost sidechain:** Muted kick as sidechain source for textures — phantom groove on non-rhythmic elements
204
+ - **Multiband sidechain:** Only duck sub frequencies from pad — shimmer stays, sub clears for kick
205
+
206
+ ### Effects as Instruments
207
+ - **Self-oscillating filter:** Push resonance until it rings, play notes by changing cutoff
208
+ - **Feedback loops:** Route output back to input through effects + compressor to control
209
+ - **Convolution as synthesis:** Load non-IR files (speech, drum break) into convolution reverb — imprints spectral character
210
+ - **Granular reverb:** Very short reverb (0.1-0.3s) high diffusion on percussion — smears transient into tonal cloud
211
+
212
+ ### The Frequency Dance
213
+ At any moment, each frequency band should have one primary element. When one opens up, another pulls back:
214
+ - Chord filter opens into highs → pull hi-hat back
215
+ - Bass drops → kick shortens
216
+ - Reverb tail fills → dry elements duck
217
+ This is mix engineering as composition.
218
+
219
+ ### When to Apply These
220
+ - User says "make it breathe" or "it sounds static" → micro-modulation
221
+ - User says "more space" or "deeper" → dub techniques (delay throws, reverb composition)
222
+ - User says "more groove" or "make it pump" → creative sidechain
223
+ - User says "more texture" or "more complex" → textural layering
224
+ - User says "surprise me" or "WTF moment" → brief textural disruption (2-8 beats max)
225
+ - User says "warmer" or "more analog" → oscillator drift + subtle saturation + filter breathing
@@ -0,0 +1,119 @@
1
+ # Patch Model Reference
2
+
3
+ The PatchModel is returned by `get_patch_model(track_index)` and represents the complete signal processing structure of a track's device chain.
4
+
5
+ ## PatchModel Structure
6
+
7
+ ```json
8
+ {
9
+ "track_index": 0,
10
+ "track_name": "Lead Synth",
11
+ "blocks": [
12
+ {
13
+ "device_index": 0,
14
+ "device_name": "Wavetable",
15
+ "block_type": "oscillator",
16
+ "controllable": true,
17
+ "parameters": ["Osc 1 Pos", "Osc 1 Gain", "Sub Gain", ...],
18
+ "sub_blocks": [
19
+ { "block_type": "filter", "parameters": ["Filter Freq", "Filter Res", ...] },
20
+ { "block_type": "lfo", "parameters": ["LFO 1 Rate", "LFO 1 Amount", ...] },
21
+ { "block_type": "envelope", "parameters": ["Amp Attack", "Amp Decay", ...] }
22
+ ]
23
+ },
24
+ {
25
+ "device_index": 1,
26
+ "device_name": "Auto Filter",
27
+ "block_type": "filter",
28
+ "controllable": true,
29
+ "parameters": ["Frequency", "Resonance", "Env. Modulation", ...]
30
+ }
31
+ ],
32
+ "controllable_params": [...],
33
+ "opaque_blocks": [],
34
+ "modulation_sources": [
35
+ { "type": "lfo", "device_index": 0, "rate": "0.5 Hz", "targets": ["Filter Freq"] }
36
+ ],
37
+ "signal_flow": "serial"
38
+ }
39
+ ```
40
+
41
+ ## Block Types
42
+
43
+ ### oscillator
44
+ Sound source generators. Found in synth instruments (Wavetable, Operator, Analog, Drift, Simpler, Sampler).
45
+
46
+ Key parameters: waveform/position, pitch/tune/detune, unison voices/spread, sub oscillator level, FM amount/ratio.
47
+
48
+ ### filter
49
+ Spectral shaping. Found as sub-blocks inside instruments or as standalone devices (Auto Filter, EQ Eight).
50
+
51
+ Key parameters: cutoff frequency, resonance, filter type (LP/HP/BP/Notch), slope (12/24 dB), envelope modulation amount, drive.
52
+
53
+ ### envelope
54
+ Time-shaping contour generators. Usually ADSR controlling amplitude or filter cutoff.
55
+
56
+ Key parameters: attack, decay, sustain, release. Some instruments offer additional envelopes with arbitrary targets.
57
+
58
+ ### lfo
59
+ Low-frequency oscillators for cyclic modulation.
60
+
61
+ Key parameters: rate (Hz or synced), waveform (sine, triangle, square, saw, random), amount/depth, target parameter, phase, offset.
62
+
63
+ ### saturation
64
+ Waveshaping, distortion, and harmonic generation.
65
+
66
+ Devices: Saturator, Overdrive, Pedal, Amp, Erosion, Dynamic Tube. Key parameters: drive, tone, type/curve, dry/wet.
67
+
68
+ ### spatial
69
+ Stereo field and space processing.
70
+
71
+ Devices: Reverb, Delay, Chorus, Phaser, Flanger, Echo, Hybrid Reverb. Key parameters: decay/time, pre-delay, size, damping, dry/wet, feedback.
72
+
73
+ ### effect
74
+ Catch-all for utility and dynamics processing.
75
+
76
+ Devices: Compressor, Glue Compressor, Limiter, Gate, Utility, Tuner, Spectrum. Key parameters vary by device.
77
+
78
+ ## Controllable vs Opaque
79
+
80
+ - **Controllable**: native Ableton devices and well-behaved plugins where `get_device_parameters` returns named, ranged parameters. All LivePilot set/get parameter tools work reliably.
81
+ - **Opaque**: third-party AU/VST plugins where parameter inspection fails or returns generic names (Parameter 1, Parameter 2). The sound design engine can detect the block exists but cannot reason about individual parameters.
82
+
83
+ Check `parameter_count` on opaque blocks. If <= 1, the plugin failed to load — delete it and replace with a native alternative.
84
+
85
+ ## Native Device Block Map
86
+
87
+ Quick reference for which block types each native device provides:
88
+
89
+ | Device | Primary Block | Sub-blocks |
90
+ |--------|--------------|------------|
91
+ | Wavetable | oscillator | filter, lfo, envelope |
92
+ | Operator | oscillator | filter, lfo, envelope |
93
+ | Analog | oscillator | filter, lfo, envelope |
94
+ | Drift | oscillator | filter, lfo, envelope |
95
+ | Simpler | oscillator | filter, lfo, envelope |
96
+ | Sampler | oscillator | filter, lfo, envelope |
97
+ | Auto Filter | filter | lfo, envelope |
98
+ | EQ Eight | filter | — |
99
+ | Compressor | effect | envelope (sidechain) |
100
+ | Glue Compressor | effect | — |
101
+ | Saturator | saturation | — |
102
+ | Overdrive | saturation | — |
103
+ | Pedal | saturation | — |
104
+ | Reverb | spatial | — |
105
+ | Delay | spatial | filter |
106
+ | Echo | spatial | filter, lfo |
107
+ | Chorus-Ensemble | spatial | — |
108
+ | Phaser-Flanger | spatial | lfo |
109
+ | Hybrid Reverb | spatial | — |
110
+ | Corpus | spatial | — |
111
+ | Utility | effect | — |
112
+
113
+ ## Rack Detection
114
+
115
+ If a track contains an Instrument Rack or Audio Effect Rack, the PatchModel reports:
116
+
117
+ - `signal_flow`: "parallel" (rack chains run in parallel)
118
+ - Each chain appears as a nested block list
119
+ - Use `get_rack_chains(track_index, device_index)` for per-chain detail
@@ -0,0 +1,118 @@
1
+ # Sound Design Critics Reference
2
+
3
+ Each critic runs during `analyze_sound_design(track_index)` and produces an issue object with `critic`, `severity` (0.0-1.0), `block`, and `evidence`.
4
+
5
+ ## static_timbre
6
+
7
+ Detects sounds that do not evolve over time. A static timbre lacks movement, making it sound flat and lifeless in a mix.
8
+
9
+ **Thresholds:**
10
+ - severity >= 0.7: No detectable spectral change over a 4-bar window. Crest factor of spectral flux < 0.5 dB
11
+ - severity >= 0.4: Minimal change (spectral flux < 1.5 dB). Some subtle movement present
12
+ - severity < 0.4: Adequate movement detected, likely intentional sustain character
13
+
14
+ **Evidence format:**
15
+ ```json
16
+ {
17
+ "spectral_flux_db": 0.3,
18
+ "analysis_window_bars": 4,
19
+ "brightest_moment_db": -8.2,
20
+ "dullest_moment_db": -8.5
21
+ }
22
+ ```
23
+
24
+ **Typical fix:** modulation_injection — add LFO to filter cutoff (rate 0.1-2 Hz, depth 20-40%).
25
+
26
+ ## no_modulation_sources
27
+
28
+ Detects patches with zero modulation sources: no LFOs, no envelopes beyond amp/filter ADSR, no automation, no macro mappings.
29
+
30
+ **Thresholds:**
31
+ - severity >= 0.7: Zero modulation sources on a melodic/pad/lead instrument
32
+ - severity >= 0.4: No modulation on a bass or rhythmic element (some genres keep bass static intentionally)
33
+ - severity < 0.4: Drum hits and one-shots (modulation not expected)
34
+
35
+ **Evidence format:**
36
+ ```json
37
+ {
38
+ "lfo_count": 0,
39
+ "envelope_count": 1,
40
+ "automation_lanes": 0,
41
+ "macro_mappings": 0,
42
+ "instrument_type": "pad"
43
+ }
44
+ ```
45
+
46
+ **Typical fix:** modulation_injection — enable device LFO if available, or add Auto Filter with LFO. For pads, map LFO to filter cutoff and/or oscillator pitch (subtle detune).
47
+
48
+ ## modulation_flatness
49
+
50
+ Detects modulation sources that exist but operate with such narrow ranges they produce no audible effect.
51
+
52
+ **Thresholds:**
53
+ - severity >= 0.7: Modulation depth < 5% of parameter range on all targets
54
+ - severity >= 0.4: Modulation depth 5-15% — present but barely perceptible
55
+ - severity < 0.4: Depth > 15%, audible modulation
56
+
57
+ **Evidence format:**
58
+ ```json
59
+ {
60
+ "modulation_source": "LFO 1",
61
+ "target_parameter": "Filter Cutoff",
62
+ "depth_percent": 3.2,
63
+ "parameter_range": [20, 20000],
64
+ "effective_range": [850, 920]
65
+ }
66
+ ```
67
+
68
+ **Typical fix:** Increase modulation depth to 20-40% for filter targets, 5-15% for pitch targets, 10-30% for amplitude targets.
69
+
70
+ ## missing_filter
71
+
72
+ Detects raw oscillator output with no filter or spectral shaping in the signal path. Unfiltered signals often sound harsh and sit poorly in a mix.
73
+
74
+ **Thresholds:**
75
+ - severity >= 0.7: No filter device in the signal chain, and the source is a harmonically rich waveform (saw, square, FM)
76
+ - severity >= 0.4: Filter present but fully open (cutoff at maximum, no resonance)
77
+ - severity < 0.4: Filter active and shaping the spectrum
78
+
79
+ **Evidence format:**
80
+ ```json
81
+ {
82
+ "has_filter": false,
83
+ "source_waveform": "sawtooth",
84
+ "harmonic_content": "rich",
85
+ "device_chain": ["Wavetable"]
86
+ }
87
+ ```
88
+
89
+ **Typical fix:** filter_shaping — add Auto Filter (low-pass, cutoff around 2-5 kHz, resonance 20-40%) or enable the instrument's built-in filter.
90
+
91
+ ## spectral_imbalance
92
+
93
+ Detects patches with too much energy concentrated in one frequency region, or significant spectral gaps.
94
+
95
+ **Thresholds:**
96
+ - severity >= 0.7: Single band > 12 dB above the mean, or a gap > 12 dB below
97
+ - severity >= 0.4: Imbalance 6-12 dB in one or more regions
98
+ - severity < 0.4: Balanced spectrum appropriate for the instrument role
99
+
100
+ **Evidence format:**
101
+ ```json
102
+ {
103
+ "peak_band": "high_mid",
104
+ "peak_deviation_db": 14.2,
105
+ "gap_band": "low_mid",
106
+ "gap_deviation_db": -8.5,
107
+ "band_levels_db": {
108
+ "sub": -22.0,
109
+ "low": -14.5,
110
+ "low_mid": -20.1,
111
+ "mid": -11.6,
112
+ "high_mid": -2.4,
113
+ "high": -8.9
114
+ }
115
+ }
116
+ ```
117
+
118
+ **Typical fix:** filter_shaping to tame the peak (EQ cut or filter sweep), or oscillator_tuning to fill the gap (add sub oscillator, adjust waveform).
@@ -0,0 +1,143 @@
1
+ ---
2
+ name: livepilot-wonder
3
+ description: >
4
+ This skill should be used when the user asks to "surprise me",
5
+ "make it magical", "I'm stuck", "give me options", "take it somewhere",
6
+ or when stuckness confidence is high. Provides the Wonder Mode
7
+ stuck-rescue workflow with honest variant labeling and preview-first UX.
8
+ ---
9
+
10
+ # Wonder Mode — Stuck-Rescue Workflow
11
+
12
+ Wonder Mode is a **preview-first stuck-rescue workflow**. It diagnoses
13
+ why a session is stuck, generates genuinely distinct executable options,
14
+ and lets the user preview, compare, and commit.
15
+
16
+ ## Atlas-first reflex (v1.23.x+, MANDATORY before any creative move)
17
+
18
+ Before producing ANY creative response, query the user's atlas overlays. The corpus contains 337 entries across 3 namespaces, plus 3,917 parameter-level JSON sidecars — far richer than anything inferable from training data alone.
19
+
20
+ **Query order:**
21
+
22
+ 1. **`extension_atlas_search(namespace="packs", query=<intent>)`** — pack identity, signature workflows, hidden gems, anti-patterns, notable presets with macro deep-data, demo projects
23
+ 2. **`extension_atlas_search(namespace="packs", query=<intent>, entity_type="cross_pack_workflow")`** — multi-pack signature recipes (15 entries: dub-techno spectral drone bed, BoC decayed pad, Mica Levi orchestral dread, etc.)
24
+ 3. **`extension_atlas_search(namespace="m4l-devices", query=<sonic descriptor>)`** — M4L instrument/effect/midi-effect device catalog (155 entries)
25
+ 4. **`atlas_search(...)`** — bundled atlas (Core Library, fallback)
26
+
27
+ **Multi-grain traversal:**
28
+
29
+ When an aesthetic-level query lands a pack-level result, AUTO-DRILL: pack → its `notable_presets` → those preset macro states → load via `load_browser_item`. Don't stop at "I found a relevant pack" — drill to the actual preset/parameter level the user can immediately use.
30
+
31
+ ```python
32
+ # Example — agent received "take it somewhere unexpected, surprise me"
33
+ hit = extension_atlas_search(namespace="packs", query="take it somewhere unexpected hidden gem")
34
+ # → cross-pack workflows + packs with hidden_gems body fields surface
35
+
36
+ workflow = extension_atlas_get("packs", "dub_techno_spectral_drone_bed")
37
+ # → reveals signal_flow: HDG → PitchLoop89 cross-feedback → Convolution Reverb
38
+
39
+ drone_lab = extension_atlas_get("packs", "drone_lab")
40
+ # → notable_presets reveals Razor Wire Drone with macros Filter Control=108, Movement=53...
41
+
42
+ # Now propose variants with concrete preset names + macro values, not vague descriptions
43
+ ```
44
+
45
+ **When the user mentions a producer or pack by name:**
46
+
47
+ - "BoC sublime pad" → atlas hit: `boc_decayed_pad` cross-pack-workflow + `inspired_by_nature` pack
48
+ - "Henke spectral chain" → atlas hit: `pitchloop89` + `granulator_iii` + 2 Henke cross-pack workflows
49
+ - "Mica Levi orchestral dread" → atlas hit: `mica_levi_orchestral_dread` workflow + the orchestral suite packs
50
+ - "Drone Lab" → atlas hit: `drone_lab` pack + 4 Drone Lab demo_project entries
51
+
52
+ The atlas knows the user's installed library at parameter depth. **Producer-anchor queries land specific moves, not vague descriptions.**
53
+
54
+ **Anti-pattern surfacing:**
55
+
56
+ Every pack entry has an `anti_patterns` body field listing "don't reach for this when X." Surface the relevant anti-pattern when proposing a move so the user knows the move's domain. (E.g. "Drone Lab is sustain-only — don't use for percussive content.")
57
+
58
+ **For deliberately rule-breaking creative requests** ("eclectic", "ignore the limits", "weird combo", "mix incompatible aesthetics"): enter **Eclectic Mode** inside Wonder. Anti-patterns become prompt tension rather than guardrails: keep hard safety and protected-user constraints, then generate variants that intentionally combine one normally-avoided source with one identity-preserving source. Do not route to a private or missing skill.
59
+
60
+ ## When to Trigger
61
+
62
+ - User says "I'm stuck", "surprise me", "make it magical", "give me options"
63
+ - `detect_stuckness` confidence > 0.5
64
+ - 3+ consecutive undos in action ledger
65
+ - Multiple plausible next moves with no clear winner
66
+ - **`livepilot-creative-director` delegates divergence to Wonder** (first-pass creative intent, not only rescue)
67
+
68
+ ## Two contexts — Stuck-Rescue vs Creative-Director Divergence
69
+
70
+ Wonder Mode now serves two callers:
71
+
72
+ 1. **Stuck-rescue** (original): a specific session is stuck and needs
73
+ rescue. The "fewer than 3 variants is correct" honesty rule applies —
74
+ you are not obligated to fabricate options that don't exist.
75
+
76
+ 2. **Creative-director first-pass**: the director is running standard
77
+ divergence before any commit. Here, actively WIDEN across `move.family`
78
+ before accepting fewer than 3 variants. Only fall back after honestly
79
+ re-reading concept packets, anti-preferences, and recent memory. The
80
+ context comes in via the `wonder_session_id` metadata or the caller's
81
+ explicit framing.
82
+
83
+ ## When NOT to Trigger
84
+
85
+ - Exact operational requests ("set track 3 volume to -6dB")
86
+ - Narrow deterministic edits ("quantize this clip")
87
+ - Performance-safe-only context (unless explicitly requested)
88
+
89
+ ## The Workflow
90
+
91
+ 1. `enter_wonder_mode` — get diagnosis + 1-3 variants
92
+ 2. Explain the diagnosis in **musical language**, not tool language
93
+ 3. Present variants honestly:
94
+ - Executable variants: can be previewed and committed
95
+ - Analytical variants (`analytical_only: true`): directional ideas only
96
+ 4. `create_preview_set` with `wonder_session_id` for executable variants
97
+ 5. `render_preview_variant` for each executable variant
98
+ 6. `compare_preview_variants` — present recommendation with reasons
99
+ 7. User chooses:
100
+ - `commit_preview_variant` — applies the variant, records outcome
101
+ - `discard_wonder_session` — rejects all, keeps creative thread open
102
+
103
+ ## Honesty Rules
104
+
105
+ - **Never describe an analytical variant as previewable**
106
+ - **Never fabricate distinctness** by relabeling the same move — and
107
+ specifically, two variants with the same `move.family` are not distinct
108
+ - **Fewer than 3 variants is correct** when fewer distinct moves exist —
109
+ but on creative-director first-pass, widen across `move.family` values
110
+ FIRST before accepting that conclusion (see `livepilot-creative-director`
111
+ references/move-family-diversity-rule.md)
112
+ - 1 executable + 2 analytical is an honest, useful result
113
+ - The `variant_count_actual` field tells you how many are real
114
+
115
+ ## Presenting Results
116
+
117
+ For each variant, explain:
118
+ - What it changes (in musical terms)
119
+ - What it preserves (sacred elements)
120
+ - Why it matters for this specific session
121
+ - Whether it's executable or analytical-only
122
+
123
+ For the recommendation, explain:
124
+ - Why this one over the others
125
+ - What risk it introduces
126
+ - What sacred elements it preserves
127
+
128
+ ## Creative Intelligence (consult before generating variants)
129
+
130
+ Wonder Mode should produce musically interesting results, not just technically correct ones. Before generating or applying any variant, read the shared device-knowledge references (they live in the `livepilot-core` skill, not in this one):
131
+
132
+ 1. `livepilot-core/references/device-knowledge/automation-as-music.md` — automation shapes and macro gestures
133
+ 2. `livepilot-core/references/device-knowledge/creative-thinking.md` — emotional-to-technical mapping
134
+ 3. `livepilot-core/references/device-knowledge/chains-genre.md` — if the session has a genre identity
135
+
136
+ When reviewing Wonder variants, aim for musical depth:
137
+ - **Filter arcs** — evolving filter across sections adds movement
138
+ - **Space arcs** — reverb/delay sends breathing with density
139
+ - **Micro-modulation** — subtle LFOs on sustained sounds
140
+ - **Macro gestures** — coordinated multi-parameter moves at transitions
141
+
142
+ Note: these are agent-level guidelines, not enforced by the Wonder engine.
143
+ The engine generates variants from semantic moves; the agent adds musical polish.
Binary file