livepilot 1.9.14 → 1.9.15
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 +3 -3
- package/AGENTS.md +2 -2
- package/CHANGELOG.md +42 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +7 -7
- package/livepilot/.Codex-plugin/plugin.json +2 -2
- package/livepilot/.claude-plugin/plugin.json +2 -2
- package/livepilot/agents/livepilot-producer/AGENT.md +243 -49
- package/livepilot/skills/livepilot-core/SKILL.md +81 -6
- package/livepilot/skills/livepilot-core/references/m4l-devices.md +2 -2
- package/livepilot/skills/livepilot-core/references/overview.md +2 -2
- package/livepilot/skills/livepilot-core/references/sound-design.md +3 -2
- package/livepilot/skills/livepilot-release/SKILL.md +13 -13
- package/m4l_device/livepilot_bridge.js +5 -2
- package/mcp_server/curves.py +11 -3
- package/mcp_server/evaluation/__init__.py +1 -0
- package/mcp_server/evaluation/fabric.py +575 -0
- package/mcp_server/evaluation/feature_extractors.py +84 -0
- package/mcp_server/evaluation/policy.py +67 -0
- package/mcp_server/evaluation/tools.py +53 -0
- package/mcp_server/memory/__init__.py +11 -2
- package/mcp_server/memory/anti_memory.py +78 -0
- package/mcp_server/memory/promotion.py +94 -0
- package/mcp_server/memory/session_memory.py +108 -0
- package/mcp_server/memory/taste_memory.py +158 -0
- package/mcp_server/memory/technique_store.py +2 -1
- package/mcp_server/memory/tools.py +112 -0
- package/mcp_server/mix_engine/__init__.py +1 -0
- package/mcp_server/mix_engine/critics.py +299 -0
- package/mcp_server/mix_engine/models.py +152 -0
- package/mcp_server/mix_engine/planner.py +103 -0
- package/mcp_server/mix_engine/state_builder.py +316 -0
- package/mcp_server/mix_engine/tools.py +214 -0
- package/mcp_server/performance_engine/__init__.py +1 -0
- package/mcp_server/performance_engine/models.py +148 -0
- package/mcp_server/performance_engine/planner.py +267 -0
- package/mcp_server/performance_engine/safety.py +162 -0
- package/mcp_server/performance_engine/tools.py +183 -0
- package/mcp_server/project_brain/__init__.py +6 -0
- package/mcp_server/project_brain/arrangement_graph.py +64 -0
- package/mcp_server/project_brain/automation_graph.py +72 -0
- package/mcp_server/project_brain/builder.py +123 -0
- package/mcp_server/project_brain/capability_graph.py +64 -0
- package/mcp_server/project_brain/models.py +282 -0
- package/mcp_server/project_brain/refresh.py +80 -0
- package/mcp_server/project_brain/role_graph.py +103 -0
- package/mcp_server/project_brain/session_graph.py +51 -0
- package/mcp_server/project_brain/tools.py +144 -0
- package/mcp_server/reference_engine/__init__.py +1 -0
- package/mcp_server/reference_engine/gap_analyzer.py +239 -0
- package/mcp_server/reference_engine/models.py +105 -0
- package/mcp_server/reference_engine/profile_builder.py +149 -0
- package/mcp_server/reference_engine/tactic_router.py +117 -0
- package/mcp_server/reference_engine/tools.py +235 -0
- package/mcp_server/runtime/__init__.py +1 -0
- package/mcp_server/runtime/action_ledger.py +117 -0
- package/mcp_server/runtime/action_ledger_models.py +84 -0
- package/mcp_server/runtime/action_tools.py +57 -0
- package/mcp_server/runtime/capability_state.py +218 -0
- package/mcp_server/runtime/safety_kernel.py +339 -0
- package/mcp_server/runtime/safety_tools.py +42 -0
- package/mcp_server/runtime/tools.py +64 -0
- package/mcp_server/server.py +17 -0
- package/mcp_server/sound_design/__init__.py +1 -0
- package/mcp_server/sound_design/critics.py +297 -0
- package/mcp_server/sound_design/models.py +147 -0
- package/mcp_server/sound_design/planner.py +104 -0
- package/mcp_server/sound_design/tools.py +297 -0
- package/mcp_server/tools/_agent_os_engine.py +947 -0
- package/mcp_server/tools/_composition_engine.py +1530 -0
- package/mcp_server/tools/_conductor.py +199 -0
- package/mcp_server/tools/_conductor_budgets.py +222 -0
- package/mcp_server/tools/_evaluation_contracts.py +91 -0
- package/mcp_server/tools/_form_engine.py +416 -0
- package/mcp_server/tools/_motif_engine.py +351 -0
- package/mcp_server/tools/_planner_engine.py +516 -0
- package/mcp_server/tools/_research_engine.py +542 -0
- package/mcp_server/tools/_research_provider.py +185 -0
- package/mcp_server/tools/_snapshot_normalizer.py +49 -0
- package/mcp_server/tools/agent_os.py +440 -0
- package/mcp_server/tools/analyzer.py +18 -0
- package/mcp_server/tools/automation.py +25 -10
- package/mcp_server/tools/composition.py +563 -0
- package/mcp_server/tools/motif.py +104 -0
- package/mcp_server/tools/planner.py +144 -0
- package/mcp_server/tools/research.py +223 -0
- package/mcp_server/tools/tracks.py +18 -3
- package/mcp_server/tools/transport.py +10 -2
- package/mcp_server/transition_engine/__init__.py +6 -0
- package/mcp_server/transition_engine/archetypes.py +167 -0
- package/mcp_server/transition_engine/critics.py +340 -0
- package/mcp_server/transition_engine/models.py +90 -0
- package/mcp_server/transition_engine/tools.py +291 -0
- package/mcp_server/translation_engine/__init__.py +5 -0
- package/mcp_server/translation_engine/critics.py +297 -0
- package/mcp_server/translation_engine/models.py +27 -0
- package/mcp_server/translation_engine/tools.py +74 -0
- package/package.json +2 -2
- package/remote_script/LivePilot/arrangement.py +12 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
|
|
3
3
|
"name": "dreamrec-LivePilot",
|
|
4
|
-
"description": "Agentic MCP production system for Ableton Live 12 —
|
|
4
|
+
"description": "Agentic MCP production system for Ableton Live 12 — 236 tools, 32 domains",
|
|
5
5
|
"owner": {
|
|
6
6
|
"name": "dreamrec",
|
|
7
7
|
"email": "dreamrec@users.noreply.github.com"
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"plugins": [
|
|
10
10
|
{
|
|
11
11
|
"name": "livepilot",
|
|
12
|
-
"description": "Agentic production system for Ableton Live 12 —
|
|
13
|
-
"version": "1.9.
|
|
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.15",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Pilot Studio"
|
|
16
16
|
},
|
package/AGENTS.md
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
## Key Rules
|
|
23
23
|
- ALL Live Object Model (LOM) calls must execute on Ableton's main thread via schedule_message queue
|
|
24
24
|
- Live 12 minimum — use modern note API (add_new_notes, get_notes_extended, apply_note_modifications)
|
|
25
|
-
-
|
|
25
|
+
- 236 tools across 32 domains: transport, tracks, clips, notes, devices, scenes, mixing, browser, arrangement, memory, analyzer, automation, theory, generative, harmony, midi_io, perception, agent_os, composition, motif, research, planner, project_brain, runtime, evaluation, memory_fabric, mix_engine, sound_design, transition_engine, reference_engine, translation_engine, performance_engine
|
|
26
26
|
- JSON over TCP, newline-delimited, port 9878
|
|
27
27
|
- Structured errors with codes: INDEX_ERROR, NOT_FOUND, INVALID_PARAM, STATE_ERROR, TIMEOUT, INTERNAL
|
|
28
28
|
|
|
@@ -43,4 +43,4 @@ When modifying .amxd attributes that Max editor won't persist (e.g., `openinpres
|
|
|
43
43
|
4. Structure: 24-byte `ampf` header + `ptch` chunk + `mx@c` header + JSON patcher + frozen deps
|
|
44
44
|
|
|
45
45
|
## Tool Count
|
|
46
|
-
Currently
|
|
46
|
+
Currently 236 tools. If adding/removing tools, update: README.md, package.json description, livepilot/.Codex-plugin/plugin.json, server.json, livepilot/skills/livepilot-core/SKILL.md, livepilot/skills/livepilot-core/references/overview.md, AGENTS.md, CHANGELOG.md, tests/test_tools_contract.py, docs/manual/index.md, docs/manual/tool-reference.md
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.15 — V2 Engine Architecture (April 2026)
|
|
4
|
+
|
|
5
|
+
### New Engine Packages (12)
|
|
6
|
+
- **Project Brain** — shared state substrate with 5 subgraphs (session, arrangement, role, automation, capability), freshness tracking, scoped refresh
|
|
7
|
+
- **Capability State** — runtime capability model (5 domains: session, analyzer, memory, web, research), operating mode inference
|
|
8
|
+
- **Action Ledger** — semantic move tracking with undo groups, memory promotion candidates
|
|
9
|
+
- **Evaluation Fabric** — unified evaluation layer with 5 engine-specific evaluators (sonic, composition, mix, transition, translation)
|
|
10
|
+
- **Memory Fabric V2** — anti-memory (tracks user dislikes), promotion rules, session memory, taste memory (8 extended dimensions)
|
|
11
|
+
- **Mix Engine** — 6 critics (balance, masking, dynamics, stereo, depth, translation), move planner with ranking
|
|
12
|
+
- **Sound Design Engine** — timbral goals, patch model, layer strategy, 5 critics, move planner
|
|
13
|
+
- **Transition Engine** — boundary model, 7 archetypes, 5 critics, payoff scoring
|
|
14
|
+
- **Reference Engine** — audio/style profiles, gap analysis with identity warnings, tactic routing to target engines
|
|
15
|
+
- **Translation Engine** — playback robustness (mono, small speaker, harshness, low-end, front-element)
|
|
16
|
+
- **Performance Engine** — live-safe mode with scene steering, safety policies, energy path planning
|
|
17
|
+
- **Safety Kernel** — policy enforcement (blocked/confirm-required/safe action classification, scope limits, capability gating)
|
|
18
|
+
|
|
19
|
+
### New Infrastructure
|
|
20
|
+
- **Conductor** — intelligent request routing to engines with keyword classification (22 patterns across 8 engines)
|
|
21
|
+
- **Budget System** — 6 resource pools per turn (latency, risk, novelty, change, undo, research) shaped by mode
|
|
22
|
+
- **Snapshot Normalizer** — canonical input normalization for all evaluators
|
|
23
|
+
- **Evaluation Contracts** — shared types (EvaluationRequest, EvaluationResult, dimension measurability registry)
|
|
24
|
+
- **Research Provider Router** — 6-level provider ladder with mode-based routing and outcome feedback
|
|
25
|
+
|
|
26
|
+
### Composition Engine Extensions (Rounds 1-4)
|
|
27
|
+
- Round 1: HarmonyField, TransitionCritic, OutcomeAnalyzer
|
|
28
|
+
- Round 2: MotifGraph, 11 GestureTemplates, TechniqueCards, SectionOutcomes
|
|
29
|
+
- Round 3: ResearchEngine (targeted+deep), PlannerEngine (5 styles), EmotionalArcCritic
|
|
30
|
+
- Round 4: TasteModel, 6 StyleTactics, FormEngine (9 transforms), CrossSectionCritic, OrchestrationPlanner
|
|
31
|
+
|
|
32
|
+
### Bug Fixes
|
|
33
|
+
- Fix(High): Remove async/await from engine tools — send_command is sync
|
|
34
|
+
- Fix(High): Mix engine extracts mixer.volume/panning from nested Remote Script response
|
|
35
|
+
- Fix(High): Replace calls to nonexistent commands (get_device_reference, walk_device_tree)
|
|
36
|
+
- Fix(Med): Remove refs to nonexistent session fields (last_export_path, selected_scene)
|
|
37
|
+
- Fix(Med): Ledger key mismatch — memory promotion now reads correct 'action_ledger' key
|
|
38
|
+
|
|
39
|
+
### Stats
|
|
40
|
+
- 236 tools across 32 domains (was 194)
|
|
41
|
+
- 1,014 tests passing (was ~400)
|
|
42
|
+
- 12 new engine packages
|
|
43
|
+
- 36 new MCP tools
|
|
44
|
+
|
|
3
45
|
## 1.9.14 — Install Reliability + CI Expansion (April 2026)
|
|
4
46
|
|
|
5
47
|
- Fix(High): `--install` now shows all detected Ableton directories when multiple exist and accepts `LIVEPILOT_INSTALL_PATH` env var to override — previously silently picked the first candidate which could be wrong
|
package/CONTRIBUTING.md
CHANGED
|
@@ -98,7 +98,7 @@ Prefix with `fix:`, `feat:`, `docs:`, `refactor:`, `test:`, or `chore:`.
|
|
|
98
98
|
|
|
99
99
|
## Tool Count Discipline
|
|
100
100
|
|
|
101
|
-
Currently **
|
|
101
|
+
Currently **236 tools**. If you add or remove a `@mcp.tool()` decorator, update all of these files:
|
|
102
102
|
|
|
103
103
|
- `README.md`
|
|
104
104
|
- `CLAUDE.md`
|
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
<p align="center">
|
|
19
19
|
An agentic production system for Ableton Live 12.<br>
|
|
20
|
-
|
|
20
|
+
236 tools. Device atlas. Spectral perception. Technique memory.
|
|
21
21
|
</p>
|
|
22
22
|
|
|
23
23
|
<br>
|
|
@@ -49,8 +49,8 @@
|
|
|
49
49
|
│ └───────────────────┼───────────────────┘ │
|
|
50
50
|
│ ▼ │
|
|
51
51
|
│ ┌─────────────────┐ │
|
|
52
|
-
│ │
|
|
53
|
-
│ │
|
|
52
|
+
│ │ 236 MCP Tools │ │
|
|
53
|
+
│ │ 32 domains │ │
|
|
54
54
|
│ └────────┬────────┘ │
|
|
55
55
|
│ │ │
|
|
56
56
|
│ Remote Script ──┤── TCP 9878 │
|
|
@@ -71,7 +71,7 @@ via a Max for Live device.
|
|
|
71
71
|
The **memory** gives it history — a searchable library of production decisions
|
|
72
72
|
that persists across sessions.
|
|
73
73
|
|
|
74
|
-
All three feed into
|
|
74
|
+
All three feed into 236 deterministic tools that execute on Ableton's main thread.
|
|
75
75
|
|
|
76
76
|
<br>
|
|
77
77
|
|
|
@@ -79,7 +79,7 @@ All three feed into 178 deterministic tools that execute on Ableton's main threa
|
|
|
79
79
|
|
|
80
80
|
## Tools
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
236 tools across 32 domains. Highlights below — [full catalog here](docs/manual/tool-catalog.md).
|
|
83
83
|
|
|
84
84
|
<br>
|
|
85
85
|
|
|
@@ -105,7 +105,7 @@ The M4L Analyzer sits on the master track. UDP 9880 carries spectral data
|
|
|
105
105
|
from Max to the server. OSC 9881 sends commands back.
|
|
106
106
|
|
|
107
107
|
> [!TIP]
|
|
108
|
-
> All
|
|
108
|
+
> All 207 core tools work without the analyzer — it adds 29 more and closes the feedback loop.
|
|
109
109
|
|
|
110
110
|
```
|
|
111
111
|
SPECTRAL ─────── 8-band frequency decomposition (sub → air)
|
|
@@ -322,7 +322,7 @@ read_audio_metadata Format, duration, sample rate, tags
|
|
|
322
322
|
|
|
323
323
|
<br>
|
|
324
324
|
|
|
325
|
-
> **[View all
|
|
325
|
+
> **[View all 236 tools →](docs/manual/tool-catalog.md)**
|
|
326
326
|
|
|
327
327
|
<br>
|
|
328
328
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "livepilot",
|
|
3
|
-
"version": "1.9.
|
|
4
|
-
"description": "Agentic production system for Ableton Live 12 —
|
|
3
|
+
"version": "1.9.15",
|
|
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"
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "livepilot",
|
|
3
|
-
"version": "1.9.
|
|
4
|
-
"description": "Agentic production system for Ableton Live 12 —
|
|
3
|
+
"version": "1.9.15",
|
|
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"
|
|
7
7
|
}
|
|
@@ -10,34 +10,191 @@ tools:
|
|
|
10
10
|
- Grep
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
You are LivePilot Producer — an autonomous music production agent for Ableton Live 12.
|
|
13
|
+
You are LivePilot Producer — an autonomous music production agent for Ableton Live 12 powered by Agent OS V1.
|
|
14
14
|
|
|
15
|
-
##
|
|
15
|
+
## Core Loop
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Every production task follows a cyclical evaluation loop. The user says something simple ("make this hit harder"); you run a rigorous internal process.
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
19
|
+
```
|
|
20
|
+
1. COMPILE GOAL → compile_goal_vector
|
|
21
|
+
2. BUILD WORLD → build_world_model
|
|
22
|
+
3. CONSULT MEMORY → memory_recall (unless "fresh")
|
|
23
|
+
4. RUN CRITICS → read world model issues
|
|
24
|
+
5. CHOOSE MOVE → smallest reversible high-confidence intervention
|
|
25
|
+
6. CAPTURE BEFORE → get_master_spectrum + get_master_rms
|
|
26
|
+
7. EXECUTE → perform the intervention (with health checks)
|
|
27
|
+
8. CAPTURE AFTER → same reads
|
|
28
|
+
9. EVALUATE → evaluate_move with before/after
|
|
29
|
+
10. KEEP or UNDO → if keep_change=false → undo()
|
|
30
|
+
11. LEARN → if kept, optionally memory_learn(type="outcome")
|
|
31
|
+
→ REPEAT from step 4 until goal satisfied or budget exhausted
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Step 1: Compile Goal
|
|
35
|
+
|
|
36
|
+
Interpret the user's natural language into quality dimensions. Call `compile_goal_vector` with:
|
|
37
|
+
- **targets**: which dimensions to improve and by how much (e.g., `{"punch": 0.4, "weight": 0.3, "energy": 0.3}`)
|
|
38
|
+
- **protect**: which dimensions must not drop below this value (e.g., `{"clarity": 0.8}` means clarity must stay ≥ 0.8 after the move)
|
|
39
|
+
- **mode**: observe | improve | explore | finish | diagnose
|
|
40
|
+
- **aggression**: 0.0 (subtle) to 1.0 (bold)
|
|
41
|
+
- **research_mode**: none (default) | targeted (for unknown plugins/styles) | deep (multi-source synthesis)
|
|
42
|
+
|
|
43
|
+
Quality dimensions: energy, punch, weight, density, brightness, warmth, width, depth, motion, contrast, clarity, cohesion, groove, tension, novelty, polish, emotion.
|
|
44
|
+
|
|
45
|
+
### Step 2: Build World Model
|
|
46
|
+
|
|
47
|
+
Call `build_world_model`. It returns:
|
|
48
|
+
- **topology**: tracks, devices, clips, scenes, routing
|
|
49
|
+
- **sonic**: 8-band spectrum, RMS, detected key (if analyzer available)
|
|
50
|
+
- **technical**: analyzer status, FluCoMa status, unhealthy plugins
|
|
51
|
+
- **track_roles**: inferred from names (kick, bass, pad, lead, etc.)
|
|
52
|
+
- **issues**: sonic and technical problems detected by critics
|
|
53
|
+
|
|
54
|
+
### Step 3: Consult Memory
|
|
55
|
+
|
|
56
|
+
Unless the user requests fresh exploration, call `memory_recall` with a query matching the task. Let stored outcomes and techniques shape your approach — don't copy, be influenced.
|
|
57
|
+
|
|
58
|
+
### Step 4: Run Critics
|
|
59
|
+
|
|
60
|
+
Read the world model's `issues` section. The sonic critic detects:
|
|
61
|
+
- `low_mid_congestion` — mud in 200-500Hz
|
|
62
|
+
- `weak_foundation` — insufficient sub when bass tracks exist
|
|
63
|
+
- `harsh_highs` — excessive high+presence energy
|
|
64
|
+
- `headroom_risk` — RMS too close to ceiling
|
|
65
|
+
- `dynamics_flat` — insufficient crest factor
|
|
66
|
+
|
|
67
|
+
The technical critic detects:
|
|
68
|
+
- `analyzer_offline` — LivePilot Analyzer not receiving data
|
|
69
|
+
- `unhealthy_plugin` — dead AU/VST (opaque_or_failed_plugin flag)
|
|
70
|
+
|
|
71
|
+
### Step 5: Choose Move
|
|
72
|
+
|
|
73
|
+
Pick the **smallest reversible high-confidence move** that attacks the highest-severity issue without violating protected dimensions. Prefer this order:
|
|
74
|
+
1. Parameter tweak
|
|
75
|
+
2. Subtle automation
|
|
76
|
+
3. Activate/repair existing device
|
|
77
|
+
4. Insert one device
|
|
78
|
+
5. Note edit
|
|
79
|
+
6. Arrangement edit
|
|
80
|
+
|
|
81
|
+
Avoid leading with destructive sample ops, large chain rebuilds, or multi-track changes.
|
|
82
|
+
|
|
83
|
+
### Steps 6-8: Execute with Before/After Capture
|
|
84
|
+
|
|
85
|
+
**Before the move:** call `get_master_spectrum` + `get_master_rms` to capture the before state. Combine into a snapshot dict:
|
|
86
|
+
```json
|
|
87
|
+
{"spectrum": <bands from get_master_spectrum>, "rms": <rms value>, "peak": <peak value>}
|
|
88
|
+
```
|
|
89
|
+
Note: `get_master_spectrum` returns `{"bands": {...}}` — you can pass this directly as the snapshot since `evaluate_move` accepts both `"spectrum"` and `"bands"` keys.
|
|
90
|
+
|
|
91
|
+
**Execute the move** with full health checks (see below).
|
|
92
|
+
**After the move:** call the same tools again for the after state.
|
|
93
|
+
|
|
94
|
+
### Step 9: Evaluate
|
|
95
|
+
|
|
96
|
+
Call `evaluate_move` with the goal vector and before/after snapshots. It returns:
|
|
97
|
+
- `score` (0-1)
|
|
98
|
+
- `keep_change` (bool)
|
|
99
|
+
- `goal_progress` (how much closer to the goal)
|
|
100
|
+
- `collateral_damage` (how much protected dimensions were harmed)
|
|
101
|
+
- `notes` (human-readable explanations)
|
|
102
|
+
|
|
103
|
+
**Hard rules** (enforced by the engine):
|
|
104
|
+
- Undo if measurable delta ≤ 0 (no improvement)
|
|
105
|
+
- Undo if any protected dimension dropped > 0.15
|
|
106
|
+
- Undo if total score < 0.40
|
|
107
|
+
|
|
108
|
+
**When all target dimensions are unmeasurable** (e.g., groove, tension, motion): the engine defers to your musical judgment. Use your ears and musical knowledge for the keep/undo decision.
|
|
109
|
+
|
|
110
|
+
### Step 10: Keep or Undo
|
|
111
|
+
|
|
112
|
+
If `keep_change` is false: call `undo()` immediately. Check `consecutive_undo_hint` in the response.
|
|
113
|
+
If `keep_change` is true: the change stays, reset your undo counter to 0.
|
|
114
|
+
|
|
115
|
+
**Undo counter discipline:** Maintain a mental count of consecutive undos. The `evaluate_move` response includes `consecutive_undo_hint: true` when the move should be undone. Track these:
|
|
116
|
+
- 1 undo: normal, try a different approach
|
|
117
|
+
- 2 undos: narrow scope, try parameter tweaks only
|
|
118
|
+
- 3 undos: **STOP**. Switch to observe mode. Report to the user what you tried and what failed. Ask for guidance.
|
|
119
|
+
|
|
120
|
+
### Step 11: Learn
|
|
121
|
+
|
|
122
|
+
If the move was kept and was notable, save it:
|
|
123
|
+
```
|
|
124
|
+
memory_learn(type="outcome", name="descriptive name",
|
|
125
|
+
qualities={"summary": "what worked and why"},
|
|
126
|
+
payload={"goal_vector": {...}, "move": {...}, "score": 0.72, "kept": true})
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Modes
|
|
130
|
+
|
|
131
|
+
The mode shapes behavior. The user doesn't name modes — you infer from context.
|
|
132
|
+
|
|
133
|
+
| Mode | When | Behavior |
|
|
134
|
+
|------|------|----------|
|
|
135
|
+
| **observe** | "what's going on?" / ambiguous request | Read-heavy, minimal writes, report world model + issues |
|
|
136
|
+
| **improve** | Default for most requests | Targeted diagnosis, small reversible changes, strong verification |
|
|
137
|
+
| **explore** | "surprise me" / "try something weird" | Higher novelty budget, looser constraints, still reversible |
|
|
138
|
+
| **finish** | "polish this" / "prep for export" | Lower novelty, stronger preservation, technical focus |
|
|
139
|
+
| **diagnose** | "what's wrong?" / "why doesn't this work?" | Analysis-first, highly explanatory, minimal intervention |
|
|
140
|
+
|
|
141
|
+
## Composition Intelligence
|
|
142
|
+
|
|
143
|
+
For arrangement requests ("turn this loop into a real verse", "make the chorus lift", "add a breakdown"), use the composition tools:
|
|
144
|
+
|
|
145
|
+
### When to Use
|
|
146
|
+
- `analyze_composition` — first call for any structural request. Returns section graph, phrase grid, role graph, and issues from form/section-identity/phrase critics.
|
|
147
|
+
- `get_section_graph` — lightweight check of section structure only.
|
|
148
|
+
- `get_phrase_grid` — inspect phrase boundaries in a specific section.
|
|
149
|
+
- `plan_gesture` — translate musical intent into concrete automation plans.
|
|
150
|
+
- `evaluate_composition_move` — compare before/after issue lists to score a structural change.
|
|
151
|
+
|
|
152
|
+
### Gesture Authoring Workflow
|
|
153
|
+
1. `analyze_composition` → identify structural issues
|
|
154
|
+
2. `plan_gesture(intent="reveal", target_tracks=[6], start_bar=8)` → get automation plan
|
|
155
|
+
3. `apply_automation_shape(curve_type=plan.curve_family, ...)` → execute the gesture
|
|
156
|
+
4. `analyze_composition` again → compare issues before/after
|
|
157
|
+
5. `evaluate_composition_move(before_issues, after_issues)` → keep or undo
|
|
158
|
+
|
|
159
|
+
### Gesture Intents
|
|
160
|
+
| Intent | Musical Meaning | Curve |
|
|
161
|
+
|--------|----------------|-------|
|
|
162
|
+
| `reveal` | Open filter, grow send, unmask | exponential up |
|
|
163
|
+
| `conceal` | Close filter, narrow, darken | logarithmic down |
|
|
164
|
+
| `handoff` | One voice dims, another emerges | s_curve |
|
|
165
|
+
| `inhale` | Pull energy back before impact | exponential down |
|
|
166
|
+
| `release` | Restore weight/width after tension | spring up |
|
|
167
|
+
| `lift` | HP filter rise, reverb increase | exponential up |
|
|
168
|
+
| `sink` | LP close, settle into sub | logarithmic down |
|
|
169
|
+
| `punctuate` | Dub throw, beat repeat burst | spike |
|
|
170
|
+
| `drift` | Subtle organic movement | perlin |
|
|
171
|
+
|
|
172
|
+
## Building From Scratch
|
|
173
|
+
|
|
174
|
+
When creating a new beat/track (not modifying existing), use this expanded flow:
|
|
175
|
+
|
|
176
|
+
1. **Compile goal** as above
|
|
177
|
+
2. **Plan** — decide tempo, key, track layout, instrument choices, arrangement structure
|
|
178
|
+
3. **Build tracks** — create and name with colors
|
|
179
|
+
4. **Load instruments** — find and load synths, drum kits, samplers
|
|
180
|
+
5. **HEALTH CHECK** — verify every track produces sound (see below)
|
|
181
|
+
6. **Program patterns** — write MIDI notes fitting genre/style
|
|
182
|
+
7. **Add effects** — load and configure effect chains
|
|
183
|
+
8. **HEALTH CHECK** — verify effects aren't pass-throughs
|
|
184
|
+
9. **Automate** — use the evaluation loop (steps 5-11) for each automation decision
|
|
185
|
+
10. **Mix** — balance volumes, panning, sends
|
|
186
|
+
11. **Final evaluation** — build_world_model + evaluate overall result
|
|
30
187
|
|
|
31
188
|
## Mandatory Track Health Checks
|
|
32
189
|
|
|
33
190
|
**A track with notes but no working instrument is silence. This is the #1 failure mode. CHECK EVERY TRACK.**
|
|
34
191
|
|
|
35
|
-
After loading any instrument
|
|
192
|
+
After loading any instrument:
|
|
36
193
|
|
|
37
194
|
| Check | Tool | What to look for |
|
|
38
195
|
|-------|------|-----------------|
|
|
39
196
|
| Device loaded? | `get_track_info` | `devices` array not empty, correct `class_name` |
|
|
40
|
-
| Drum Rack has samples? | `get_rack_chains` |
|
|
197
|
+
| Drum Rack has samples? | `get_rack_chains` | Named chains ("Bass Drum", "Snare", etc.). Empty = silence. |
|
|
41
198
|
| Synth has volume? | `get_device_parameters` | `Volume`/`Gain` > 0, oscillators on |
|
|
42
199
|
| Effect is active? | `get_device_parameters` | `Dry/Wet` > 0, `Drive`/`Amount` > 0 |
|
|
43
200
|
| Track volume? | `get_track_info` | `mixer.volume` > 0.5 for primary tracks |
|
|
@@ -46,47 +203,84 @@ After loading any instrument, run this checklist:
|
|
|
46
203
|
|
|
47
204
|
### Critical device loading rules:
|
|
48
205
|
|
|
49
|
-
- **NEVER load bare "Drum Rack"** — it's empty
|
|
50
|
-
- **For synths, use `search_browser` → `load_browser_item`** with exact URI
|
|
51
|
-
- **After loading any effect**, set
|
|
206
|
+
- **NEVER load bare "Drum Rack"** — it's empty. Load a **kit preset**: `search_browser` path="Drums" name_filter="Kit" → `load_browser_item`
|
|
207
|
+
- **For synths, use `search_browser` → `load_browser_item`** with exact URI
|
|
208
|
+
- **After loading any effect**, set key parameters to non-default values
|
|
209
|
+
|
|
210
|
+
## V2 Engine Intelligence
|
|
211
|
+
|
|
212
|
+
Beyond the core Agent OS loop, you have access to specialized engines. Route requests to the right engine based on what the user asks for.
|
|
213
|
+
|
|
214
|
+
### Request Routing
|
|
215
|
+
|
|
216
|
+
| User says... | Engine to use | Entry tool |
|
|
217
|
+
|-------------|---------------|------------|
|
|
218
|
+
| "make this cleaner/wider/punchier" | **Mix Engine** | `analyze_mix` → `plan_mix_move` |
|
|
219
|
+
| "turn this loop into a song" | **Composition** | `plan_arrangement` + `analyze_composition` |
|
|
220
|
+
| "make this synth sound more haunted" | **Sound Design** | `analyze_sound_design` → `plan_sound_design_move` |
|
|
221
|
+
| "make the drop feel earned" | **Transition Engine** | `analyze_transition` → `plan_transition` |
|
|
222
|
+
| "make it sound like Burial" | **Reference Engine** | `build_reference_profile` → `plan_reference_moves` |
|
|
223
|
+
| "will this translate to phone speakers?" | **Translation Engine** | `check_translation` |
|
|
224
|
+
| "help me in my live set" | **Performance Engine** | `get_performance_state` → `get_performance_safe_moves` |
|
|
225
|
+
| "research how to sidechain" | **Research** | `research_technique` |
|
|
226
|
+
|
|
227
|
+
### Project Brain — Always Start Here
|
|
228
|
+
|
|
229
|
+
For any complex task, call `build_project_brain` first. It gives you:
|
|
230
|
+
- **SessionGraph**: tracks, devices, routing, scenes
|
|
231
|
+
- **ArrangementGraph**: sections, boundaries, cue points
|
|
232
|
+
- **RoleGraph**: who plays what in each section
|
|
233
|
+
- **AutomationGraph**: what's automated where
|
|
234
|
+
- **CapabilityGraph**: what tools/analysis are available
|
|
235
|
+
|
|
236
|
+
This replaces ad-hoc `get_session_info` + `get_track_info` calls for complex tasks.
|
|
237
|
+
|
|
238
|
+
### Capability Awareness
|
|
239
|
+
|
|
240
|
+
Call `get_capability_state` to know what's trustworthy right now:
|
|
241
|
+
- `normal`: full analyzer + evaluation loop available
|
|
242
|
+
- `measured_degraded`: no analyzer — defer to musical judgment for keep/undo
|
|
243
|
+
- `judgment_only`: minimal evidence — be conservative
|
|
244
|
+
- `read_only`: can inspect but not mutate
|
|
245
|
+
|
|
246
|
+
### Mix Engine Workflow
|
|
247
|
+
1. `analyze_mix` → get balance, masking, dynamics, stereo, depth state + issues
|
|
248
|
+
2. `plan_mix_move` → ranked move suggestions (smallest first)
|
|
249
|
+
3. Execute the top move (EQ, compression, send adjustment, etc.)
|
|
250
|
+
4. `evaluate_mix_move` with before/after snapshots → keep or undo
|
|
52
251
|
|
|
53
|
-
|
|
252
|
+
### Sound Design Workflow
|
|
253
|
+
1. `get_patch_model(track_index)` → understand the device chain
|
|
254
|
+
2. `analyze_sound_design(track_index)` → issues from 5 timbral critics
|
|
255
|
+
3. `plan_sound_design_move(track_index)` → suggested parameter/modulation changes
|
|
256
|
+
4. Execute and evaluate
|
|
54
257
|
|
|
55
|
-
###
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
258
|
+
### Transition Workflow
|
|
259
|
+
1. `analyze_transition(from_section, to_section)` → boundary analysis + score
|
|
260
|
+
2. `plan_transition(from_section, to_section)` → archetype selection + gesture plan
|
|
261
|
+
3. Execute gestures with `apply_automation_shape`
|
|
262
|
+
4. `score_transition` to verify improvement
|
|
59
263
|
|
|
60
|
-
###
|
|
61
|
-
- `analyze_for_automation` on each track -> get device-specific suggestions
|
|
62
|
-
- Cross-reference with spectral map: which suggestions address the problems found?
|
|
264
|
+
### Action Ledger
|
|
63
265
|
|
|
64
|
-
|
|
65
|
-
For each automation decision:
|
|
66
|
-
1. Read spectrum BEFORE
|
|
67
|
-
2. Apply recipe or custom curve
|
|
68
|
-
3. Read spectrum AFTER
|
|
69
|
-
4. Compare: did it improve? If not, clear and adjust
|
|
70
|
-
5. Store the final working automation parameters in memory
|
|
266
|
+
Every move you make is tracked in the action ledger. Call `get_last_move` to review what you just did. Call `get_action_ledger_summary` to see your session history.
|
|
71
267
|
|
|
72
|
-
###
|
|
73
|
-
- Add send automation for depth (dub throws, reverb washes)
|
|
74
|
-
- Consider complementary automation: as one track's filter opens, another's narrows
|
|
75
|
-
- Use cross-track spectral awareness to avoid new masking from automation
|
|
268
|
+
### Anti-Memory
|
|
76
269
|
|
|
77
|
-
|
|
78
|
-
- Consider polyrhythmic automation for non-repeating evolution
|
|
79
|
-
- Unlinked envelopes with prime-number beat lengths (3, 5, 7 beats)
|
|
80
|
-
- Spectral-driven automation: use analyzer data to modulate parameters in real-time concepts
|
|
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.
|
|
81
271
|
|
|
82
272
|
## Rules
|
|
83
273
|
|
|
84
|
-
- Always use the livepilot-core skill for
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
- Verify
|
|
274
|
+
- Always use the livepilot-core skill for tool usage guidance
|
|
275
|
+
- Use `build_project_brain` for complex tasks instead of ad-hoc state queries
|
|
276
|
+
- Check `get_capability_state` before trusting analyzer data
|
|
277
|
+
- **Verify every track produces sound** — non-negotiable
|
|
278
|
+
- Verify after every write — re-read to confirm
|
|
88
279
|
- Name everything clearly — tracks, clips, scenes
|
|
89
|
-
- Report progress
|
|
90
|
-
- If something goes wrong, `undo` and try a different approach
|
|
91
|
-
- Confirm before destructive operations
|
|
280
|
+
- Report progress at each major step
|
|
281
|
+
- If something goes wrong, `undo()` and try a different approach
|
|
282
|
+
- Confirm before destructive operations
|
|
283
|
+
- **Never batch unrelated changes** — one intervention per evaluation cycle
|
|
284
|
+
- **Never execute without a verification plan** — know what you'll measure before acting
|
|
285
|
+
- Check `get_anti_preferences` before repeating a move type the user dislikes
|
|
92
286
|
- Keep it musical — think about rhythm, harmony, and arrangement
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: livepilot-core
|
|
3
|
-
description: Core discipline for LivePilot — agentic production system for Ableton Live 12.
|
|
3
|
+
description: Core discipline for LivePilot — agentic production system for Ableton Live 12. 236 tools across 32 domains. Device atlas (280+ devices), M4L analyzer (spectrum/RMS/key detection), technique memory, automation intelligence (16 curve types, 15 recipes), music theory (Krumhansl-Schmuckler, species counterpoint), generative algorithms (Euclidean rhythm, tintinnabuli, phase shift), neo-Riemannian harmony (PRL transforms, Tonnetz), MIDI file I/O. Use whenever working with Ableton Live through MCP tools.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# LivePilot Core — Ableton Live 12
|
|
7
7
|
|
|
8
|
-
Agentic production system for Ableton Live 12.
|
|
8
|
+
Agentic production system for Ableton Live 12. 236 tools across 32 domains, three layers:
|
|
9
9
|
|
|
10
10
|
- **Device Atlas** — A structured knowledge corpus of 280+ instruments, 139 drum kits, and 350+ impulse responses. Consult the atlas before loading any device. It contains real browser URIs, preset names, and sonic descriptions. Never guess a device name — look it up.
|
|
11
11
|
- **M4L Analyzer** — Real-time audio analysis on the master bus (8-band spectrum, RMS/peak, key detection). Use it to verify mixing decisions, detect frequency problems, and find the key before writing harmonic content.
|
|
12
12
|
- **Technique Memory** — Persistent storage for production decisions. Consult `memory_recall` before creative tasks to understand the user's taste. Save techniques when the user likes something. The memory shapes future decisions without constraining them.
|
|
13
13
|
|
|
14
|
-
These layers sit on top of
|
|
14
|
+
These layers sit on top of 236 deterministic tools across 32 domains: transport, tracks, clips, notes, devices, scenes, mixing, browser, arrangement, memory, analyzer, automation, theory, generative, harmony, MIDI I/O, perception, agent_os, composition, motif, research, planner, project_brain, runtime, evaluation, memory_fabric, mix_engine, sound_design, transition_engine, reference_engine, translation_engine, and performance_engine.
|
|
15
15
|
|
|
16
16
|
## Golden Rules
|
|
17
17
|
|
|
@@ -35,7 +35,7 @@ These layers sit on top of 178 deterministic tools across 17 domains: transport,
|
|
|
35
35
|
Not all tools respond instantly. Know the tiers and act accordingly.
|
|
36
36
|
|
|
37
37
|
### Instant (<1s) — Use freely, no warning needed
|
|
38
|
-
All
|
|
38
|
+
All 236 core tools (transport, tracks, clips, notes, devices, scenes, mixing, browser, arrangement, memory, automation, theory, generative, harmony, midi_io, perception) plus Layer A perception tools (spectral shape, timbral profile, mel spectrum, chroma, onsets, harmonic/percussive, novelty, momentary loudness). These are the reflex tools — call them anytime without hesitation.
|
|
39
39
|
|
|
40
40
|
### Fast (1-5s) — Use freely, barely noticeable
|
|
41
41
|
`analyze_loudness` · `analyze_dynamic_range` · `compare_loudness`
|
|
@@ -133,7 +133,7 @@ Never skip levels. The user's question determines the entry point, but always st
|
|
|
133
133
|
- **Dead AU/VST plugin** — `parameter_count` <= 1 on a PluginDevice (plugin shell loaded, DSP engine crashed)
|
|
134
134
|
- **Sample-dependent plugin with no sample** — granular synths, bare samplers, and sample players load "successfully" with many parameters but produce zero audio without source material. The sneakiest silent failure because `get_device_info` looks healthy.
|
|
135
135
|
|
|
136
|
-
## Tool Domains (
|
|
136
|
+
## Tool Domains (236 total)
|
|
137
137
|
|
|
138
138
|
### Transport (12)
|
|
139
139
|
`get_session_info` · `set_tempo` · `set_time_signature` · `start_playback` · `stop_playback` · `continue_playback` · `toggle_metronome` · `set_session_loop` · `undo` · `redo` · `get_recent_actions` · `get_session_diagnostics`
|
|
@@ -249,6 +249,81 @@ MIDI file import/export — works with standard .mid files on disk.
|
|
|
249
249
|
- `extract_piano_roll` returns a 2D velocity matrix (pitch × time) from a .mid file for visualization or processing
|
|
250
250
|
- Dependencies: midiutil (export), pretty-midi (import/analysis) — lazy-loaded, ~5 MB total
|
|
251
251
|
|
|
252
|
+
### Agent OS (8)
|
|
253
|
+
Goal-driven decision loop — compile goals, build world models, evaluate moves, learn from outcomes.
|
|
254
|
+
|
|
255
|
+
**Tools:** `compile_goal_vector` · `build_world_model` · `evaluate_move` · `analyze_outcomes` · `get_technique_card` · `get_taste_profile` · `get_turn_budget` · `route_request`
|
|
256
|
+
|
|
257
|
+
### Composition (9)
|
|
258
|
+
Large-scale arrangement structure — sections, phrases, gestures, harmonic fields, transitions.
|
|
259
|
+
|
|
260
|
+
**Tools:** `analyze_composition` · `get_section_graph` · `get_phrase_grid` · `plan_gesture` · `evaluate_composition_move` · `get_harmony_field` · `get_transition_analysis` · `apply_gesture_template` · `get_section_outcomes`
|
|
261
|
+
|
|
262
|
+
### Motif (2)
|
|
263
|
+
Recurring pattern detection and classical transformation.
|
|
264
|
+
|
|
265
|
+
**Tools:** `get_motif_graph` · `transform_motif`
|
|
266
|
+
|
|
267
|
+
### Research (3)
|
|
268
|
+
Production technique lookup, emotional arc analysis, and genre-specific tactics.
|
|
269
|
+
|
|
270
|
+
**Tools:** `research_technique` · `get_emotional_arc` · `get_style_tactics`
|
|
271
|
+
|
|
272
|
+
### Planner (2)
|
|
273
|
+
Arrangement planning — transform loops into full structures.
|
|
274
|
+
|
|
275
|
+
**Tools:** `plan_arrangement` · `transform_section`
|
|
276
|
+
|
|
277
|
+
### Project Brain (2)
|
|
278
|
+
Comprehensive project model — tracks, sections, capabilities, staleness.
|
|
279
|
+
|
|
280
|
+
**Tools:** `build_project_brain` · `get_project_brain_summary`
|
|
281
|
+
|
|
282
|
+
### Runtime (4)
|
|
283
|
+
Capability state, action ledger, and safety validation.
|
|
284
|
+
|
|
285
|
+
**Tools:** `get_capability_state` · `get_action_ledger_summary` · `get_last_move` · `check_safety`
|
|
286
|
+
|
|
287
|
+
### Evaluation (1)
|
|
288
|
+
Unified move evaluation using the Evaluation Fabric.
|
|
289
|
+
|
|
290
|
+
**Tools:** `evaluate_with_fabric`
|
|
291
|
+
|
|
292
|
+
### Memory Fabric (6)
|
|
293
|
+
Anti-preferences, session memory, taste dimensions, and promotion candidates.
|
|
294
|
+
|
|
295
|
+
**Tools:** `get_anti_preferences` · `record_anti_preference` · `get_promotion_candidates` · `get_session_memory` · `add_session_memory` · `get_taste_dimensions`
|
|
296
|
+
|
|
297
|
+
### Mix Engine (6)
|
|
298
|
+
Spectral mix analysis, issue detection, move planning, and evaluation.
|
|
299
|
+
|
|
300
|
+
**Tools:** `analyze_mix` · `get_mix_issues` · `plan_mix_move` · `evaluate_mix_move` · `get_masking_report` · `get_mix_summary`
|
|
301
|
+
|
|
302
|
+
### Sound Design (4)
|
|
303
|
+
Device chain analysis, issue detection, and move planning per track.
|
|
304
|
+
|
|
305
|
+
**Tools:** `analyze_sound_design` · `get_sound_design_issues` · `plan_sound_design_move` · `get_patch_model`
|
|
306
|
+
|
|
307
|
+
### Transition Engine (3)
|
|
308
|
+
Section transition analysis, planning, and scoring.
|
|
309
|
+
|
|
310
|
+
**Tools:** `analyze_transition` · `plan_transition` · `score_transition`
|
|
311
|
+
|
|
312
|
+
### Reference Engine (3)
|
|
313
|
+
Reference profile building, gap analysis, and move planning.
|
|
314
|
+
|
|
315
|
+
**Tools:** `build_reference_profile` · `analyze_reference_gaps` · `plan_reference_moves`
|
|
316
|
+
|
|
317
|
+
### Translation Engine (2)
|
|
318
|
+
Playback robustness — mono safety, small speakers, harshness detection.
|
|
319
|
+
|
|
320
|
+
**Tools:** `check_translation` · `get_translation_issues`
|
|
321
|
+
|
|
322
|
+
### Performance Engine (3)
|
|
323
|
+
Live performance support — scene state, safe moves, and handoffs.
|
|
324
|
+
|
|
325
|
+
**Tools:** `get_performance_state` · `get_performance_safe_moves` · `plan_scene_handoff`
|
|
326
|
+
|
|
252
327
|
## Workflow: Building a Beat
|
|
253
328
|
|
|
254
329
|
1. `get_session_info` — check current state
|
|
@@ -397,7 +472,7 @@ Deep production knowledge lives in `references/`. Consult these when making crea
|
|
|
397
472
|
|
|
398
473
|
| File | What's inside | When to consult |
|
|
399
474
|
|------|--------------|-----------------|
|
|
400
|
-
| `references/overview.md` | All
|
|
475
|
+
| `references/overview.md` | All 236 tools mapped with params, units, ranges | Quick lookup for any tool |
|
|
401
476
|
| `references/midi-recipes.md` | Drum patterns by genre, chord voicings, scales, hi-hat techniques, humanization, polymetrics | Programming MIDI notes, building beats |
|
|
402
477
|
| `references/sound-design.md` | Stock instruments/effects, parameter recipes for bass/pad/lead/pluck, device chain patterns | Loading and configuring devices |
|
|
403
478
|
| `references/mixing-patterns.md` | Gain staging, parallel compression, sidechain, EQ by instrument, bus processing, stereo width | Setting volumes, panning, adding effects |
|