livepilot 1.10.7 → 1.10.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/CHANGELOG.md +126 -0
  2. package/README.md +11 -9
  3. package/bin/livepilot.js +146 -28
  4. package/installer/install.js +117 -11
  5. package/m4l_device/LivePilot_Analyzer.amxd +0 -0
  6. package/m4l_device/livepilot_bridge.js +1 -1
  7. package/mcp_server/__init__.py +1 -1
  8. package/mcp_server/atlas/__init__.py +39 -7
  9. package/mcp_server/atlas/tools.py +56 -15
  10. package/mcp_server/composer/layer_planner.py +27 -0
  11. package/mcp_server/composer/prompt_parser.py +15 -6
  12. package/mcp_server/connection.py +11 -3
  13. package/mcp_server/corpus/__init__.py +14 -4
  14. package/mcp_server/m4l_bridge.py +48 -7
  15. package/mcp_server/runtime/execution_router.py +16 -2
  16. package/mcp_server/runtime/remote_commands.py +6 -0
  17. package/mcp_server/sample_engine/models.py +22 -3
  18. package/mcp_server/semantic_moves/__init__.py +1 -0
  19. package/mcp_server/semantic_moves/compiler.py +9 -1
  20. package/mcp_server/semantic_moves/device_creation_compilers.py +47 -0
  21. package/mcp_server/semantic_moves/mix_compilers.py +170 -0
  22. package/mcp_server/semantic_moves/mix_moves.py +1 -1
  23. package/mcp_server/semantic_moves/models.py +5 -0
  24. package/mcp_server/semantic_moves/tools.py +15 -4
  25. package/mcp_server/server.py +7 -3
  26. package/mcp_server/services/singletons.py +68 -0
  27. package/mcp_server/splice_client/client.py +29 -8
  28. package/mcp_server/tools/analyzer.py +7 -6
  29. package/mcp_server/tools/clips.py +1 -1
  30. package/mcp_server/tools/midi_io.py +10 -0
  31. package/mcp_server/tools/tracks.py +1 -1
  32. package/mcp_server/tools/transport.py +1 -1
  33. package/mcp_server/translation_engine/tools.py +8 -4
  34. package/package.json +25 -3
  35. package/remote_script/LivePilot/__init__.py +29 -9
  36. package/remote_script/LivePilot/arrangement.py +12 -2
  37. package/remote_script/LivePilot/browser.py +16 -6
  38. package/remote_script/LivePilot/devices.py +10 -5
  39. package/remote_script/LivePilot/notes.py +13 -2
  40. package/remote_script/LivePilot/server.py +51 -13
  41. package/remote_script/LivePilot/version_detect.py +7 -4
  42. package/server.json +20 -0
  43. package/.claude-plugin/marketplace.json +0 -21
  44. package/.mcp.json.disabled +0 -9
  45. package/.mcpbignore +0 -60
  46. package/AGENTS.md +0 -46
  47. package/BUGS.md +0 -1570
  48. package/CODE_OF_CONDUCT.md +0 -27
  49. package/CONTRIBUTING.md +0 -131
  50. package/SECURITY.md +0 -48
  51. package/livepilot/.Codex-plugin/plugin.json +0 -8
  52. package/livepilot/.claude-plugin/plugin.json +0 -8
  53. package/livepilot/agents/livepilot-producer/AGENT.md +0 -313
  54. package/livepilot/commands/arrange.md +0 -47
  55. package/livepilot/commands/beat.md +0 -77
  56. package/livepilot/commands/evaluate.md +0 -49
  57. package/livepilot/commands/memory.md +0 -22
  58. package/livepilot/commands/mix.md +0 -44
  59. package/livepilot/commands/perform.md +0 -42
  60. package/livepilot/commands/session.md +0 -13
  61. package/livepilot/commands/sounddesign.md +0 -43
  62. package/livepilot/skills/livepilot-arrangement/SKILL.md +0 -155
  63. package/livepilot/skills/livepilot-composition-engine/SKILL.md +0 -107
  64. package/livepilot/skills/livepilot-composition-engine/references/form-patterns.md +0 -97
  65. package/livepilot/skills/livepilot-composition-engine/references/transition-archetypes.md +0 -102
  66. package/livepilot/skills/livepilot-core/SKILL.md +0 -184
  67. package/livepilot/skills/livepilot-core/references/ableton-workflow-patterns.md +0 -831
  68. package/livepilot/skills/livepilot-core/references/automation-atlas.md +0 -272
  69. package/livepilot/skills/livepilot-core/references/device-atlas/00-index.md +0 -110
  70. package/livepilot/skills/livepilot-core/references/device-atlas/distortion-and-character.md +0 -687
  71. package/livepilot/skills/livepilot-core/references/device-atlas/drums-and-percussion.md +0 -753
  72. package/livepilot/skills/livepilot-core/references/device-atlas/dynamics-and-punch.md +0 -525
  73. package/livepilot/skills/livepilot-core/references/device-atlas/eq-and-filtering.md +0 -402
  74. package/livepilot/skills/livepilot-core/references/device-atlas/midi-tools.md +0 -963
  75. package/livepilot/skills/livepilot-core/references/device-atlas/movement-and-modulation.md +0 -874
  76. package/livepilot/skills/livepilot-core/references/device-atlas/space-and-depth.md +0 -571
  77. package/livepilot/skills/livepilot-core/references/device-atlas/spectral-and-weird.md +0 -714
  78. package/livepilot/skills/livepilot-core/references/device-atlas/synths-native.md +0 -953
  79. package/livepilot/skills/livepilot-core/references/device-knowledge/00-index.md +0 -34
  80. package/livepilot/skills/livepilot-core/references/device-knowledge/automation-as-music.md +0 -204
  81. package/livepilot/skills/livepilot-core/references/device-knowledge/chains-genre.md +0 -173
  82. package/livepilot/skills/livepilot-core/references/device-knowledge/creative-thinking.md +0 -211
  83. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-distortion.md +0 -188
  84. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-space.md +0 -162
  85. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-spectral.md +0 -229
  86. package/livepilot/skills/livepilot-core/references/device-knowledge/instruments-synths.md +0 -243
  87. package/livepilot/skills/livepilot-core/references/m4l-devices.md +0 -352
  88. package/livepilot/skills/livepilot-core/references/memory-guide.md +0 -107
  89. package/livepilot/skills/livepilot-core/references/midi-recipes.md +0 -402
  90. package/livepilot/skills/livepilot-core/references/mixing-patterns.md +0 -578
  91. package/livepilot/skills/livepilot-core/references/overview.md +0 -290
  92. package/livepilot/skills/livepilot-core/references/sample-manipulation.md +0 -724
  93. package/livepilot/skills/livepilot-core/references/sound-design-deep.md +0 -140
  94. package/livepilot/skills/livepilot-core/references/sound-design.md +0 -393
  95. package/livepilot/skills/livepilot-devices/SKILL.md +0 -169
  96. package/livepilot/skills/livepilot-evaluation/SKILL.md +0 -156
  97. package/livepilot/skills/livepilot-evaluation/references/capability-modes.md +0 -118
  98. package/livepilot/skills/livepilot-evaluation/references/evaluation-contracts.md +0 -121
  99. package/livepilot/skills/livepilot-evaluation/references/memory-promotion.md +0 -110
  100. package/livepilot/skills/livepilot-mix-engine/SKILL.md +0 -123
  101. package/livepilot/skills/livepilot-mix-engine/references/mix-critics.md +0 -143
  102. package/livepilot/skills/livepilot-mix-engine/references/mix-moves.md +0 -105
  103. package/livepilot/skills/livepilot-mixing/SKILL.md +0 -157
  104. package/livepilot/skills/livepilot-notes/SKILL.md +0 -130
  105. package/livepilot/skills/livepilot-performance-engine/SKILL.md +0 -122
  106. package/livepilot/skills/livepilot-performance-engine/references/performance-safety.md +0 -98
  107. package/livepilot/skills/livepilot-release/SKILL.md +0 -130
  108. package/livepilot/skills/livepilot-sample-engine/SKILL.md +0 -105
  109. package/livepilot/skills/livepilot-sample-engine/references/sample-critics.md +0 -87
  110. package/livepilot/skills/livepilot-sample-engine/references/sample-philosophy.md +0 -51
  111. package/livepilot/skills/livepilot-sample-engine/references/sample-techniques.md +0 -131
  112. package/livepilot/skills/livepilot-sound-design-engine/SKILL.md +0 -168
  113. package/livepilot/skills/livepilot-sound-design-engine/references/patch-model.md +0 -119
  114. package/livepilot/skills/livepilot-sound-design-engine/references/sound-design-critics.md +0 -118
  115. package/livepilot/skills/livepilot-wonder/SKILL.md +0 -79
  116. package/m4l_device/LivePilot_Analyzer.amxd.pre-presentation-backup +0 -0
  117. package/m4l_device/LivePilot_Analyzer.maxpat +0 -2705
  118. package/m4l_device/LivePilot_Analyzer.maxproj +0 -53
  119. package/manifest.json +0 -91
  120. package/mcp_server/splice_client/protos/app_pb2.pyi +0 -1153
  121. package/scripts/generate_tool_catalog.py +0 -106
  122. package/scripts/sync_metadata.py +0 -349
@@ -1,49 +0,0 @@
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.
@@ -1,22 +0,0 @@
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
@@ -1,44 +0,0 @@
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 8-band balance. Genre targets:
19
- - Hip-hop: sub dominant, centroid 400-800 Hz
20
- - Electronic: balanced, centroid 800-1500 Hz
21
- - Ambient: mid-focused, 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
- For exploratory mode (try multiple ideas), use `create_experiment` + `run_experiment` + `compare_experiments`.
@@ -1,42 +0,0 @@
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.
@@ -1,13 +0,0 @@
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.
@@ -1,43 +0,0 @@
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.
@@ -1,155 +0,0 @@
1
- ---
2
- name: livepilot-arrangement
3
- description: This skill should be used when the user asks to "arrange", "structure a song", "add an intro", "build a verse", "create sections", "scene to arrangement", "cue points", "record to arrangement", or wants to organize song structure in Ableton Live.
4
- ---
5
-
6
- # Arrangement — Song Structure and Session Organization
7
-
8
- Organize clips into scenes, build arrangements on the timeline, navigate with cue points, and record performances in Ableton Live.
9
-
10
- ## Session View vs Arrangement View
11
-
12
- Ableton has two complementary views:
13
-
14
- - **Session view** — a grid of clip slots organized by track (columns) and scene (rows). Clips loop independently. Fire scenes to trigger rows of clips simultaneously. Use for jamming, live performance, and building ideas.
15
- - **Arrangement view** — a linear timeline where clips play in sequence from left to right. Use for final song structure, recording automation, and export.
16
-
17
- Use `back_to_arranger` to switch from session playback to arrangement playback. When session clips are playing, they override arrangement content on their tracks.
18
-
19
- ## Scene Workflow
20
-
21
- Scenes are horizontal rows in session view. Each scene can trigger all its clips at once.
22
-
23
- ### Creating and Managing Scenes
24
-
25
- - `create_scene(index)` — insert a new scene at the given position
26
- - `set_scene_name(scene_index, name)` — name scenes after song sections: "Intro", "Verse 1", "Chorus", "Bridge", "Drop", "Outro"
27
- - `set_scene_color(scene_index, color_index)` — color-code sections (0-69 palette). Use consistent colors: green for verses, red for choruses, blue for bridges.
28
- - `set_scene_tempo(scene_index, tempo)` — set a per-scene tempo change (triggers when scene fires)
29
- - `duplicate_scene(scene_index)` — copy a scene for variations. Duplicate, rename, then modify clips in the copy.
30
- - `delete_scene(scene_index)` — remove a scene
31
-
32
- ### Firing and Monitoring
33
-
34
- - `fire_scene(scene_index)` — launch all clips in a scene simultaneously
35
- - `fire_scene_clips(scene_index)` — launch only the clips that exist in a scene (skips empty slots)
36
- - `stop_all_clips` — stop everything in session view
37
- - `get_playing_clips` — see which clips are currently playing across all tracks
38
-
39
- ### Scene Inspection
40
-
41
- - `get_scenes_info` — list all scenes with names, tempos, and colors
42
- - `get_scene_matrix` — see which clips exist in which slots across the entire session grid. Returns a track-by-scene matrix showing clip presence, names, and states.
43
-
44
- ## Arrangement View
45
-
46
- Build linear song structures on the timeline.
47
-
48
- ### Creating Arrangement Clips
49
-
50
- - `create_arrangement_clip(track_index, clip_slot_index, start_time, length)` — duplicate a session clip into Arrangement View at a specific beat position
51
- - `create_native_arrangement_clip(track_index, start_time, length)` — create arrangement clip with full automation envelope (12.1.10+)
52
- - `set_arrangement_clip_name(track_index, clip_index, name)` — name arrangement clips for clarity
53
- - `force_arrangement()` — force all tracks to play from arrangement (not session clips)
54
-
55
- ### Arrangement Notes
56
-
57
- - `add_arrangement_notes(track_index, clip_index, notes)` — write MIDI notes into an arrangement clip
58
- - `get_arrangement_notes(track_index, clip_index)` — read notes from an arrangement clip
59
- - `remove_arrangement_notes(track_index, clip_index, start_time, duration, pitch_start, pitch_end)` — clear notes in a region
60
- - `remove_arrangement_notes_by_id(track_index, clip_index, note_ids)` — surgical deletion
61
- - `modify_arrangement_notes(track_index, clip_index, modifications)` — update existing notes by ID
62
- - `duplicate_arrangement_notes(track_index, clip_index, time_offset)` — copy notes forward
63
- - `transpose_arrangement_notes(track_index, clip_index, semitones, start_time, duration)` — pitch shift a region
64
-
65
- ### Arrangement Clips Inspection
66
-
67
- - `get_arrangement_clips(track_index)` — list all clips on a track's arrangement timeline with positions, lengths, and names
68
-
69
- ### Arrangement Automation
70
-
71
- - `set_arrangement_automation(track_index, parameter_name, points)` — write automation on the arrangement timeline. Points are `[{time, value}, ...]` pairs at absolute beat positions.
72
-
73
- ## Navigation
74
-
75
- ### Transport Position
76
-
77
- - `jump_to_time(beat_time)` — move the playback cursor to a specific beat position on the timeline
78
- - `start_playback` / `stop_playback` / `continue_playback` — basic transport control
79
-
80
- ### Cue Points
81
-
82
- Cue points are markers on the arrangement timeline for quick navigation.
83
-
84
- - `toggle_cue_point` — add or remove a cue point at the current playback position
85
- - `get_cue_points` — list all cue points with their beat positions and names
86
- - `jump_to_cue(cue_index)` — jump to a specific cue point by index
87
-
88
- Use cue points to mark section boundaries: place one at beat 0 (Intro), beat 16 (Verse), beat 48 (Chorus), etc. This makes navigation fast during arrangement.
89
-
90
- ## Recording
91
-
92
- ### Live Recording
93
-
94
- - `start_recording` — begin recording into the arrangement or session (depends on which view is active and which tracks are armed)
95
- - `stop_recording` — stop recording
96
- - `capture_midi` — retroactive MIDI capture. Grabs whatever was played on armed MIDI tracks even if recording was not active. Live 12 keeps a buffer of recent MIDI input.
97
-
98
- ### Recording Workflow
99
-
100
- 1. Arm tracks with `set_track_arm(track_index, arm=true)`
101
- 2. Optionally set input monitoring with `set_track_input_monitoring(track_index, mode)`
102
- 3. `start_recording` — records into arrangement if in arrangement view, into session slots if in session view
103
- 4. Play or trigger clips
104
- 5. `stop_recording` — finalize the take
105
-
106
- For retroactive capture: if the user just played something without recording, call `capture_midi` immediately to grab it.
107
-
108
- ## Section Analysis
109
-
110
- - `get_section_graph` — infer song structure from scene names and clip arrangement. Returns a graph of sections with their relationships, durations, and transitions.
111
- - `analyze_composition` — deeper structural analysis including phrase lengths, repetition patterns, and harmonic arcs
112
- - `get_phrase_grid` — see how phrases align across tracks
113
-
114
- Use `get_section_graph` to understand the current form before adding new sections. It helps identify what is missing (e.g., no bridge, no outro, chorus only appears once).
115
-
116
- ## Common Song Structures
117
-
118
- When building arrangements, use these as starting templates:
119
-
120
- - **Pop:** Intro - Verse - Chorus - Verse - Chorus - Bridge - Chorus - Outro
121
- - **EDM/Dance:** Intro (16 bars) - Build - Drop (16) - Break (8) - Build - Drop (16) - Outro (8)
122
- - **Hip-hop:** Intro - Verse (16 bars) - Hook (8) - Verse (16) - Hook (8) - Bridge - Hook - Outro
123
- - **Lo-fi:** Intro (4) - A (8) - B (8) - A (8) - B variation (8) - Outro (4)
124
-
125
- Adapt these to the user's needs. Use `plan_arrangement` from the planner domain for algorithmic structure suggestions, and `transform_section` to create variations of existing sections.
126
-
127
- ## Section-Aware Sample Roles
128
-
129
- `plan_arrangement` returns `sample_hints` per section — suggested roles for sample-based elements:
130
-
131
- | Section | Default Hints |
132
- |---------|--------------|
133
- | Intro | `texture_bed`, `fill_one_shot` |
134
- | Verse | `texture_bed`, `fill_one_shot` |
135
- | Build | `transition_fx`, `texture_bed` |
136
- | Chorus/Drop | `hook_sample`, `break_layer`, `fill_one_shot` |
137
- | Bridge/Breakdown | `texture_bed`, `transition_fx` |
138
- | Outro | `texture_bed`, `fill_one_shot` |
139
-
140
- Use `plan_sample_workflow(section_type=..., desired_role=...)` to generate concrete sample plans for each role. Use `plan_slice_workflow(intent=..., target_section=...)` for slice-based patterns.
141
-
142
- ## Composition Engine
143
-
144
- For deeper compositional analysis beyond basic arrangement:
145
-
146
- - `plan_gesture(type, parameters)` — plan a musical gesture (build, release, tension, resolution)
147
- - `apply_gesture_template(track_index, gesture)` — apply a gesture pattern to a track
148
- - `evaluate_composition_move(proposed_change)` — score a proposed structural change before making it
149
- - `get_harmony_field(section)` — see the harmonic landscape of a section
150
- - `get_transition_analysis(from_section, to_section)` — analyze how two sections connect
151
-
152
- ## Reference
153
-
154
- Supporting references live in the `livepilot-core` skill's `references/` directory:
155
- - `livepilot-core/references/ableton-workflow-patterns.md` — session/arrangement workflows, song structures by genre, follow actions, clip launch modes, export settings
@@ -1,107 +0,0 @@
1
- ---
2
- name: livepilot-composition-engine
3
- description: This skill should be used when the user asks to "analyze song structure", "improve transitions", "check song flow", "plan an arrangement", "detect motifs", "transform a section", or wants compositional analysis, transition planning, and translation checking.
4
- ---
5
-
6
- # Composition Engine — Structure, Transitions, and Form
7
-
8
- The composition engine operates three sub-engines: compositional analysis (structure and motifs), transition planning (section-to-section flow), and translation checking (how the mix survives different playback systems). It also provides form-level tools for emotional arc and arrangement planning.
9
-
10
- ## Composition Sub-Engine
11
-
12
- Analyze and transform the structural elements of a track.
13
-
14
- ### Analysis Flow
15
-
16
- 1. Call `analyze_composition` — runs a full structural pass returning sections, motifs, phrase grid, and form classification
17
- 2. Call `get_section_graph` — returns the section map: intro, verse, chorus, bridge, drop, breakdown, outro with bar ranges
18
- 3. Call `get_phrase_grid` — returns the rhythmic and melodic phrase boundaries within each section
19
- 4. Call `get_motif_graph` — returns detected melodic and rhythmic motifs with their occurrence locations and transformation history
20
-
21
- ### Transformation
22
-
23
- Once you understand the structure:
24
-
25
- - `transform_motif(motif_id, transformation)` — apply a transformation to a detected motif. Transformations include: inversion, retrograde, augmentation, diminution, transposition, fragmentation, sequence
26
- - `transform_section(section_id, transformation)` — apply a structural transformation to an entire section. Transformations include: extend, compress, strip_down, build_up, reharmonize, rhythmic_variation
27
-
28
- Always capture before state with `get_notes` or `get_arrangement_notes` before transforming. Evaluate the result with `evaluate_composition_move`.
29
-
30
- ### Motif Work
31
-
32
- The motif graph tracks recurring melodic and rhythmic patterns:
33
-
34
- - Each motif has an `id`, `pitches`, `rhythms`, `first_occurrence`, and `occurrences` list
35
- - Related motifs are linked by transformation edges (e.g., motif_2 is an inversion of motif_1)
36
- - Use the motif graph to ensure thematic coherence — transformations should derive from existing material
37
-
38
- ## Transition Sub-Engine
39
-
40
- Plan and execute smooth transitions between sections.
41
-
42
- ### Transition Flow
43
-
44
- 1. `analyze_transition(from_section, to_section)` — examine the current transition between two sections. Returns energy delta, timbral shift, harmonic distance, and detected issues
45
- 2. `plan_transition(from_section, to_section)` — generate a transition plan based on detected issues. Returns an ordered list of moves (filter sweeps, risers, drum drops, fills, automation curves)
46
- 3. `score_transition(from_section, to_section)` — rate the current transition quality (0.0-1.0) with breakdown by energy, harmony, rhythm, and timbral continuity
47
- 4. Execute the planned moves using appropriate tools (`set_clip_automation`, `add_notes`, `set_device_parameter`, `apply_automation_shape`)
48
- 5. `evaluate_composition_move` — judge whether the transition improved
49
-
50
- See `references/transition-archetypes.md` for common transition patterns and when to use each.
51
-
52
- ### Transition Principles
53
-
54
- - Energy changes should be gradual unless a hard cut is intentional
55
- - Harmonic transitions need a pivot chord or shared tone
56
- - Rhythmic transitions benefit from a fill or break at the boundary
57
- - Timbral shifts should start 1-2 bars before the section change
58
- - The most effective transitions prepare the listener's ear before the change lands
59
-
60
- ## Translation Sub-Engine
61
-
62
- Check how the mix translates across playback systems.
63
-
64
- ### Translation Flow
65
-
66
- 1. `check_translation` — run translation analysis on the current mix
67
- 2. `get_translation_issues` — return specific problems:
68
- - **mono_collapse**: elements that disappear or phase-cancel in mono playback
69
- - **spectral_consistency**: frequency balance shifts between monitoring contexts
70
- - **low_end_translation**: bass content that may vanish on small speakers
71
- - **loudness_consistency**: perceived loudness variation across systems
72
-
73
- Translation issues feed back into the mix engine — a mono collapse issue becomes a stereo_width critic issue for the mix loop.
74
-
75
- ## Form Sub-Engine
76
-
77
- High-level arrangement and emotional arc tools.
78
-
79
- ### Form Flow
80
-
81
- 1. `get_emotional_arc` — map the energy/intensity curve across the entire track, identifying peaks, valleys, and plateaus
82
- 2. `plan_arrangement` — generate an arrangement plan based on the current form, suggesting section order, lengths, and energy targets
83
- 3. `apply_gesture_template` — apply a predefined arrangement gesture (build, drop, breakdown, outro_fade, intro_build) to a bar range
84
-
85
- See `references/form-patterns.md` for common song forms and energy curves by genre.
86
-
87
- ### Arrangement Principles
88
-
89
- - Every section should have a clear purpose: introduce, develop, contrast, resolve, release
90
- - The energy arc should have at least one clear peak — flat energy across the entire track lacks emotional impact
91
- - Contrast drives interest: loud/quiet, dense/sparse, bright/dark
92
- - Repetition builds familiarity but needs variation to avoid fatigue — transform on repeat, do not copy verbatim
93
- - Transitions are as important as sections — budget time for them in the arrangement
94
-
95
- ## Combining Sub-Engines
96
-
97
- A typical compositional improvement session:
98
-
99
- 1. `analyze_composition` to understand current structure
100
- 2. `get_emotional_arc` to see the energy shape
101
- 3. Identify the weakest section or transition
102
- 4. Use the transition sub-engine to fix section boundaries
103
- 5. Use motif transformations to add thematic development
104
- 6. `check_translation` to verify the changes survive mono/small speakers
105
- 7. `evaluate_composition_move` after each change
106
-
107
- Always work one change at a time. Verify and evaluate before moving to the next intervention.
@@ -1,97 +0,0 @@
1
- # Form Patterns Reference
2
-
3
- Common song forms and energy curves used by `plan_arrangement` and `get_emotional_arc`.
4
-
5
- ## Standard Forms
6
-
7
- ### verse_chorus (Pop / Rock / R&B)
8
- ```
9
- Intro (4-8 bars) -> Verse 1 (8-16) -> Pre-Chorus (4-8) -> Chorus 1 (8-16)
10
- -> Verse 2 (8-16) -> Pre-Chorus (4-8) -> Chorus 2 (8-16)
11
- -> Bridge (8) -> Final Chorus (8-16) -> Outro (4-8)
12
- ```
13
- Energy curve: low -> medium -> high -> medium -> high -> peak -> fade
14
-
15
- ### drop_form (EDM / House / Techno)
16
- ```
17
- Intro (16-32 bars) -> Build 1 (8-16) -> Drop 1 (16-32)
18
- -> Breakdown (8-16) -> Build 2 (8-16) -> Drop 2 (16-32)
19
- -> Outro (8-16)
20
- ```
21
- Energy curve: building -> peak -> valley -> building -> peak -> fade
22
-
23
- ### through_composed (Ambient / Cinematic / Experimental)
24
- ```
25
- Section A (variable) -> Section B (variable) -> Section C (variable) -> ...
26
- ```
27
- No repeating sections. Energy curve follows the narrative arc. Each section introduces new material.
28
-
29
- ### aaba (Jazz / Classic Pop)
30
- ```
31
- A (8 bars) -> A (8) -> B (8) -> A (8)
32
- ```
33
- Energy curve: establish -> reinforce -> contrast -> resolve
34
-
35
- ### rondo (Classical-influenced / Progressive)
36
- ```
37
- A -> B -> A -> C -> A -> D -> A
38
- ```
39
- Recurring theme (A) alternates with contrasting episodes. Energy varies per episode.
40
-
41
- ### loop_form (Hip-Hop / Trap / Lo-Fi)
42
- ```
43
- Intro (4-8) -> Loop (4-8 bars, repeated throughout)
44
- Verse 1 over loop -> Hook over loop -> Verse 2 over loop -> Hook -> Outro
45
- ```
46
- Energy modulation through vocal density and arrangement layering, not harmonic progression.
47
-
48
- ## Energy Curve Targets
49
-
50
- The emotional arc maps energy on a 0.0-1.0 scale across the track duration.
51
-
52
- ### Peak-Valley Model
53
- Most effective for dance and pop music:
54
- - At least one peak reaching 0.8-1.0
55
- - At least one valley dropping to 0.2-0.4
56
- - Energy delta between adjacent sections: 0.15-0.4
57
- - Gradual builds (4+ bars) feel more natural than instant jumps
58
-
59
- ### Plateau Model
60
- For ambient, drone, and minimalist music:
61
- - Energy stays within a narrow band (0.3-0.6)
62
- - Changes are subtle: timbral, textural, not dynamic
63
- - Slow evolution over minutes, not bars
64
-
65
- ### Escalation Model
66
- For builds, film scoring, and progressive tracks:
67
- - Monotonically increasing energy from 0.1 to 1.0
68
- - Each section is louder, denser, or brighter than the previous
69
- - No significant drops until the final resolution
70
-
71
- ## Section Energy Targets by Genre
72
-
73
- | Section | Pop | EDM | Hip-Hop | Ambient |
74
- |---------|-----|-----|---------|---------|
75
- | Intro | 0.2 | 0.3 | 0.3 | 0.2 |
76
- | Verse | 0.4 | 0.4 | 0.5 | 0.3 |
77
- | Pre-Chorus | 0.6 | 0.6 | — | — |
78
- | Chorus/Drop | 0.8 | 1.0 | 0.7 | 0.5 |
79
- | Bridge | 0.5 | — | 0.4 | 0.4 |
80
- | Breakdown | — | 0.2 | — | 0.3 |
81
- | Outro | 0.3 | 0.2 | 0.2 | 0.1 |
82
-
83
- ## Section Length Guidelines
84
-
85
- - **4 bars**: minimum for a recognizable section (short intros, transitions)
86
- - **8 bars**: standard phrase length, feels complete for most sections
87
- - **16 bars**: full development, typical for verses and choruses in electronic music
88
- - **32 bars**: extended development for drops, long builds, or ambient passages
89
- - **Odd lengths** (6, 10, 12 bars): create subtle tension and asymmetry — use intentionally
90
-
91
- ## Arrangement Planning Rules
92
-
93
- 1. Start from the emotional peak and work backwards — place the climax first, then build toward it
94
- 2. Every section serves one of five functions: introduce, develop, contrast, climax, resolve
95
- 3. Do not repeat a section more than 3 times without significant variation
96
- 4. The first 30 seconds determine whether the listener stays — make them count
97
- 5. Endings matter — an abrupt end can be intentional, but a trailing reverb wash is rarely wrong