livepilot 1.9.16 → 1.9.17
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.
- package/.claude-plugin/marketplace.json +1 -1
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +29 -0
- package/livepilot/.Codex-plugin/plugin.json +1 -1
- package/livepilot/.claude-plugin/plugin.json +1 -1
- package/livepilot/agents/livepilot-producer/AGENT.md +15 -1
- package/livepilot/commands/arrange.md +19 -0
- package/livepilot/commands/evaluate.md +39 -0
- package/livepilot/commands/mix.md +9 -4
- package/livepilot/commands/perform.md +30 -0
- package/livepilot/commands/sounddesign.md +9 -4
- package/livepilot/skills/livepilot-arrangement/SKILL.md +137 -0
- package/livepilot/skills/livepilot-composition-engine/SKILL.md +107 -0
- package/livepilot/skills/livepilot-composition-engine/references/form-patterns.md +97 -0
- package/livepilot/skills/livepilot-composition-engine/references/transition-archetypes.md +102 -0
- package/livepilot/skills/livepilot-core/SKILL.md +67 -443
- package/livepilot/skills/livepilot-core/references/overview.md +1 -1
- package/livepilot/skills/livepilot-devices/SKILL.md +134 -0
- package/livepilot/skills/livepilot-evaluation/SKILL.md +152 -0
- package/livepilot/skills/livepilot-evaluation/references/capability-modes.md +118 -0
- package/livepilot/skills/livepilot-evaluation/references/evaluation-contracts.md +121 -0
- package/livepilot/skills/livepilot-evaluation/references/memory-promotion.md +110 -0
- package/livepilot/skills/livepilot-mix-engine/SKILL.md +123 -0
- package/livepilot/skills/livepilot-mix-engine/references/mix-critics.md +143 -0
- package/livepilot/skills/livepilot-mix-engine/references/mix-moves.md +105 -0
- package/livepilot/skills/livepilot-mixing/SKILL.md +156 -0
- package/livepilot/skills/livepilot-notes/SKILL.md +129 -0
- package/livepilot/skills/livepilot-performance-engine/SKILL.md +122 -0
- package/livepilot/skills/livepilot-performance-engine/references/performance-safety.md +98 -0
- package/livepilot/skills/livepilot-sound-design-engine/SKILL.md +123 -0
- package/livepilot/skills/livepilot-sound-design-engine/references/patch-model.md +119 -0
- package/livepilot/skills/livepilot-sound-design-engine/references/sound-design-critics.md +118 -0
- package/m4l_device/livepilot_bridge.js +1 -1
- package/mcp_server/__init__.py +1 -1
- package/package.json +1 -1
- package/remote_script/LivePilot/__init__.py +1 -1
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{
|
|
11
11
|
"name": "livepilot",
|
|
12
12
|
"description": "Agentic production system for Ableton Live 12 — 236 tools, 32 domains, device atlas, spectral perception, technique memory, neo-Riemannian harmony, Euclidean rhythm, species counterpoint, MIDI I/O",
|
|
13
|
-
"version": "1.9.
|
|
13
|
+
"version": "1.9.17",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Pilot Studio"
|
|
16
16
|
},
|
package/AGENTS.md
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.17 — Skills Architecture V2 (April 2026)
|
|
4
|
+
|
|
5
|
+
### Skills (9 new, 1 slimmed)
|
|
6
|
+
- **livepilot-core** — slimmed from 900 to ~150 lines. Golden rules, speed tiers, error protocol. Domain content moved to dedicated skills.
|
|
7
|
+
- **livepilot-devices** — NEW: device loading, browser workflow, plugin health, rack introspection
|
|
8
|
+
- **livepilot-notes** — NEW: MIDI content, theory integration, generative algorithms, harmony tools
|
|
9
|
+
- **livepilot-mixing** — NEW: volume/pan/sends, routing, metering, automation patterns
|
|
10
|
+
- **livepilot-arrangement** — NEW: song structure, scenes, arrangement view, navigation
|
|
11
|
+
- **livepilot-mix-engine** — NEW: critic-driven mix analysis loop (masking, dynamics, stereo, headroom)
|
|
12
|
+
- **livepilot-sound-design-engine** — NEW: critic-driven patch refinement loop (static timbre, modulation, filtering)
|
|
13
|
+
- **livepilot-composition-engine** — NEW: section analysis, transitions, motifs, form, translation checking
|
|
14
|
+
- **livepilot-performance-engine** — NEW: safety-first live performance with energy tracking and move classification
|
|
15
|
+
- **livepilot-evaluation** — NEW: universal before/after evaluation loop with capability-aware scoring
|
|
16
|
+
|
|
17
|
+
### Commands (3 new, 2 updated)
|
|
18
|
+
- `/arrange` — NEW: guided arrangement using composition engine
|
|
19
|
+
- `/perform` — NEW: safety-constrained performance mode
|
|
20
|
+
- `/evaluate` — NEW: before/after evaluation loop
|
|
21
|
+
- `/mix` — updated to use mix engine critics
|
|
22
|
+
- `/sounddesign` — updated to use sound design engine critics
|
|
23
|
+
|
|
24
|
+
### Agent
|
|
25
|
+
- **livepilot-producer** — updated to reference all 10 skills instead of inline loop definitions
|
|
26
|
+
|
|
27
|
+
### Plugin Stats
|
|
28
|
+
- 11 skills (was 2), 8 commands (was 5), 1 agent, 10 reference files for engine skills
|
|
29
|
+
- Total plugin skill metadata: ~1100 words always-in-context (lean triggers)
|
|
30
|
+
- Progressive disclosure: SKILL.md bodies ≤2000 words each, detailed content in references/
|
|
31
|
+
|
|
3
32
|
## 1.9.16 — Comprehensive Bug Fix Audit (April 2026)
|
|
4
33
|
|
|
5
34
|
### Critical Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "livepilot",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.17",
|
|
4
4
|
"description": "Agentic production system for Ableton Live 12 — 236 tools, 32 domains, device atlas, spectral perception, technique memory, neo-Riemannian harmony, Euclidean rhythm, species counterpoint, MIDI I/O",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Pilot Studio"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "livepilot",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.17",
|
|
4
4
|
"description": "Agentic production system for Ableton Live 12 — 236 tools, 32 domains, device atlas, spectral perception, technique memory, neo-Riemannian harmony, Euclidean rhythm, species counterpoint, MIDI I/O",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Pilot Studio"
|
|
@@ -269,9 +269,23 @@ Every move you make is tracked in the action ledger. Call `get_last_move` to rev
|
|
|
269
269
|
|
|
270
270
|
The system tracks what the user dislikes. Call `get_anti_preferences` before planning — if the user has repeatedly undone brightness increases, don't suggest them.
|
|
271
271
|
|
|
272
|
+
## Skills Reference
|
|
273
|
+
|
|
274
|
+
Load the appropriate skill for domain-specific guidance:
|
|
275
|
+
- **livepilot-core** — golden rules, speed tiers, error handling (always relevant)
|
|
276
|
+
- **livepilot-devices** — loading/browsing/configuring devices
|
|
277
|
+
- **livepilot-notes** — MIDI content, theory, generative algorithms
|
|
278
|
+
- **livepilot-mixing** — volume, pan, sends, routing, automation
|
|
279
|
+
- **livepilot-arrangement** — song structure, scenes, arrangement view
|
|
280
|
+
- **livepilot-mix-engine** — critic-driven mix analysis loop
|
|
281
|
+
- **livepilot-sound-design-engine** — critic-driven patch refinement loop
|
|
282
|
+
- **livepilot-composition-engine** — section analysis, transitions, form
|
|
283
|
+
- **livepilot-performance-engine** — live performance safety constraints
|
|
284
|
+
- **livepilot-evaluation** — universal before/after evaluation loop
|
|
285
|
+
|
|
272
286
|
## Rules
|
|
273
287
|
|
|
274
|
-
-
|
|
288
|
+
- Load relevant skills before starting domain-specific work
|
|
275
289
|
- Use `build_project_brain` for complex tasks instead of ad-hoc state queries
|
|
276
290
|
- Check `get_capability_state` before trusting analyzer data
|
|
277
291
|
- **Verify every track produces sound** — non-negotiable
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: arrange
|
|
3
|
+
description: Guided arrangement — build song structure with sections, transitions, and energy flow
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Guide the user through arranging their session into a full song structure.
|
|
7
|
+
|
|
8
|
+
1. **Read the session** — `get_session_info` to see all tracks and clips
|
|
9
|
+
2. **Analyze current structure** — `get_section_graph` to see inferred sections from scene names. If no sections, `get_scenes_info` for raw scene data.
|
|
10
|
+
3. **Ask about the target structure** — what form? (verse-chorus, AABA, build-drop, through-composed). What energy arc? (gradual build, peaks and valleys, flat)
|
|
11
|
+
4. **Plan the arrangement** — `plan_arrangement` with the target structure. Review the proposed section order and transitions.
|
|
12
|
+
5. **Build sections** — for each section, create or duplicate scenes, set scene names and colors. Use `duplicate_scene` for variations.
|
|
13
|
+
6. **Check transitions** — `analyze_transition(from_section, to_section)` for each adjacent pair. `score_transition` to evaluate quality.
|
|
14
|
+
7. **Plan weak transitions** — `plan_transition` for any scored below 0.6. Execute the suggested gestures (filter sweeps, energy ramps, rhythmic fills).
|
|
15
|
+
8. **Check emotional arc** — `get_emotional_arc` to verify the energy flow matches the target.
|
|
16
|
+
9. **Translation check** — `check_translation` to verify mono compatibility and spectral consistency across sections.
|
|
17
|
+
10. **Record to arrangement** — when the user is happy, guide them through `back_to_arranger` and recording the session performance to the timeline.
|
|
18
|
+
|
|
19
|
+
Use the livepilot-composition-engine skill for section analysis and transition planning. Present the arrangement as a visual timeline to the user.
|
|
@@ -0,0 +1,39 @@
|
|
|
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. **Get the last move** — `get_last_move` to understand what was changed. If no recent move, `get_recent_actions` for history.
|
|
15
|
+
|
|
16
|
+
3. **Ask what the goal was** — what were they trying to achieve? More clarity? Wider stereo? Punchier drums?
|
|
17
|
+
|
|
18
|
+
4. **Compile the goal** — `compile_goal_vector(goal_description, mode="improve")`
|
|
19
|
+
|
|
20
|
+
5. **Capture current state** — `get_master_spectrum` + `get_master_rms` + `get_mix_snapshot`
|
|
21
|
+
|
|
22
|
+
6. **Undo the change** — `undo()` to restore the before state
|
|
23
|
+
|
|
24
|
+
7. **Capture before state** — same reads as step 5
|
|
25
|
+
|
|
26
|
+
8. **Redo the change** — `redo()` to restore the after state
|
|
27
|
+
|
|
28
|
+
9. **Evaluate** — `evaluate_move(before_snapshot, after_snapshot, goal)` or use engine-specific:
|
|
29
|
+
- Mix changes: `evaluate_mix_move`
|
|
30
|
+
- Composition changes: `evaluate_composition_move`
|
|
31
|
+
- Multi-dimensional: `evaluate_with_fabric`
|
|
32
|
+
|
|
33
|
+
10. **Report results** — show: score (0-1), keep_change recommendation, goal_progress, collateral_damage, dimension changes
|
|
34
|
+
|
|
35
|
+
11. **Act on recommendation:**
|
|
36
|
+
- If `keep_change=true` — keep, suggest `memory_learn` if score > 0.7
|
|
37
|
+
- If `keep_change=false` — `undo()`, explain why (collateral damage, goal regression)
|
|
38
|
+
|
|
39
|
+
Use the livepilot-evaluation skill for the full evaluation loop details.
|
|
@@ -7,9 +7,14 @@ Help the user mix their session. Follow these steps:
|
|
|
7
7
|
|
|
8
8
|
1. **Read the session** — `get_session_info` to see all tracks
|
|
9
9
|
2. **Analyze each track** — `get_track_info` for clip and device details, check current volume/pan
|
|
10
|
-
3. **
|
|
11
|
-
4. **
|
|
12
|
-
5. **
|
|
13
|
-
6. **
|
|
10
|
+
3. **Quick mix status** — `get_mix_summary` for a fast overview (track count, dynamics, stereo, issues)
|
|
11
|
+
4. **Run critics** — `get_mix_issues` to detect problems (masking, dynamics, stereo width, headroom)
|
|
12
|
+
5. **Suggest a mix** — propose volume levels, panning positions, and send amounts based on the track types, instruments, and detected issues
|
|
13
|
+
6. **Apply with confirmation** — only change levels after the user approves each suggestion
|
|
14
|
+
7. **Check return tracks** — `get_return_tracks` to see shared effects
|
|
15
|
+
8. **Master chain** — `get_master_track` to review the master
|
|
16
|
+
9. **Evaluate** — after changes, `evaluate_mix_move` with before/after snapshots to verify improvement
|
|
14
17
|
|
|
15
18
|
Present suggestions in a clear table format. Always explain the reasoning (e.g., "panning the hi-hats slightly right to create stereo width"). Use `undo` if the user doesn't like a change.
|
|
19
|
+
|
|
20
|
+
For deeper critic-driven iterative improvement, use the livepilot-mix-engine skill.
|
|
@@ -0,0 +1,30 @@
|
|
|
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 for live set support. All actions are constrained to safe and caution-level moves only.
|
|
7
|
+
|
|
8
|
+
1. **Get performance state** — `get_performance_state` to see scene roles, energy levels, and current position
|
|
9
|
+
2. **Show the dashboard** — present: current scene, energy level, energy direction (up/down/hold), available safe moves
|
|
10
|
+
3. **Get safe moves** — `get_performance_safe_moves` for what can be done right now
|
|
11
|
+
4. **Check before acting** — `check_safety(move_type)` before every action. Only execute safe or caution moves. Caution moves require user confirmation.
|
|
12
|
+
|
|
13
|
+
**BLOCKED during performance** (never execute, warn if requested):
|
|
14
|
+
- Creating or deleting tracks, clips, or scenes
|
|
15
|
+
- Editing notes or arrangement
|
|
16
|
+
- Adding or removing devices (device chain surgery)
|
|
17
|
+
|
|
18
|
+
**SAFE moves** (execute freely):
|
|
19
|
+
- Scene launches, mute/unmute, volume nudges, send adjustments, macro tweaks, filter sweeps
|
|
20
|
+
|
|
21
|
+
**Scene transitions:**
|
|
22
|
+
- `plan_scene_handoff(from_scene, to_scene)` — generates an energy path and gesture sequence
|
|
23
|
+
- Follow the energy path: if going up, suggest high-energy scenes; if going down, suggest breakdowns
|
|
24
|
+
|
|
25
|
+
**Always show:**
|
|
26
|
+
- Current energy level and direction
|
|
27
|
+
- What moves are available
|
|
28
|
+
- What moves are blocked and why
|
|
29
|
+
|
|
30
|
+
Use the livepilot-performance-engine skill for safety classification and move suggestions.
|
|
@@ -6,12 +6,17 @@ description: Sound design workflow — load instruments and effects, shape param
|
|
|
6
6
|
Guide the user through designing a sound. Follow these steps:
|
|
7
7
|
|
|
8
8
|
1. **Ask about the target sound** — what character? (warm pad, aggressive bass, shimmering lead, atmospheric texture, etc.)
|
|
9
|
-
2. **Choose an instrument** — pick the right synth for the job, load it with `
|
|
9
|
+
2. **Choose an instrument** — pick the right synth for the job, load it with `search_browser` → `load_browser_item`
|
|
10
10
|
3. **Verify device loaded** — `get_device_info` to confirm plugin initialized (AU/VST with `parameter_count` <= 1 = dead plugin — delete and replace with native alternative)
|
|
11
11
|
4. **Get parameters** — `get_device_parameters` to see what's available
|
|
12
12
|
5. **Shape the sound** — `set_device_parameter` or `batch_set_parameters` to dial in the character
|
|
13
|
-
6. **
|
|
14
|
-
7. **
|
|
15
|
-
8. **
|
|
13
|
+
6. **Run critics** — `analyze_sound_design(track_index)` to check for static timbre, missing modulation, spectral imbalance
|
|
14
|
+
7. **Address issues** — `plan_sound_design_move(track_index)` for suggested improvements
|
|
15
|
+
8. **Add effects** — load effects (reverb, delay, chorus, distortion, etc.) and tweak their parameters
|
|
16
|
+
9. **Create a test pattern** — `create_clip` + `add_notes` with a simple pattern to audition
|
|
17
|
+
10. **Fire the clip** to listen, iterate based on feedback
|
|
18
|
+
11. **Evaluate** — `evaluate_move(engine="sound_design")` with before/after to verify improvement
|
|
16
19
|
|
|
17
20
|
Explain what each parameter does as you adjust it. Use `undo` liberally if something sounds wrong.
|
|
21
|
+
|
|
22
|
+
For iterative critic-driven patch refinement, use the livepilot-sound-design-engine skill.
|
|
@@ -0,0 +1,137 @@
|
|
|
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, start_time, length)` — place a new clip on the timeline at a specific beat position
|
|
51
|
+
- `set_arrangement_clip_name(track_index, clip_index, name)` — name arrangement clips for clarity
|
|
52
|
+
|
|
53
|
+
### Arrangement Notes
|
|
54
|
+
|
|
55
|
+
- `add_arrangement_notes(track_index, clip_index, notes)` — write MIDI notes into an arrangement clip
|
|
56
|
+
- `get_arrangement_notes(track_index, clip_index)` — read notes from an arrangement clip
|
|
57
|
+
- `remove_arrangement_notes(track_index, clip_index, start_time, duration, pitch_start, pitch_end)` — clear notes in a region
|
|
58
|
+
- `remove_arrangement_notes_by_id(track_index, clip_index, note_ids)` — surgical deletion
|
|
59
|
+
- `modify_arrangement_notes(track_index, clip_index, modifications)` — update existing notes by ID
|
|
60
|
+
- `duplicate_arrangement_notes(track_index, clip_index, time_offset)` — copy notes forward
|
|
61
|
+
- `transpose_arrangement_notes(track_index, clip_index, semitones, start_time, duration)` — pitch shift a region
|
|
62
|
+
|
|
63
|
+
### Arrangement Clips Inspection
|
|
64
|
+
|
|
65
|
+
- `get_arrangement_clips(track_index)` — list all clips on a track's arrangement timeline with positions, lengths, and names
|
|
66
|
+
|
|
67
|
+
### Arrangement Automation
|
|
68
|
+
|
|
69
|
+
- `set_arrangement_automation(track_index, parameter_name, points)` — write automation on the arrangement timeline. Points are `[{time, value}, ...]` pairs at absolute beat positions.
|
|
70
|
+
|
|
71
|
+
## Navigation
|
|
72
|
+
|
|
73
|
+
### Transport Position
|
|
74
|
+
|
|
75
|
+
- `jump_to_time(beat_time)` — move the playback cursor to a specific beat position on the timeline
|
|
76
|
+
- `start_playback` / `stop_playback` / `continue_playback` — basic transport control
|
|
77
|
+
|
|
78
|
+
### Cue Points
|
|
79
|
+
|
|
80
|
+
Cue points are markers on the arrangement timeline for quick navigation.
|
|
81
|
+
|
|
82
|
+
- `toggle_cue_point` — add or remove a cue point at the current playback position
|
|
83
|
+
- `get_cue_points` — list all cue points with their beat positions and names
|
|
84
|
+
- `jump_to_cue(cue_index)` — jump to a specific cue point by index
|
|
85
|
+
|
|
86
|
+
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.
|
|
87
|
+
|
|
88
|
+
## Recording
|
|
89
|
+
|
|
90
|
+
### Live Recording
|
|
91
|
+
|
|
92
|
+
- `start_recording` — begin recording into the arrangement or session (depends on which view is active and which tracks are armed)
|
|
93
|
+
- `stop_recording` — stop recording
|
|
94
|
+
- `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.
|
|
95
|
+
|
|
96
|
+
### Recording Workflow
|
|
97
|
+
|
|
98
|
+
1. Arm tracks with `set_track_arm(track_index, arm=true)`
|
|
99
|
+
2. Optionally set input monitoring with `set_track_input_monitoring(track_index, mode)`
|
|
100
|
+
3. `start_recording` — records into arrangement if in arrangement view, into session slots if in session view
|
|
101
|
+
4. Play or trigger clips
|
|
102
|
+
5. `stop_recording` — finalize the take
|
|
103
|
+
|
|
104
|
+
For retroactive capture: if the user just played something without recording, call `capture_midi` immediately to grab it.
|
|
105
|
+
|
|
106
|
+
## Section Analysis
|
|
107
|
+
|
|
108
|
+
- `get_section_graph` — infer song structure from scene names and clip arrangement. Returns a graph of sections with their relationships, durations, and transitions.
|
|
109
|
+
- `analyze_composition` — deeper structural analysis including phrase lengths, repetition patterns, and harmonic arcs
|
|
110
|
+
- `get_phrase_grid` — see how phrases align across tracks
|
|
111
|
+
|
|
112
|
+
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).
|
|
113
|
+
|
|
114
|
+
## Common Song Structures
|
|
115
|
+
|
|
116
|
+
When building arrangements, use these as starting templates:
|
|
117
|
+
|
|
118
|
+
- **Pop:** Intro - Verse - Chorus - Verse - Chorus - Bridge - Chorus - Outro
|
|
119
|
+
- **EDM/Dance:** Intro (16 bars) - Build - Drop (16) - Break (8) - Build - Drop (16) - Outro (8)
|
|
120
|
+
- **Hip-hop:** Intro - Verse (16 bars) - Hook (8) - Verse (16) - Hook (8) - Bridge - Hook - Outro
|
|
121
|
+
- **Lo-fi:** Intro (4) - A (8) - B (8) - A (8) - B variation (8) - Outro (4)
|
|
122
|
+
|
|
123
|
+
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.
|
|
124
|
+
|
|
125
|
+
## Composition Engine
|
|
126
|
+
|
|
127
|
+
For deeper compositional analysis beyond basic arrangement:
|
|
128
|
+
|
|
129
|
+
- `plan_gesture(type, parameters)` — plan a musical gesture (build, release, tension, resolution)
|
|
130
|
+
- `apply_gesture_template(track_index, gesture)` — apply a gesture pattern to a track
|
|
131
|
+
- `evaluate_composition_move(proposed_change)` — score a proposed structural change before making it
|
|
132
|
+
- `get_harmony_field(section)` — see the harmonic landscape of a section
|
|
133
|
+
- `get_transition_analysis(from_section, to_section)` — analyze how two sections connect
|
|
134
|
+
|
|
135
|
+
## Reference
|
|
136
|
+
|
|
137
|
+
Consult `references/ableton-workflow-patterns.md` in the livepilot-core skill for session/arrangement workflow patterns, song structures by genre, follow action configurations, clip launch modes, and export settings.
|
|
@@ -0,0 +1,107 @@
|
|
|
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.
|
|
@@ -0,0 +1,97 @@
|
|
|
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
|