livepilot 1.10.7 → 1.10.9

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 (135) hide show
  1. package/CHANGELOG.md +254 -0
  2. package/README.md +19 -17
  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/evaluation/fabric.py +62 -1
  15. package/mcp_server/m4l_bridge.py +63 -12
  16. package/mcp_server/project_brain/automation_graph.py +23 -1
  17. package/mcp_server/project_brain/builder.py +2 -0
  18. package/mcp_server/project_brain/models.py +20 -1
  19. package/mcp_server/project_brain/tools.py +10 -3
  20. package/mcp_server/runtime/execution_router.py +16 -2
  21. package/mcp_server/runtime/remote_commands.py +6 -0
  22. package/mcp_server/sample_engine/models.py +22 -3
  23. package/mcp_server/semantic_moves/__init__.py +1 -0
  24. package/mcp_server/semantic_moves/compiler.py +9 -1
  25. package/mcp_server/semantic_moves/device_creation_compilers.py +47 -0
  26. package/mcp_server/semantic_moves/mix_compilers.py +170 -0
  27. package/mcp_server/semantic_moves/mix_moves.py +1 -1
  28. package/mcp_server/semantic_moves/models.py +5 -0
  29. package/mcp_server/semantic_moves/tools.py +154 -35
  30. package/mcp_server/server.py +147 -17
  31. package/mcp_server/services/singletons.py +68 -0
  32. package/mcp_server/session_continuity/models.py +13 -0
  33. package/mcp_server/session_continuity/tools.py +2 -0
  34. package/mcp_server/session_continuity/tracker.py +93 -0
  35. package/mcp_server/splice_client/client.py +29 -8
  36. package/mcp_server/tools/_analyzer_engine/__init__.py +39 -0
  37. package/mcp_server/tools/_analyzer_engine/context.py +103 -0
  38. package/mcp_server/tools/_analyzer_engine/flucoma.py +23 -0
  39. package/mcp_server/tools/_analyzer_engine/sample.py +122 -0
  40. package/mcp_server/tools/_motif_engine.py +19 -4
  41. package/mcp_server/tools/analyzer.py +25 -180
  42. package/mcp_server/tools/clips.py +240 -2
  43. package/mcp_server/tools/midi_io.py +10 -0
  44. package/mcp_server/tools/tracks.py +1 -1
  45. package/mcp_server/tools/transport.py +59 -4
  46. package/mcp_server/translation_engine/tools.py +8 -4
  47. package/package.json +25 -3
  48. package/remote_script/LivePilot/__init__.py +36 -9
  49. package/remote_script/LivePilot/arrangement.py +12 -2
  50. package/remote_script/LivePilot/browser.py +16 -6
  51. package/remote_script/LivePilot/devices.py +10 -5
  52. package/remote_script/LivePilot/notes.py +13 -2
  53. package/remote_script/LivePilot/server.py +51 -13
  54. package/remote_script/LivePilot/version_detect.py +7 -4
  55. package/server.json +20 -0
  56. package/.claude-plugin/marketplace.json +0 -21
  57. package/.mcp.json.disabled +0 -9
  58. package/.mcpbignore +0 -60
  59. package/AGENTS.md +0 -46
  60. package/BUGS.md +0 -1570
  61. package/CODE_OF_CONDUCT.md +0 -27
  62. package/CONTRIBUTING.md +0 -131
  63. package/SECURITY.md +0 -48
  64. package/livepilot/.Codex-plugin/plugin.json +0 -8
  65. package/livepilot/.claude-plugin/plugin.json +0 -8
  66. package/livepilot/agents/livepilot-producer/AGENT.md +0 -313
  67. package/livepilot/commands/arrange.md +0 -47
  68. package/livepilot/commands/beat.md +0 -77
  69. package/livepilot/commands/evaluate.md +0 -49
  70. package/livepilot/commands/memory.md +0 -22
  71. package/livepilot/commands/mix.md +0 -44
  72. package/livepilot/commands/perform.md +0 -42
  73. package/livepilot/commands/session.md +0 -13
  74. package/livepilot/commands/sounddesign.md +0 -43
  75. package/livepilot/skills/livepilot-arrangement/SKILL.md +0 -155
  76. package/livepilot/skills/livepilot-composition-engine/SKILL.md +0 -107
  77. package/livepilot/skills/livepilot-composition-engine/references/form-patterns.md +0 -97
  78. package/livepilot/skills/livepilot-composition-engine/references/transition-archetypes.md +0 -102
  79. package/livepilot/skills/livepilot-core/SKILL.md +0 -184
  80. package/livepilot/skills/livepilot-core/references/ableton-workflow-patterns.md +0 -831
  81. package/livepilot/skills/livepilot-core/references/automation-atlas.md +0 -272
  82. package/livepilot/skills/livepilot-core/references/device-atlas/00-index.md +0 -110
  83. package/livepilot/skills/livepilot-core/references/device-atlas/distortion-and-character.md +0 -687
  84. package/livepilot/skills/livepilot-core/references/device-atlas/drums-and-percussion.md +0 -753
  85. package/livepilot/skills/livepilot-core/references/device-atlas/dynamics-and-punch.md +0 -525
  86. package/livepilot/skills/livepilot-core/references/device-atlas/eq-and-filtering.md +0 -402
  87. package/livepilot/skills/livepilot-core/references/device-atlas/midi-tools.md +0 -963
  88. package/livepilot/skills/livepilot-core/references/device-atlas/movement-and-modulation.md +0 -874
  89. package/livepilot/skills/livepilot-core/references/device-atlas/space-and-depth.md +0 -571
  90. package/livepilot/skills/livepilot-core/references/device-atlas/spectral-and-weird.md +0 -714
  91. package/livepilot/skills/livepilot-core/references/device-atlas/synths-native.md +0 -953
  92. package/livepilot/skills/livepilot-core/references/device-knowledge/00-index.md +0 -34
  93. package/livepilot/skills/livepilot-core/references/device-knowledge/automation-as-music.md +0 -204
  94. package/livepilot/skills/livepilot-core/references/device-knowledge/chains-genre.md +0 -173
  95. package/livepilot/skills/livepilot-core/references/device-knowledge/creative-thinking.md +0 -211
  96. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-distortion.md +0 -188
  97. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-space.md +0 -162
  98. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-spectral.md +0 -229
  99. package/livepilot/skills/livepilot-core/references/device-knowledge/instruments-synths.md +0 -243
  100. package/livepilot/skills/livepilot-core/references/m4l-devices.md +0 -352
  101. package/livepilot/skills/livepilot-core/references/memory-guide.md +0 -107
  102. package/livepilot/skills/livepilot-core/references/midi-recipes.md +0 -402
  103. package/livepilot/skills/livepilot-core/references/mixing-patterns.md +0 -578
  104. package/livepilot/skills/livepilot-core/references/overview.md +0 -290
  105. package/livepilot/skills/livepilot-core/references/sample-manipulation.md +0 -724
  106. package/livepilot/skills/livepilot-core/references/sound-design-deep.md +0 -140
  107. package/livepilot/skills/livepilot-core/references/sound-design.md +0 -393
  108. package/livepilot/skills/livepilot-devices/SKILL.md +0 -169
  109. package/livepilot/skills/livepilot-evaluation/SKILL.md +0 -156
  110. package/livepilot/skills/livepilot-evaluation/references/capability-modes.md +0 -118
  111. package/livepilot/skills/livepilot-evaluation/references/evaluation-contracts.md +0 -121
  112. package/livepilot/skills/livepilot-evaluation/references/memory-promotion.md +0 -110
  113. package/livepilot/skills/livepilot-mix-engine/SKILL.md +0 -123
  114. package/livepilot/skills/livepilot-mix-engine/references/mix-critics.md +0 -143
  115. package/livepilot/skills/livepilot-mix-engine/references/mix-moves.md +0 -105
  116. package/livepilot/skills/livepilot-mixing/SKILL.md +0 -157
  117. package/livepilot/skills/livepilot-notes/SKILL.md +0 -130
  118. package/livepilot/skills/livepilot-performance-engine/SKILL.md +0 -122
  119. package/livepilot/skills/livepilot-performance-engine/references/performance-safety.md +0 -98
  120. package/livepilot/skills/livepilot-release/SKILL.md +0 -130
  121. package/livepilot/skills/livepilot-sample-engine/SKILL.md +0 -105
  122. package/livepilot/skills/livepilot-sample-engine/references/sample-critics.md +0 -87
  123. package/livepilot/skills/livepilot-sample-engine/references/sample-philosophy.md +0 -51
  124. package/livepilot/skills/livepilot-sample-engine/references/sample-techniques.md +0 -131
  125. package/livepilot/skills/livepilot-sound-design-engine/SKILL.md +0 -168
  126. package/livepilot/skills/livepilot-sound-design-engine/references/patch-model.md +0 -119
  127. package/livepilot/skills/livepilot-sound-design-engine/references/sound-design-critics.md +0 -118
  128. package/livepilot/skills/livepilot-wonder/SKILL.md +0 -79
  129. package/m4l_device/LivePilot_Analyzer.amxd.pre-presentation-backup +0 -0
  130. package/m4l_device/LivePilot_Analyzer.maxpat +0 -2705
  131. package/m4l_device/LivePilot_Analyzer.maxproj +0 -53
  132. package/manifest.json +0 -91
  133. package/mcp_server/splice_client/protos/app_pb2.pyi +0 -1153
  134. package/scripts/generate_tool_catalog.py +0 -106
  135. package/scripts/sync_metadata.py +0 -349
@@ -1,123 +0,0 @@
1
- ---
2
- name: livepilot-mix-engine
3
- description: This skill should be used when the user asks to "analyze my mix", "find mix issues", "fix masking", "check frequency clashes", "improve dynamics", "check stereo width", "check headroom", or wants critic-driven mix analysis and evaluation. Provides the mix critic loop for iterative mix improvement.
4
- ---
5
-
6
- # Mix Engine — Critic-Driven Mix Improvement
7
-
8
- The mix engine runs an iterative critic loop: analyze, plan, execute, measure, evaluate, keep or undo. Every mix change is measured before and after. Nothing stays unless it scores better than the original.
9
-
10
- ## The Mix Critic Loop
11
-
12
- Follow these steps in order. Do not skip the evaluation step.
13
-
14
- ### Step 1 — Analyze
15
-
16
- Call `analyze_mix` or `get_mix_issues` to build a MixState and run all critics against the current session. The response contains an `issues` array, each with a `critic`, `severity`, `track_index`, and `evidence` dict.
17
-
18
- If the M4L analyzer bridge is absent, critics fall back to role-based heuristics only (track names, device chains, volume/pan positions). Inform the user that spectral analysis is unavailable and recommendations are less precise.
19
-
20
- For detailed frequency collision data, call `get_masking_report`. For a quick status overview without the full critic pass, call `get_mix_summary`.
21
-
22
- ### Step 2 — Plan
23
-
24
- Pick the highest-severity issue from the `issues` array. Call `plan_mix_move` with the issue data. The planner returns the smallest intervention that addresses the problem — a single parameter change, not a chain of edits.
25
-
26
- Read the `move` object: it contains `move_type`, `target_track`, `target_device`, `target_parameter`, `target_value`, and `rationale`. Consult the move vocabulary in `references/mix-moves.md` for parameter ranges.
27
-
28
- ### Step 3 — Capture Before
29
-
30
- Take a measurement snapshot before executing anything:
31
-
32
- 1. Call `get_master_spectrum` — save the 8-band spectral data
33
- 2. Call `get_master_rms` — save the RMS and peak values
34
-
35
- Optionally call `get_mix_snapshot` if you need per-track volume/pan/send state for the evaluation.
36
-
37
- ### Step 4 — Execute
38
-
39
- Execute the planned move. Use the appropriate tool for the move type:
40
-
41
- - `set_device_parameter` for EQ cuts/boosts, compressor thresholds, saturation drives
42
- - `set_track_volume` for gain staging
43
- - `set_track_pan` for stereo placement
44
- - `set_track_send` for bus routing levels
45
- - `toggle_device` for bypassing/enabling processors
46
- - `batch_set_parameters` when the move requires multiple related parameter changes on the same device
47
-
48
- Execute exactly one move. Do not chain multiple interventions before measuring.
49
-
50
- ### Step 5 — Capture After
51
-
52
- Repeat the same measurements from Step 3:
53
-
54
- 1. Call `get_master_spectrum` — save the post-change spectral data
55
- 2. Call `get_master_rms` — save the post-change RMS and peak values
56
-
57
- ### Step 6 — Evaluate
58
-
59
- Call `evaluate_mix_move` with the before and after snapshots:
60
-
61
- ```
62
- evaluate_mix_move(
63
- before_snapshot: { spectrum: [...], rms: float, peak: float },
64
- after_snapshot: { spectrum: [...], rms: float, peak: float },
65
- targets: { ... }, # what the move aimed to improve
66
- protect: { ... } # what must not get worse
67
- )
68
- ```
69
-
70
- Read the response: `keep_change` (bool), `score` (0.0-1.0), `improvements` (list), `regressions` (list), `explanation` (string).
71
-
72
- ### Step 7 — Keep or Undo
73
-
74
- If `keep_change` is `false`, call `undo()` immediately. Tell the user what was tried and why it was reverted, citing the `regressions` list.
75
-
76
- If `keep_change` is `true`, report the improvement to the user with the score and explanation.
77
-
78
- ### Step 8 — Learn (Optional)
79
-
80
- If the move scored above 0.7 and the user confirms satisfaction, call `memory_learn(name="...", type="mix_template", qualities={"summary": "..."}, payload={...})` to save the technique for future recall.
81
-
82
- ### Step 9 — Repeat
83
-
84
- Return to Step 1 and re-analyze. The critic list updates after each change. Continue until no high-severity issues remain or the user says to stop.
85
-
86
- ## Quick Mix Checks
87
-
88
- Not every request needs the full loop:
89
-
90
- - **"How's my mix?"** — Call `get_mix_summary` for a one-shot status report with no changes
91
- - **"What's clashing?"** — Call `get_masking_report` for detailed per-pair frequency collision data
92
- - **"What are the issues?"** — Call `get_mix_issues` for the critic list without executing any fixes
93
-
94
- ## Critic Types
95
-
96
- Six critics run during analysis. See `references/mix-critics.md` for thresholds and evidence format:
97
-
98
- - **masking** — frequency collisions between overlapping tracks
99
- - **over_compressed** — excessive compression reducing dynamic range
100
- - **flat_dynamics** — insufficient volume variation across sections
101
- - **low_headroom** — master peak too close to 0 dBFS
102
- - **stereo_width** — mono collapse or excessive width on specific elements
103
- - **spectral_balance** — overall tonal balance skew (too bright, too dark, mid-heavy)
104
-
105
- ## Move Vocabulary
106
-
107
- The planner draws from six move types. See `references/mix-moves.md` for parameter ranges:
108
-
109
- - **gain_staging** — volume adjustments to establish proper level hierarchy
110
- - **bus_compression** — glue compression on groups or master
111
- - **transient_shaping** — attack/sustain manipulation for punch or smoothness
112
- - **eq_cut** — subtractive EQ to clear masking or remove resonances
113
- - **eq_boost** — additive EQ to bring out character (use sparingly)
114
- - **pan_spread** — stereo placement adjustments for width and separation
115
-
116
- ## Analyzer Dependency
117
-
118
- The mix engine works in two modes:
119
-
120
- - **Full mode** (M4L analyzer connected): spectral data, RMS, key detection available. Critics use measured evidence.
121
- - **Heuristic mode** (no analyzer): critics infer from track names, device chains, and parameter positions. Always inform the user: "Spectral analysis unavailable — recommendations are based on track structure and device settings only."
122
-
123
- Call `get_capability_state` to check which mode is active before starting the loop.
@@ -1,143 +0,0 @@
1
- # Mix Critics Reference
2
-
3
- Each critic runs during `analyze_mix` or `get_mix_issues` and produces an issue object with `critic`, `severity` (0.0-1.0), `track_index`, and `evidence`.
4
-
5
- ## masking
6
-
7
- Detects frequency collisions between tracks that occupy the same spectral range.
8
-
9
- **Thresholds:**
10
- - severity >= 0.7: Two tracks share > 60% spectral overlap in the same frequency band with both > -12 dB in that range
11
- - severity >= 0.4: Partial overlap (30-60%) or one track is significantly quieter
12
- - severity < 0.4: Minor overlap, likely intentional layering
13
-
14
- **Evidence format:**
15
- ```json
16
- {
17
- "track_a": 0,
18
- "track_b": 2,
19
- "collision_band": "low_mid",
20
- "frequency_range": [200, 500],
21
- "overlap_percent": 72.5,
22
- "a_level_db": -8.2,
23
- "b_level_db": -10.1
24
- }
25
- ```
26
-
27
- **Typical fix:** eq_cut on the less important track in the collision band, or pan_spread to separate spatially.
28
-
29
- ## over_compressed
30
-
31
- Detects tracks or the master bus with excessive compression, indicated by very low crest factor (peak-to-RMS ratio).
32
-
33
- **Thresholds:**
34
- - severity >= 0.7: Crest factor < 3 dB on a dynamic source (vocals, drums, full mix)
35
- - severity >= 0.4: Crest factor 3-6 dB on sources that should be more dynamic
36
- - severity < 0.4: Mild compression, may be intentional for genre
37
-
38
- **Evidence format:**
39
- ```json
40
- {
41
- "track_index": 1,
42
- "crest_factor_db": 2.4,
43
- "rms_db": -12.3,
44
- "peak_db": -9.9,
45
- "compressor_device": "Compressor",
46
- "compressor_ratio": 8.0,
47
- "compressor_threshold_db": -20.0
48
- }
49
- ```
50
-
51
- **Typical fix:** Raise compressor threshold, reduce ratio, or increase attack time.
52
-
53
- ## flat_dynamics
54
-
55
- Detects tracks or sections with insufficient volume variation, making the mix feel static across song sections.
56
-
57
- **Thresholds:**
58
- - severity >= 0.7: Volume variation < 2 dB across all sections
59
- - severity >= 0.4: Volume variation 2-4 dB where genre expects more contrast
60
- - severity < 0.4: Minimal variation but may suit the genre (EDM drops, ambient)
61
-
62
- **Evidence format:**
63
- ```json
64
- {
65
- "track_index": 3,
66
- "section_volumes_db": [-10.2, -10.5, -10.1, -10.4],
67
- "volume_range_db": 0.4,
68
- "expected_range_db": 6.0
69
- }
70
- ```
71
-
72
- **Typical fix:** Automation on track volume or device parameters between sections.
73
-
74
- ## low_headroom
75
-
76
- Detects when the master bus peak is dangerously close to 0 dBFS, risking clipping.
77
-
78
- **Thresholds:**
79
- - severity >= 0.7: Master peak > -1 dBFS
80
- - severity >= 0.4: Master peak between -3 and -1 dBFS
81
- - severity < 0.4: Master peak between -6 and -3 dBFS (acceptable for mastered content)
82
-
83
- **Evidence format:**
84
- ```json
85
- {
86
- "master_peak_db": -0.3,
87
- "master_rms_db": -8.2,
88
- "headroom_db": 0.3,
89
- "clipping": false
90
- }
91
- ```
92
-
93
- **Typical fix:** gain_staging — reduce the loudest tracks by 1-3 dB, or apply a limiter on the master.
94
-
95
- ## stereo_width
96
-
97
- Detects stereo problems: mono collapse (too narrow), excessive width (phase issues), or elements placed inappropriately in the stereo field.
98
-
99
- **Thresholds:**
100
- - severity >= 0.7: Correlation coefficient < 0.1 (phase issues) or > 0.95 (essentially mono)
101
- - severity >= 0.4: Bass content with significant stereo width, or lead vocal panned away from center
102
- - severity < 0.4: Minor width imbalance
103
-
104
- **Evidence format:**
105
- ```json
106
- {
107
- "track_index": 5,
108
- "correlation": 0.05,
109
- "width_estimate": 0.95,
110
- "issue_type": "phase_cancellation",
111
- "frequency_range": [100, 300]
112
- }
113
- ```
114
-
115
- **Typical fix:** Narrow bass to mono below 150 Hz (Utility mid/side), widen or narrow specific elements with pan_spread.
116
-
117
- ## spectral_balance
118
-
119
- Detects overall tonal balance skew across the full mix — too bright, too dark, or mid-heavy compared to reference targets.
120
-
121
- **Thresholds:**
122
- - severity >= 0.7: Any band deviates > 6 dB from genre target curve
123
- - severity >= 0.4: Deviation 3-6 dB in one or more bands
124
- - severity < 0.4: Minor skew, within normal range
125
-
126
- **Evidence format:**
127
- ```json
128
- {
129
- "balance_type": "too_bright",
130
- "band_deviations_db": {
131
- "sub": -1.2,
132
- "low": 0.5,
133
- "low_mid": -0.8,
134
- "mid": -2.1,
135
- "high_mid": 4.2,
136
- "high": 7.1,
137
- "air": 5.8
138
- },
139
- "reference_curve": "electronic_modern"
140
- }
141
- ```
142
-
143
- **Typical fix:** eq_cut on the protruding bands, or eq_boost on deficient bands. Prefer cuts over boosts.
@@ -1,105 +0,0 @@
1
- # Mix Moves Reference
2
-
3
- The move vocabulary used by `plan_mix_move`. Each move type has defined parameter ranges and constraints.
4
-
5
- ## gain_staging
6
-
7
- Adjust track or bus volume to establish proper level hierarchy.
8
-
9
- **Parameters:**
10
- - `target_track`: track index (0-based)
11
- - `target_value`: normalized volume 0.0-1.0 (0.85 = unity / 0 dB)
12
- - `delta_db`: typical adjustment range -6 to +3 dB per move
13
-
14
- **Constraints:**
15
- - Never boost more than +3 dB in a single move
16
- - Prefer cutting the louder track over boosting the quieter one
17
- - Check master headroom after any gain change
18
- - Group tracks (drums, synths, vocals) should be staged relative to each other first
19
-
20
- **Tools:** `set_track_volume`, `set_master_volume`
21
-
22
- ## bus_compression
23
-
24
- Apply or adjust glue compression on groups, return tracks, or master bus.
25
-
26
- **Parameters:**
27
- - `threshold_db`: -30 to 0 dB (start conservative at -15)
28
- - `ratio`: 1.5:1 to 4:1 for glue, up to 8:1 for limiting
29
- - `attack_ms`: 0.1 to 100 ms (10-30 ms for glue, <1 ms for limiting)
30
- - `release_ms`: 50 to 500 ms (auto release preferred for master bus)
31
- - `makeup_gain_db`: 0 to +6 dB
32
-
33
- **Constraints:**
34
- - Gain reduction should stay under 3-4 dB for glue compression
35
- - Always capture before/after RMS to verify loudness is maintained
36
- - On master bus, prefer ratio <= 2:1 and attack >= 10 ms
37
-
38
- **Tools:** `set_device_parameter`, `find_and_load_device(track_index, "Compressor")`
39
-
40
- ## transient_shaping
41
-
42
- Adjust attack and sustain characteristics to control punch and body.
43
-
44
- **Parameters:**
45
- - `attack`: -100% to +100% (negative softens, positive sharpens)
46
- - `sustain`: -100% to +100% (negative tightens, positive lengthens)
47
-
48
- **Constraints:**
49
- - Apply to individual drum hits or drum bus, not full mix
50
- - Check that transient shaping doesn't push peaks above headroom
51
- - Often more effective than compression for punch problems
52
-
53
- **Tools:** `set_device_parameter` on a transient shaper device
54
-
55
- ## eq_cut
56
-
57
- Subtractive EQ to clear masking, remove resonances, or fix spectral balance.
58
-
59
- **Parameters:**
60
- - `frequency_hz`: 20 to 20000 Hz
61
- - `gain_db`: -12 to 0 dB (never cut more than 12 dB in one move)
62
- - `q`: 0.5 to 8.0 (narrow cuts 4-8 for resonances, wide cuts 0.5-2 for balance)
63
- - `filter_type`: low_cut, high_cut, bell, notch
64
-
65
- **Constraints:**
66
- - Prefer EQ Eight for surgical work (8 bands available)
67
- - For low cuts on non-bass tracks, use 18 or 24 dB/oct high-pass
68
- - Cut on the less important track in a masking pair
69
- - Verify after cut that the track still sounds full — over-cutting kills body
70
-
71
- **Tools:** `set_device_parameter`, `find_and_load_device(track_index, "EQ Eight")`
72
-
73
- ## eq_boost
74
-
75
- Additive EQ to bring out character frequencies. Use sparingly.
76
-
77
- **Parameters:**
78
- - `frequency_hz`: 20 to 20000 Hz
79
- - `gain_db`: 0 to +4 dB (never boost more than 4 dB in one move)
80
- - `q`: 0.5 to 4.0 (wide boosts sound more natural)
81
-
82
- **Constraints:**
83
- - Always try a cut on competing tracks before boosting
84
- - Boosts above +4 dB usually indicate a source problem, not a mix problem
85
- - Check master headroom after any boost — boosts add energy
86
- - Wide Q (0.5-1.5) for tonal shaping, narrow Q (2-4) for emphasis
87
-
88
- **Tools:** `set_device_parameter` on EQ device
89
-
90
- ## pan_spread
91
-
92
- Stereo placement adjustments for width and separation.
93
-
94
- **Parameters:**
95
- - `pan`: -1.0 (full left) to 1.0 (full right), 0.0 = center
96
- - `width`: 0.0 (mono) to 2.0 (extra wide) on Utility device
97
-
98
- **Constraints:**
99
- - Bass and kick stay centered (pan 0.0)
100
- - Lead vocal stays centered or very slightly off-center (within -0.1 to 0.1)
101
- - Stereo pairs (L/R guitars, synth layers) mirror symmetrically
102
- - Check mono compatibility after spreading — call `check_translation` if available
103
- - Never pan return tracks (reverb/delay should remain stereo)
104
-
105
- **Tools:** `set_track_pan`, `set_device_parameter` on Utility for mid/side width
@@ -1,157 +0,0 @@
1
- ---
2
- name: livepilot-mixing
3
- description: This skill should be used when the user asks to "mix", "balance levels", "set volume", "pan a track", "EQ", "compress", "sends", "routing", "master volume", "gain staging", "sidechain", or wants to perform mixing operations in Ableton Live.
4
- ---
5
-
6
- # Mixing — Levels, Panning, Routing, and Analysis
7
-
8
- Balance track levels, configure routing, apply mix effects, and analyze frequency content in Ableton Live.
9
-
10
- ## Read Before Write
11
-
12
- Always understand the current state before changing anything:
13
-
14
- 1. `get_session_info` — see all tracks, their types, and current configuration
15
- 2. `get_track_info(track_index)` — detailed info on a single track: devices, clips, mixer state
16
- 3. `get_mix_snapshot` — one-call overview of all levels, panning, routing, mute/solo state across the entire session
17
- 4. `get_device_parameters(track_index, device_index)` — read current parameter values before tweaking
18
-
19
- Never set levels blindly. Read the current state, make informed adjustments, then verify the result.
20
-
21
- ## Volume and Pan
22
-
23
- - `set_track_volume(track_index, value)` — value is normalized 0.0 to 1.0 (not dB). 0.85 is roughly unity gain. 0.0 is silence, 1.0 is max.
24
- - `set_track_pan(track_index, value)` — value is -1.0 (hard left) to 1.0 (hard right). 0.0 is center.
25
- - `set_master_volume(value)` — master output level, same 0.0-1.0 range.
26
-
27
- Gain staging principle: keep individual tracks at moderate levels (0.5-0.85) and use the master for final output. Avoid pushing tracks to 1.0 — it leaves no headroom for summing.
28
-
29
- ## Sends and Return Tracks
30
-
31
- Sends route signal from any track to a return track for shared processing (reverb bus, delay bus, parallel compression).
32
-
33
- - `set_track_send(track_index, send_index, value)` — set send level (0.0-1.0). Send index 0 = Send A, 1 = Send B, etc.
34
- - `get_return_tracks` — list all return tracks with their names, devices, and routing
35
- - `create_return_track` — add a new return track to the session
36
- - `get_master_track` — inspect the master track configuration
37
-
38
- Return track workflow:
39
- 1. `create_return_track` — creates a new return (automatically assigned next letter: A, B, C...)
40
- 2. Load an effect on the return track (e.g., Reverb with Dry/Wet at 100%)
41
- 3. `set_track_send(track_index, send_index, value)` on each track that needs the effect
42
- 4. Adjust send levels per track for different amounts of the shared effect
43
-
44
- ## Routing
45
-
46
- - `get_track_routing(track_index)` — see current input/output routing for a track
47
- - `set_track_routing(track_index, input_routing, output_routing)` — configure where audio comes from and goes to
48
-
49
- Common routing patterns:
50
- - **Resampling:** set input routing to "Resampling" on an audio track to capture the master output
51
- - **Sidechain:** route a track's output to another track's sidechain input for ducking compression
52
- - **Sub-groups:** route multiple tracks to a group track for bus processing
53
-
54
- ## Metering
55
-
56
- - `get_track_meters(track_index)` — read real-time output level of a specific track (left/right channels)
57
- - `get_master_meters` — read the master output level in real-time
58
-
59
- Use metering to verify your level adjustments. After setting volumes, check meters to confirm nothing is clipping and the balance sounds right.
60
-
61
- ## Mix Snapshot
62
-
63
- `get_mix_snapshot` returns a complete picture of the session mix in one call:
64
- - All track volumes and pan positions
65
- - Mute and solo states
66
- - Send levels
67
- - Routing configuration
68
- - Return track setup
69
-
70
- Use this as your starting point for any mixing task. It shows the full picture without needing to query each track individually.
71
-
72
- ## Automation
73
-
74
- ### Clip Automation
75
-
76
- - `get_clip_automation(track_index, clip_index, parameter_name)` — read existing automation for a parameter
77
- - `set_clip_automation(track_index, clip_index, parameter_name, points)` — write automation points as `[{time, value}, ...]`
78
- - `clear_clip_automation(track_index, clip_index, parameter_name)` — remove automation before rewriting
79
-
80
- ### Intelligent Curves
81
-
82
- - `generate_automation_curve(shape, start_value, end_value, num_points)` — generate automation points using 16 curve types: linear, exponential, logarithmic, sine, cosine, s_curve, ease_in, ease_out, bounce, random_walk, step, triangle, sawtooth, reverse_sawtooth, pulse, and smooth_random
83
- - `apply_automation_shape(track_index, clip_index, parameter_name, shape, start_value, end_value)` — generate and apply a curve in one call
84
-
85
- ### Recipes
86
-
87
- `apply_automation_recipe(track_index, clip_index, recipe_name)` — apply a pre-built automation pattern. Available recipes:
88
-
89
- - `filter_sweep_up` — low-pass filter opens over time, classic build
90
- - `filter_sweep_down` — filter closes, darkening effect
91
- - `sidechain_pump` — rhythmic volume ducking on each beat
92
- - `dub_throw` — delay feedback spikes on specific beats
93
- - `tremolo` — rhythmic volume oscillation
94
- - `autopan` — stereo movement back and forth
95
- - `fade_in` / `fade_out` — gradual volume transitions
96
- - `stutter` — rapid volume gates for glitch effects
97
- - `vinyl_crackle` — subtle noise modulation
98
- - `tape_wow` — pitch/speed micro-variations
99
- - `bit_crush_sweep` — sample rate reduction over time
100
- - `resonance_peak` — filter resonance spike for emphasis
101
- - `stereo_width_grow` — mono to wide stereo expansion
102
- - `grain_scatter` — granular parameter randomization
103
-
104
- ### Automation Feedback Loop
105
-
106
- Follow this cycle for all automation work:
107
-
108
- 1. **Perceive:** `get_master_spectrum` + `get_track_meters` to understand current state
109
- 2. **Diagnose:** identify what needs to change based on spectral data
110
- 3. **Act:** `apply_automation_shape` or `apply_automation_recipe`
111
- 4. **Verify:** `get_master_spectrum` again to confirm the change worked
112
- 5. **Adjust:** if not right, `clear_clip_automation` and try different parameters
113
-
114
- Never write automation without reading spectrum before and after.
115
-
116
- ## Spectrum Analysis (Requires M4L Bridge)
117
-
118
- When the LivePilot Analyzer M4L device is on the master track:
119
-
120
- - `get_master_spectrum` — 8-band frequency analysis: sub (20-60 Hz), bass (60-200 Hz), low_mid (200-500 Hz), mid (500-2k Hz), high_mid (2k-4k Hz), presence (4k-6k Hz), brilliance (6k-12k Hz), air (12k-20k Hz)
121
- - `get_master_rms` — true RMS and peak levels for loudness assessment
122
- - `get_detected_key` — detect musical key from audio content
123
-
124
- Use spectrum data to make informed EQ decisions. If the low_mid band is 6 dB hotter than everything else, there is mud to clean up. If the air band is absent, the mix may sound dull.
125
-
126
- ## Mix Engine — Critic-Driven Analysis
127
-
128
- For deeper mix analysis beyond basic levels and spectrum:
129
-
130
- - `analyze_mix` — full spectral mix analysis with per-track breakdown
131
- - `get_mix_issues` — identify specific problems (masking, imbalance, phase)
132
- - `plan_mix_move` — get a suggested action to fix a detected issue
133
- - `evaluate_mix_move` — score a proposed change before applying it
134
- - `get_masking_report` — detect frequency masking between tracks
135
- - `get_mix_summary` — quick overall mix health status
136
-
137
- Use the mix engine when the user wants a critical evaluation of their mix, not just level adjustments. Start with `get_mix_summary` for a quick overview, escalate to `analyze_mix` for full detail.
138
-
139
- ## Quick Mix Status
140
-
141
- `get_mix_summary` from the mix engine provides an overall health score, top issues, and priority recommendations in a single call. Use it as a fast check before diving into detailed analysis.
142
-
143
- ## Escalation Ladder
144
-
145
- Follow this progression — start fast, go deeper only when needed:
146
-
147
- 1. **Instant:** `get_master_spectrum` + `get_track_meters` — frequency balance + levels. Answers 80% of mix questions.
148
- 2. **Fast (1-5s):** `analyze_loudness` + `analyze_mix` — LUFS, true peak, and full mix analysis. For mastering prep.
149
- 3. **Slow (5-15s):** `compare_to_reference` + `analyze_spectrum_offline` — reference matching, offline spectral analysis. Ask the user first.
150
-
151
- Never skip levels. Start at the lowest appropriate level and offer to go deeper.
152
-
153
- ## Reference
154
-
155
- Supporting references live in the `livepilot-core` skill's `references/` directory:
156
- - `livepilot-core/references/mixing-patterns.md` — gain staging, parallel compression, sidechain, EQ by instrument, bus processing, stereo width
157
- - `livepilot-core/references/automation-atlas.md` — curve theory, genre-specific recipes, diagnostic filter, cross-track spectral mapping
@@ -1,130 +0,0 @@
1
- ---
2
- name: livepilot-notes
3
- description: This skill should be used when the user asks to "write notes", "add a melody", "chord progression", "rhythm pattern", "MIDI notes", "transpose", "quantize", "Euclidean rhythm", "counterpoint", "scale", "key detection", "harmony", or wants to create, edit, or analyze MIDI content in Ableton Live.
4
- ---
5
-
6
- # MIDI Notes — Create, Edit, and Analyze
7
-
8
- Write melodies, chords, rhythms, and generative patterns in Ableton Live clips. Every note operation follows the Live 12 API.
9
-
10
- ## Note API Cycle
11
-
12
- Four operations form the core CRUD cycle for MIDI notes:
13
-
14
- 1. **Create:** `add_notes(track_index, clip_index, notes)` — write new notes into a clip
15
- 2. **Read:** `get_notes(track_index, clip_index)` — retrieve all notes with IDs, pitches, timings
16
- 3. **Update:** `modify_notes(track_index, clip_index, modifications)` — change existing notes by `note_id`
17
- 4. **Delete:** `remove_notes(track_index, clip_index, start_time, duration, pitch_start, pitch_end)` — clear a region, or `remove_notes_by_id(track_index, clip_index, note_ids)` — surgical deletion by ID
18
-
19
- Always create a clip first with `create_clip(track_index, clip_index, length)` before adding notes to it.
20
-
21
- ## Note Format
22
-
23
- When calling `add_notes`, each note requires:
24
-
25
- ```json
26
- {
27
- "pitch": 60,
28
- "start_time": 0.0,
29
- "duration": 0.5,
30
- "velocity": 100,
31
- "mute": false
32
- }
33
- ```
34
-
35
- When reading with `get_notes`, each note also returns Live 12 extended fields:
36
- - `note_id` — unique identifier for modify/remove operations
37
- - `probability` — 0.0 to 1.0, per-note trigger probability (Live 12 feature)
38
- - `velocity_deviation` — -127.0 to 127.0, randomizes velocity on each trigger
39
- - `release_velocity` — 0.0 to 127.0, note-off velocity
40
-
41
- Use `modify_notes` with `note_id` to update any field on existing notes — pitch, velocity, timing, probability, mute state.
42
-
43
- ## Duplication and Transposition
44
-
45
- - `duplicate_notes(track_index, clip_index, time_offset)` — copy all notes forward by `time_offset` beats. Use for pattern repetition: a 4-beat pattern duplicated at offset 4.0 creates an 8-beat loop.
46
- - `transpose_notes(track_index, clip_index, semitones, start_time, duration)` — shift pitches in a region by semitones. Positive = up, negative = down.
47
- - `transpose_smart(track_index, clip_index, semitones, key)` — transpose with scale awareness. Notes stay within the target key, avoiding chromatic collisions.
48
-
49
- ## Quantization
50
-
51
- `quantize_clip(track_index, clip_index, grid, amount)` snaps note start times to a rhythmic grid.
52
-
53
- Grid enum values:
54
- - 0 = None (no quantize)
55
- - 1 = 1/4 notes
56
- - 2 = 1/8 notes
57
- - 3 = 1/8 triplets
58
- - 4 = 1/8 + triplets (combined grid)
59
- - 5 = 1/16 notes
60
- - 6 = 1/16 triplets
61
- - 7 = 1/16 + triplets (combined grid)
62
- - 8 = 1/32 notes
63
-
64
- The `amount` parameter (0.0-1.0) controls how far notes move toward the grid. Use 1.0 for rigid quantize, 0.5-0.7 for humanized feel.
65
-
66
- ## Theory Integration
67
-
68
- Run these checks before firing any clip with melodic content:
69
-
70
- 1. `identify_scale(track_index, clip_index)` — detect the scale from existing notes (Krumhansl-Schmuckler algorithm). Returns key, mode, and confidence.
71
- 2. `detect_theory_issues(track_index, clip_index, strict=true)` — check for out-of-key notes, parallel fifths, voice crossing, augmented/diminished accidents. The `strict` flag enables all checks.
72
- 3. Fix problems with `modify_notes` — adjust offending pitches before the user hears them.
73
-
74
- The theory engine knows 7 standard modes. Exotic scales (Hijaz, Hungarian minor, whole tone) produce false "out of key" warnings. Cross-reference flagged pitches against the intended scale manually. Use `key="C hijaz"` for Hijaz/Phrygian Dominant keys.
75
-
76
- ## Harmony Analysis and Suggestions
77
-
78
- - `analyze_harmony(track_index, clip_index)` — identify chords in a clip, returns chord names, qualities, root notes, and progression analysis
79
- - `suggest_next_chord(track_index, clip_index, key)` — given the current harmonic context, suggest the next chord with voice leading and functional reasoning
80
- - `harmonize_melody(track_index, clip_index, key, style)` — generate harmony notes for an existing melody. Returns a note array ready for `add_notes` on a separate track.
81
- - `generate_countermelody(track_index, clip_index, key, species)` — generate a counterpoint line against existing notes. Species 1-5 follow classical counterpoint rules. Returns notes for `add_notes`.
82
-
83
- Both `harmonize_melody` and `generate_countermelody` return note arrays — do not call them and discard the output. Place the results into a clip with `add_notes`.
84
-
85
- ## Generative Algorithms
86
-
87
- ### Euclidean Rhythms
88
-
89
- `generate_euclidean_rhythm(pulses, steps, pitch, velocity, duration)` — distribute `pulses` as evenly as possible across `steps` using the Bjorklund algorithm. Returns a note array. The tool identifies named rhythms automatically (e.g., 3 pulses in 8 steps = "tresillo", 5 in 8 = "cinquillo").
90
-
91
- `layer_euclidean_rhythms(layers)` — stack multiple Euclidean patterns for polyrhythmic textures. Each layer specifies pulses, steps, pitch, and velocity. Returns a combined note array spanning all layers, ready for a single `add_notes` call or split across tracks.
92
-
93
- ### Minimalist Techniques
94
-
95
- `generate_tintinnabuli(melody_pitches, key, mode, position)` — implement Arvo Part's technique: a T-voice (triad arpeggio) against a M-voice (stepwise melody). Returns two-voice note data.
96
-
97
- `generate_phase_shift(pattern, shift_amount, repetitions)` — implement Steve Reich's phasing: two identical patterns drifting apart over time. One voice holds steady while the other shifts by `shift_amount` per repetition.
98
-
99
- `generate_additive_process(melody_pitches, iterations)` — implement Philip Glass's additive technique: melody expanded by adding one note per iteration, building complexity gradually.
100
-
101
- All generative tools return note arrays. Place them in clips with `add_notes`.
102
-
103
- ## Neo-Riemannian Harmony
104
-
105
- - `navigate_tonnetz(chord, transform)` — apply PRL (Parallel, Relative, Leading-tone) transforms to a chord. Returns the neighbor chord and its relationship.
106
- - `find_voice_leading_path(start_chord, end_chord)` — find the shortest harmonic path between two chords through Tonnetz space. Returns intermediate chords.
107
- - `classify_progression(chords)` — identify the neo-Riemannian transform pattern in a chord sequence (e.g., PRL cycle, hexatonic, octatonic).
108
- - `suggest_chromatic_mediants(chord)` — return all chromatic mediant relations with film score usage notes. Useful for dramatic harmonic shifts.
109
-
110
- ## MIDI File I/O
111
-
112
- - `export_clip_midi(track_index, clip_index, file_path)` — export a session clip's notes to a .mid file
113
- - `import_midi_to_clip(track_index, clip_index, file_path)` — load a .mid file into a clip, replacing existing notes
114
- - `analyze_midi_file(file_path)` — offline analysis of any .mid file (tempo, note count, structure). No Ableton connection needed.
115
- - `extract_piano_roll(file_path)` — return a 2D velocity matrix (pitch x time) from a .mid file for visualization
116
-
117
- ## Pitch Audit — Mandatory Before Firing
118
-
119
- Before playing any clip with melodic or harmonic content:
120
-
121
- 1. `identify_scale` on every melodic track — verify all tracks share the same tonal center
122
- 2. `analyze_harmony` on chordal tracks — verify chord quality (no accidental augmented/diminished)
123
- 3. `detect_theory_issues(strict=true)` — check all theory rules
124
- 4. Report a clear tuning summary to the user before proceeding
125
- 5. Fix wrong notes with `modify_notes` before firing
126
-
127
- ## Reference
128
-
129
- Supporting references live in the `livepilot-core` skill's `references/` directory:
130
- - `livepilot-core/references/midi-recipes.md` — drum patterns by genre, chord voicings, scale tables, hi-hat articulations, humanization, polymetric layering