livepilot 1.9.22 → 1.9.24
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/.mcpbignore +40 -0
- package/AGENTS.md +3 -3
- package/CHANGELOG.md +84 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +141 -72
- package/bin/livepilot.js +135 -0
- package/livepilot/.Codex-plugin/plugin.json +2 -2
- package/livepilot/.claude-plugin/plugin.json +2 -2
- package/livepilot/agents/livepilot-producer/AGENT.md +13 -0
- package/livepilot/commands/arrange.md +42 -23
- package/livepilot/commands/mix.md +34 -19
- package/livepilot/commands/perform.md +31 -19
- package/livepilot/commands/sounddesign.md +38 -25
- package/livepilot/skills/livepilot-arrangement/SKILL.md +2 -1
- package/livepilot/skills/livepilot-composition-engine/references/transition-archetypes.md +2 -2
- package/livepilot/skills/livepilot-core/SKILL.md +60 -4
- package/livepilot/skills/livepilot-core/references/device-atlas/distortion-and-character.md +11 -11
- package/livepilot/skills/livepilot-core/references/device-atlas/drums-and-percussion.md +25 -25
- package/livepilot/skills/livepilot-core/references/device-atlas/dynamics-and-punch.md +21 -21
- package/livepilot/skills/livepilot-core/references/device-atlas/eq-and-filtering.md +13 -13
- package/livepilot/skills/livepilot-core/references/device-atlas/midi-tools.md +13 -13
- package/livepilot/skills/livepilot-core/references/device-atlas/movement-and-modulation.md +5 -5
- package/livepilot/skills/livepilot-core/references/device-atlas/space-and-depth.md +16 -16
- package/livepilot/skills/livepilot-core/references/device-atlas/spectral-and-weird.md +40 -40
- package/livepilot/skills/livepilot-core/references/m4l-devices.md +3 -3
- package/livepilot/skills/livepilot-core/references/overview.md +4 -4
- package/livepilot/skills/livepilot-evaluation/SKILL.md +12 -8
- package/livepilot/skills/livepilot-evaluation/references/memory-promotion.md +2 -2
- package/livepilot/skills/livepilot-mix-engine/SKILL.md +1 -1
- package/livepilot/skills/livepilot-mix-engine/references/mix-moves.md +2 -2
- package/livepilot/skills/livepilot-mixing/SKILL.md +3 -1
- package/livepilot/skills/livepilot-notes/SKILL.md +2 -1
- package/livepilot/skills/livepilot-release/SKILL.md +29 -15
- package/livepilot/skills/livepilot-sound-design-engine/SKILL.md +2 -2
- package/livepilot/skills/livepilot-wonder/SKILL.md +62 -0
- package/livepilot.mcpb +0 -0
- package/manifest.json +91 -0
- package/mcp_server/__init__.py +1 -1
- package/mcp_server/creative_constraints/__init__.py +6 -0
- package/mcp_server/creative_constraints/engine.py +277 -0
- package/mcp_server/creative_constraints/models.py +75 -0
- package/mcp_server/creative_constraints/tools.py +341 -0
- package/mcp_server/experiment/__init__.py +6 -0
- package/mcp_server/experiment/engine.py +213 -0
- package/mcp_server/experiment/models.py +120 -0
- package/mcp_server/experiment/tools.py +263 -0
- package/mcp_server/hook_hunter/__init__.py +5 -0
- package/mcp_server/hook_hunter/analyzer.py +365 -0
- package/mcp_server/hook_hunter/models.py +58 -0
- package/mcp_server/hook_hunter/tools.py +588 -0
- package/mcp_server/memory/taste_graph.py +328 -0
- package/mcp_server/memory/tools.py +99 -0
- package/mcp_server/mix_engine/critics.py +2 -2
- package/mcp_server/mix_engine/models.py +1 -1
- package/mcp_server/mix_engine/state_builder.py +2 -2
- package/mcp_server/musical_intelligence/__init__.py +8 -0
- package/mcp_server/musical_intelligence/detectors.py +434 -0
- package/mcp_server/musical_intelligence/phrase_critic.py +163 -0
- package/mcp_server/musical_intelligence/tools.py +224 -0
- package/mcp_server/persistence/__init__.py +1 -0
- package/mcp_server/persistence/base_store.py +82 -0
- package/mcp_server/persistence/project_store.py +106 -0
- package/mcp_server/persistence/taste_store.py +122 -0
- package/mcp_server/preview_studio/__init__.py +5 -0
- package/mcp_server/preview_studio/engine.py +280 -0
- package/mcp_server/preview_studio/models.py +74 -0
- package/mcp_server/preview_studio/tools.py +466 -0
- package/mcp_server/runtime/capability.py +66 -0
- package/mcp_server/runtime/capability_probe.py +118 -0
- package/mcp_server/runtime/execution_router.py +139 -0
- package/mcp_server/runtime/remote_commands.py +82 -0
- package/mcp_server/runtime/session_kernel.py +96 -0
- package/mcp_server/runtime/tools.py +90 -1
- package/mcp_server/semantic_moves/__init__.py +13 -0
- package/mcp_server/semantic_moves/compiler.py +116 -0
- package/mcp_server/semantic_moves/mix_compilers.py +291 -0
- package/mcp_server/semantic_moves/mix_moves.py +157 -0
- package/mcp_server/semantic_moves/models.py +46 -0
- package/mcp_server/semantic_moves/performance_compilers.py +208 -0
- package/mcp_server/semantic_moves/performance_moves.py +81 -0
- package/mcp_server/semantic_moves/registry.py +32 -0
- package/mcp_server/semantic_moves/resolvers.py +126 -0
- package/mcp_server/semantic_moves/sound_design_compilers.py +266 -0
- package/mcp_server/semantic_moves/sound_design_moves.py +78 -0
- package/mcp_server/semantic_moves/tools.py +205 -0
- package/mcp_server/semantic_moves/transition_compilers.py +222 -0
- package/mcp_server/semantic_moves/transition_moves.py +76 -0
- package/mcp_server/server.py +10 -0
- package/mcp_server/services/__init__.py +1 -0
- package/mcp_server/services/motif_service.py +67 -0
- package/mcp_server/session_continuity/__init__.py +6 -0
- package/mcp_server/session_continuity/models.py +86 -0
- package/mcp_server/session_continuity/tools.py +230 -0
- package/mcp_server/session_continuity/tracker.py +263 -0
- package/mcp_server/song_brain/__init__.py +6 -0
- package/mcp_server/song_brain/builder.py +504 -0
- package/mcp_server/song_brain/models.py +136 -0
- package/mcp_server/song_brain/tools.py +312 -0
- package/mcp_server/stuckness_detector/__init__.py +5 -0
- package/mcp_server/stuckness_detector/detector.py +400 -0
- package/mcp_server/stuckness_detector/models.py +66 -0
- package/mcp_server/stuckness_detector/tools.py +195 -0
- package/mcp_server/tools/_conductor.py +104 -6
- package/mcp_server/tools/analyzer.py +1 -1
- package/mcp_server/tools/devices.py +34 -0
- package/mcp_server/wonder_mode/__init__.py +6 -0
- package/mcp_server/wonder_mode/diagnosis.py +84 -0
- package/mcp_server/wonder_mode/engine.py +493 -0
- package/mcp_server/wonder_mode/session.py +114 -0
- package/mcp_server/wonder_mode/tools.py +290 -0
- package/package.json +2 -2
- package/remote_script/LivePilot/__init__.py +1 -1
- package/remote_script/LivePilot/browser.py +4 -1
- package/remote_script/LivePilot/devices.py +29 -0
- package/remote_script/LivePilot/tracks.py +11 -4
- package/scripts/generate_tool_catalog.py +131 -0
- package/scripts/sync_metadata.py +132 -0
|
@@ -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 — 293 tools, 39 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 — 293 tools, 39 domains, device atlas, spectral perception, technique memory, neo-Riemannian harmony, Euclidean rhythm, species counterpoint, MIDI I/O",
|
|
13
|
+
"version": "1.9.24",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Pilot Studio"
|
|
16
16
|
},
|
package/.mcpbignore
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Development files
|
|
2
|
+
.git
|
|
3
|
+
.git-backup-full
|
|
4
|
+
.github
|
|
5
|
+
.claude
|
|
6
|
+
.playwright-mcp
|
|
7
|
+
.pytest_cache
|
|
8
|
+
.venv
|
|
9
|
+
__pycache__
|
|
10
|
+
|
|
11
|
+
# Test and CI
|
|
12
|
+
tests/
|
|
13
|
+
scripts/
|
|
14
|
+
.github/
|
|
15
|
+
|
|
16
|
+
# Build artifacts
|
|
17
|
+
*.pyc
|
|
18
|
+
.DS_Store
|
|
19
|
+
*.egg-info
|
|
20
|
+
|
|
21
|
+
# Credentials and tokens
|
|
22
|
+
.mcpregistry_*
|
|
23
|
+
.env
|
|
24
|
+
.npmrc
|
|
25
|
+
|
|
26
|
+
# Docs and marketing (not needed at runtime)
|
|
27
|
+
docs/specs/
|
|
28
|
+
docs/social-banner.*
|
|
29
|
+
docs/screenshots/
|
|
30
|
+
|
|
31
|
+
# Large binary already in User Library after install
|
|
32
|
+
# m4l_device/LivePilot_Analyzer.amxd
|
|
33
|
+
|
|
34
|
+
# Dev config
|
|
35
|
+
.mcp.json
|
|
36
|
+
.npmignore
|
|
37
|
+
.editorconfig
|
|
38
|
+
CODE_OF_CONDUCT.md
|
|
39
|
+
CONTRIBUTING.md
|
|
40
|
+
SECURITY.md
|
package/AGENTS.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# LivePilot v1.9.
|
|
1
|
+
# LivePilot v1.9.24 — Ableton Live 12
|
|
2
2
|
|
|
3
3
|
## Project
|
|
4
4
|
- **Repo:** This directory (LivePilot)
|
|
@@ -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
|
+
- 293 tools across 39 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, 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 293 tools. If adding/removing tools, update: README.md, package.json description, livepilot/.Codex-plugin/plugin.json, livepilot/.claude-plugin/plugin.json, server.json, livepilot/skills/livepilot-core/SKILL.md, livepilot/skills/livepilot-core/references/overview.md, AGENTS.md, CLAUDE.md, CHANGELOG.md, tests/test_tools_contract.py, docs/manual/index.md, docs/manual/tool-reference.md
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,89 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.24 — Stability & Intelligence Upgrade (April 2026)
|
|
4
|
+
|
|
5
|
+
### Truth and Boundaries (Wave 1)
|
|
6
|
+
- **feat(runtime):** Capability contract — every advanced tool reports `full/fallback/analytical_only/unavailable` with confidence scores
|
|
7
|
+
- **feat(runtime):** Command boundary audit — CI catches any `send_command()` targeting a non-existent Remote Script command
|
|
8
|
+
- **fix(song_brain):** `get_motif_graph` now uses pure-Python engine instead of invalid TCP call
|
|
9
|
+
- **fix(hook_hunter):** Same motif routing fix
|
|
10
|
+
- **fix(musical_intelligence):** Same motif routing fix + `analyze_phrase_arc` now calls perception engine directly
|
|
11
|
+
- **fix(memory):** `record_positive_preference` actually updates taste dimensions (was a silent no-op due to key mismatch)
|
|
12
|
+
- **fix(metadata):** AGENTS.md synced to v1.9.23/293 tools, test docstring corrected
|
|
13
|
+
|
|
14
|
+
### Unified Execution Layer (Wave 2)
|
|
15
|
+
- **feat(runtime):** Execution router — classifies steps as `remote_command/bridge_command/mcp_tool/unknown`, dispatches correctly
|
|
16
|
+
- **feat(semantic_moves):** `apply_semantic_move` explore mode uses execution router
|
|
17
|
+
- **feat(preview_studio):** `render_preview_variant` uses execution router
|
|
18
|
+
|
|
19
|
+
### Persistent Memory (Waves 2-3)
|
|
20
|
+
- **feat(persistence):** Base persistent JSON store (atomic write, corruption recovery, thread-safe)
|
|
21
|
+
- **feat(persistence):** Taste store at `~/.livepilot/taste.json` — move outcomes, novelty band, device affinity, anti-preferences survive restart
|
|
22
|
+
- **feat(persistence):** Project store at `~/.livepilot/projects/<hash>/state.json` — threads, turns, Wonder outcomes per song
|
|
23
|
+
- **feat(memory):** TasteGraph.record_move_outcome writes to persistent backing
|
|
24
|
+
- **feat(session_continuity):** tracker flushes threads and turns to project store on write
|
|
25
|
+
|
|
26
|
+
### Move Annotations (Wave 3)
|
|
27
|
+
- **feat(semantic_moves):** All 20 moves annotated with explicit `backend` per compile_plan step
|
|
28
|
+
- **test:** Static audit verifies all annotations match the execution router classifier
|
|
29
|
+
|
|
30
|
+
### Intelligence Upgrade (Waves 3-4)
|
|
31
|
+
- **feat(services):** Shared motif service — one entry point consumed by SongBrain, HookHunter, musical_intelligence
|
|
32
|
+
- **feat(song_brain):** Evidence-weighted identity confidence (motif=0.4, composition=0.2, roles=0.15, scenes=0.15, moves=0.1)
|
|
33
|
+
- **feat(song_brain):** `evidence_breakdown` field shows per-source contributions
|
|
34
|
+
- **feat(hook_hunter):** Hooks carry `evidence_sources` (motif_recurrence, track_name, clip_reuse)
|
|
35
|
+
- **feat(hook_hunter):** Section-placement analysis boosts hooks recurring across sections
|
|
36
|
+
- **feat(detectors):** Motif appearing in >60% of sections triggers fatigue signal
|
|
37
|
+
|
|
38
|
+
### Preview and Doctor (Wave 4)
|
|
39
|
+
- **feat(preview_studio):** Three explicit preview modes: `audible_preview` (M4L+spectrum), `metadata_only_preview`, `analytical_preview`
|
|
40
|
+
- **feat(preview_studio):** `bars` parameter used for audible preview playback duration
|
|
41
|
+
- **feat(preview_studio):** `preview_mode` field in response — no ambiguity about what was measured
|
|
42
|
+
- **feat(runtime):** Capability probe — 6-area runtime detection (Ableton, Remote Script, M4L, numpy, persistence, tier)
|
|
43
|
+
|
|
44
|
+
### Release Infrastructure (Wave 5)
|
|
45
|
+
- **feat(scripts):** `sync_metadata.py` — single source of truth for version and tool count, CI-checkable
|
|
46
|
+
- **docs:** README Intelligence Layer section with all 12 engines described
|
|
47
|
+
- **docs:** Manual index rewritten with three-layer architecture and 39-domain map
|
|
48
|
+
|
|
49
|
+
## 1.9.23-wonder-v1.5 — Wonder Mode V1.5: Stuck-Rescue Workflow (April 2026)
|
|
50
|
+
|
|
51
|
+
### Wonder Mode Redesign (292->293 tools)
|
|
52
|
+
- **feat(wonder_mode):** Diagnosis-first workflow — stuckness detection drives variant generation
|
|
53
|
+
- **feat(wonder_mode):** Honest variant labeling — `analytical_only: true` for non-executable variants
|
|
54
|
+
- **feat(wonder_mode):** Real distinctness enforcement — variants must differ by move, family, or plan shape
|
|
55
|
+
- **feat(wonder_mode):** WonderSession lifecycle — diagnosis -> variants -> preview -> commit/discard
|
|
56
|
+
- **feat(wonder_mode):** `discard_wonder_session` tool — reject all variants, keep creative thread open
|
|
57
|
+
- **feat(preview_studio):** Wonder-aware preview — accepts `wonder_session_id`, refuses analytical variants
|
|
58
|
+
- **feat(preview_studio):** Commit lifecycle hooks — records outcome to continuity and taste
|
|
59
|
+
- **feat(session_continuity):** No more premature turn recording — only commit/reject record turns
|
|
60
|
+
- **feat(skills):** New `livepilot-wonder` skill with trigger conditions and honesty rules
|
|
61
|
+
|
|
62
|
+
## 1.9.23 — Stage 2: The Magic Layer (April 2026)
|
|
63
|
+
|
|
64
|
+
### Wonder Mode Rebuild
|
|
65
|
+
- **feat(wonder_mode):** Full engine rebuild — variants now built from real semantic moves matched by keyword+taste scoring, not templates
|
|
66
|
+
- **feat(wonder_mode):** Ranking uses bell-curve novelty centered on user's novelty_band, sacred element penalty, and coherence scoring
|
|
67
|
+
- **feat(wonder_mode):** Taste fit uses full TasteGraph (family preference, dimension alignment, anti-preferences, risk alignment)
|
|
68
|
+
- **feat(wonder_mode):** Each variant carries `targets_snapshot`, `compiled_plan`, and `score_breakdown` with all 4 component scores
|
|
69
|
+
- **breaking(wonder_mode):** Removed `generate_wonder_variants` tool (redundant with `enter_wonder_mode`)
|
|
70
|
+
|
|
71
|
+
### New Tools (10 new, -1 removed = net +9, 283→292)
|
|
72
|
+
- **feat(preview_studio):** `render_preview_variant` — render a short preview of a variant using Ableton's undo system
|
|
73
|
+
- **feat(hook_hunter):** `detect_hook_neglect` — check if a strong hook is underused across sections
|
|
74
|
+
- **feat(hook_hunter):** `compare_phrase_impact` — compare emotional impact across multiple sections
|
|
75
|
+
- **feat(stuckness_detector):** `start_rescue_workflow` — structured step-by-step rescue plan for a specific stuckness type
|
|
76
|
+
- **feat(wonder_mode):** `rank_wonder_variants` — rank wonder variants by taste + identity + phrase impact
|
|
77
|
+
- **feat(session_continuity):** `open_creative_thread` — open a new creative thread for exploration
|
|
78
|
+
- **feat(session_continuity):** `list_open_creative_threads` — list all open non-stale creative threads
|
|
79
|
+
- **feat(session_continuity):** `explain_preference_vs_identity` — explain taste vs identity tension for a candidate
|
|
80
|
+
- **feat(creative_constraints):** `generate_constrained_variants` — generate triptych variants under active constraints
|
|
81
|
+
- **feat(creative_constraints):** `generate_reference_inspired_variants` — generate variants inspired by distilled reference principles
|
|
82
|
+
|
|
83
|
+
### Fixes
|
|
84
|
+
- **fix(wonder_mode):** Fixed taste graph access to use session-scoped lifespan context instead of creating fresh stores
|
|
85
|
+
- **fix(session_continuity):** Fixed taste graph access to match preview_studio pattern
|
|
86
|
+
|
|
3
87
|
## 1.9.22 — Skill & Command Overhaul (April 2026)
|
|
4
88
|
|
|
5
89
|
### Skill Updates
|
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 **293 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
|
+
293 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
|
+
│ │ 293 MCP Tools │ │
|
|
53
|
+
│ │ 39 domains │ │
|
|
54
54
|
│ └────────┬────────┘ │
|
|
55
55
|
│ │ │
|
|
56
56
|
│ Remote Script ──┤── TCP 9878 │
|
|
@@ -71,7 +71,78 @@ 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 293 deterministic tools that execute on Ableton's main thread.
|
|
75
|
+
|
|
76
|
+
<br>
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## The Intelligence Layer
|
|
81
|
+
|
|
82
|
+
Most MCP servers are tool collections — they execute commands. LivePilot is an **agentic production system** — it understands what a song is becoming, diagnoses when a session is stuck, generates real creative options, learns from your decisions, and tracks its own impact.
|
|
83
|
+
|
|
84
|
+
This is the V2 intelligence layer: 12 engines that sit on top of the 293 tools and give the AI musical judgment, not just musical execution.
|
|
85
|
+
|
|
86
|
+
### SongBrain — What the Song Is
|
|
87
|
+
|
|
88
|
+
SongBrain builds a real-time model of the current session: what the defining idea is (identity core), what elements must not be casually damaged (sacred elements), what each section is trying to do emotionally (section purposes), and where the energy arc is heading. It answers the question every producer asks: *"What is this track?"*
|
|
89
|
+
|
|
90
|
+
It detects when the song's identity is drifting — when recent edits are pulling the track away from what made it work. When identity confidence is high, the system makes bolder suggestions. When it's fragile, it protects what's there.
|
|
91
|
+
|
|
92
|
+
### Taste Graph — What You Like
|
|
93
|
+
|
|
94
|
+
The Taste Graph learns your production preferences across sessions. Not just "prefers reverb" — it tracks which move families you keep vs. undo (mix moves? arrangement moves?), which devices you gravitate toward, how experimental you want suggestions to be (your novelty band), and which dimensions you actively avoid.
|
|
95
|
+
|
|
96
|
+
Every time you accept or reject a suggestion, the graph updates. Over time, it personalizes which creative options are offered and how they're ranked. Two producers using the same tools get different recommendations.
|
|
97
|
+
|
|
98
|
+
### Semantic Moves — Musical Actions, Not Parameters
|
|
99
|
+
|
|
100
|
+
A semantic move is a high-level musical intent — "add contrast," "tighten the low end," "build tension toward the chorus" — that compiles into a specific sequence of tool calls. The system has 20 moves across 4 families (mix, arrangement, transition, sound design), each with an executable plan.
|
|
101
|
+
|
|
102
|
+
Moves carry risk levels, target dimensions, and protection thresholds. "Add a filter sweep build" targets energy and tension while protecting clarity. The AI doesn't just know what to do — it knows what it's risking.
|
|
103
|
+
|
|
104
|
+
### Wonder Mode — Stuck-Rescue Workflow
|
|
105
|
+
|
|
106
|
+
When a session is stuck — too many undos, polishing the same loop, no structural progress — Wonder Mode activates. It's not "surprise me." It's a structured diagnosis-and-rescue workflow:
|
|
107
|
+
|
|
108
|
+
1. **Diagnose** — Why is the session stuck? Repeated undos? Overpolished loop? Missing contrast? Identity unclear? The stuckness detector analyzes the action history and classifies the problem.
|
|
109
|
+
|
|
110
|
+
2. **Generate** — Based on the diagnosis, Wonder searches for semantic moves that address the specific problem. It enforces real distinctness — each variant must differ by move family or execution approach. If only one real option exists, it says so honestly instead of relabeling the same idea three times.
|
|
111
|
+
|
|
112
|
+
3. **Preview** — Each executable variant can be applied, captured, and undone using Ableton's undo system. You hear what each option would actually sound like before committing.
|
|
113
|
+
|
|
114
|
+
4. **Commit or Reject** — Choose one, and the system records it into taste and session continuity. Reject all, and the creative thread stays open for another attempt. No fake outcomes are recorded.
|
|
115
|
+
|
|
116
|
+
### Creative Engines
|
|
117
|
+
|
|
118
|
+
Six specialized engines handle different aspects of production intelligence:
|
|
119
|
+
|
|
120
|
+
| Engine | What it does |
|
|
121
|
+
|--------|-------------|
|
|
122
|
+
| **Mix Engine** | Critic-driven mix analysis. Identifies masking, headroom issues, stereo problems. Plans corrective moves with before/after evaluation. |
|
|
123
|
+
| **Sound Design Engine** | Analyzes patches for static timbre, missing modulation, weak transients. Suggests parameter moves and evaluates the result. |
|
|
124
|
+
| **Transition Engine** | Classifies transition types (drop, build, breakdown). Scores transition quality and plans improvements using archetypes. |
|
|
125
|
+
| **Composition Engine** | Analyzes song structure, detects motifs, infers section purposes, scores emotional arcs. Plans arrangement moves. |
|
|
126
|
+
| **Performance Engine** | Safety-constrained suggestions for live performance. Knows which moves are safe during playback and which risk audio dropouts. |
|
|
127
|
+
| **Reference Engine** | Distills principles from reference tracks. Maps those principles to your current session as concrete, actionable moves. |
|
|
128
|
+
|
|
129
|
+
### Hook Hunter — Finding What Matters
|
|
130
|
+
|
|
131
|
+
The Hook Hunter identifies the most salient musical idea in a session — the element listeners would remember. It ranks candidates by rhythmic distinctiveness, melodic contour, and repetition. Then it tracks whether hooks are being developed, neglected, or undermined by arrangement choices.
|
|
132
|
+
|
|
133
|
+
When the hook is strong but underused, it flags it. When a transition fails to deliver the expected payoff, it diagnoses why.
|
|
134
|
+
|
|
135
|
+
### Session Continuity — The Story of Your Session
|
|
136
|
+
|
|
137
|
+
Session Continuity tracks what happened, what changed, and what's still unresolved. It maintains creative threads (open questions like "the chorus needs more lift") and records turn resolutions (what you tried, whether you kept it, how it affected identity).
|
|
138
|
+
|
|
139
|
+
When you return to a project, the session story tells the AI: *"Last time, you were working on making the bridge darker. You tried three approaches and kept the filter sweep. The chorus lift thread is still open."*
|
|
140
|
+
|
|
141
|
+
### Evaluation Loop — Verify Before Claiming Success
|
|
142
|
+
|
|
143
|
+
Every creative engine follows the same discipline: **measure before, act, measure after, compare**. The evaluation system captures session state snapshots, runs the change, captures again, and scores the difference. If the change made things worse — more masking, lost headroom, identity drift — the system flags it before you move on.
|
|
144
|
+
|
|
145
|
+
This closes the gap between "the AI did something" and "the AI did something that actually helped."
|
|
75
146
|
|
|
76
147
|
<br>
|
|
77
148
|
|
|
@@ -79,7 +150,7 @@ All three feed into 236 deterministic tools that execute on Ableton's main threa
|
|
|
79
150
|
|
|
80
151
|
## Tools
|
|
81
152
|
|
|
82
|
-
|
|
153
|
+
293 tools across 39 domains. Highlights below — [full catalog here](docs/manual/tool-catalog.md).
|
|
83
154
|
|
|
84
155
|
<br>
|
|
85
156
|
|
|
@@ -99,13 +170,13 @@ All three feed into 236 deterministic tools that execute on Ableton's main threa
|
|
|
99
170
|
|
|
100
171
|
<br>
|
|
101
172
|
|
|
102
|
-
### Perception —
|
|
173
|
+
### Perception — 30 tools `[M4L]`
|
|
103
174
|
|
|
104
175
|
The M4L Analyzer sits on the master track. UDP 9880 carries spectral data
|
|
105
176
|
from Max to the server. OSC 9881 sends commands back.
|
|
106
177
|
|
|
107
178
|
> [!TIP]
|
|
108
|
-
> All 207 core tools work without the analyzer — it adds
|
|
179
|
+
> All 207 core tools work without the analyzer — it adds 30 more and closes the feedback loop.
|
|
109
180
|
|
|
110
181
|
```
|
|
111
182
|
SPECTRAL ─────── 8-band frequency decomposition (sub → air)
|
|
@@ -322,7 +393,30 @@ read_audio_metadata Format, duration, sample rate, tags
|
|
|
322
393
|
|
|
323
394
|
<br>
|
|
324
395
|
|
|
325
|
-
|
|
396
|
+
### Agentic Intelligence — 83 tools
|
|
397
|
+
|
|
398
|
+
The V2 intelligence layer. These tools don't just execute commands — they analyze, diagnose, plan, evaluate, and learn.
|
|
399
|
+
|
|
400
|
+
| Domain | # | What it does |
|
|
401
|
+
|--------|:-:|-------------|
|
|
402
|
+
| Agent OS | 8 | session kernel, action ledger, capability state, routing, turn budget |
|
|
403
|
+
| Composition | 9 | section analysis, motif detection, emotional arc, form planning, section transforms |
|
|
404
|
+
| Evaluation | 1 | before/after evaluation with structured scoring |
|
|
405
|
+
| Mix Engine | 6 | critic-driven mix analysis, issue detection, move planning, masking reports |
|
|
406
|
+
| Sound Design | 5 | patch analysis, modulation planning, timbre scoring |
|
|
407
|
+
| Transition Engine | 5 | transition classification, scoring, archetype-based planning |
|
|
408
|
+
| Reference Engine | 5 | reference profiling, principle distillation, gap analysis, move mapping |
|
|
409
|
+
| Translation Engine | 3 | cross-domain translation, issue detection |
|
|
410
|
+
| Performance Engine | 5 | safety-constrained suggestions, safe move lists, scene handoff planning |
|
|
411
|
+
| Song Brain | 4 | identity inference, sacred element detection, drift monitoring, section purposes |
|
|
412
|
+
| Hook Hunter | 9 | hook detection, salience scoring, development strategies, neglect detection, phrase impact |
|
|
413
|
+
| Stuckness Detector | 3 | momentum analysis, rescue classification, structured rescue workflows |
|
|
414
|
+
| Wonder Mode | 3 | diagnosis-driven variant generation, taste-aware ranking, session discard |
|
|
415
|
+
| Session Continuity | 7 | creative threads, turn resolution, taste vs identity ranking, session story |
|
|
416
|
+
| Creative Constraints | 5 | constraint activation, reference-inspired variants, constrained generation |
|
|
417
|
+
| Preview Studio | 5 | variant creation, preview rendering, comparison, commit, discard |
|
|
418
|
+
|
|
419
|
+
> **[View all 293 tools →](docs/manual/tool-catalog.md)**
|
|
326
420
|
|
|
327
421
|
<br>
|
|
328
422
|
|
|
@@ -330,123 +424,98 @@ read_audio_metadata Format, duration, sample rate, tags
|
|
|
330
424
|
|
|
331
425
|
## Install
|
|
332
426
|
|
|
333
|
-
### 1
|
|
427
|
+
### Easiest: Claude Desktop Extension (1 click)
|
|
334
428
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
```
|
|
429
|
+
Download [`livepilot.mcpb`](https://github.com/dreamrec/LivePilot/releases/latest) and double-click it.
|
|
430
|
+
Claude Desktop installs everything automatically. Then:
|
|
338
431
|
|
|
339
|
-
|
|
432
|
+
1. Open Ableton Live 12
|
|
433
|
+
2. Preferences → Link, Tempo & MIDI → Control Surface → **LivePilot**
|
|
434
|
+
3. Start chatting
|
|
340
435
|
|
|
341
|
-
|
|
436
|
+
> [!TIP]
|
|
437
|
+
> The Desktop Extension auto-installs the Remote Script and M4L Analyzer on first launch.
|
|
342
438
|
|
|
343
|
-
|
|
344
|
-
<summary><strong>Claude Code</strong></summary>
|
|
439
|
+
### Quick: One Command Setup
|
|
345
440
|
|
|
346
441
|
```bash
|
|
347
|
-
|
|
442
|
+
npx livepilot --setup
|
|
348
443
|
```
|
|
349
444
|
|
|
350
|
-
|
|
445
|
+
This runs the full setup wizard: checks Python, installs the Remote Script, creates the Python environment, copies the M4L Analyzer, and tests the Ableton connection.
|
|
446
|
+
|
|
447
|
+
### Manual: Step by Step
|
|
448
|
+
|
|
449
|
+
<details>
|
|
450
|
+
<summary><strong>1. Remote Script</strong></summary>
|
|
351
451
|
|
|
352
452
|
```bash
|
|
353
|
-
|
|
453
|
+
npx livepilot --install
|
|
354
454
|
```
|
|
355
455
|
|
|
456
|
+
Restart Ableton → Preferences → Link, Tempo & MIDI → Control Surface → **LivePilot**
|
|
457
|
+
|
|
356
458
|
</details>
|
|
357
459
|
|
|
358
460
|
<details>
|
|
359
|
-
<summary><strong>
|
|
461
|
+
<summary><strong>2. MCP Client</strong></summary>
|
|
360
462
|
|
|
361
|
-
|
|
463
|
+
**Claude Code:**
|
|
464
|
+
```bash
|
|
465
|
+
claude mcp add LivePilot -- npx livepilot
|
|
466
|
+
claude plugin add github:dreamrec/LivePilot/plugin
|
|
467
|
+
```
|
|
362
468
|
|
|
469
|
+
**Claude Desktop (macOS)** — `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
363
470
|
```json
|
|
364
471
|
{
|
|
365
472
|
"mcpServers": {
|
|
366
|
-
"LivePilot": {
|
|
367
|
-
"command": "npx",
|
|
368
|
-
"args": ["livepilot"]
|
|
369
|
-
}
|
|
473
|
+
"LivePilot": { "command": "npx", "args": ["livepilot"] }
|
|
370
474
|
}
|
|
371
475
|
}
|
|
372
476
|
```
|
|
373
477
|
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
<details>
|
|
377
|
-
<summary><strong>Claude Desktop (Windows)</strong></summary>
|
|
378
|
-
|
|
478
|
+
**Claude Desktop (Windows):**
|
|
379
479
|
```cmd
|
|
380
480
|
npm install -g livepilot
|
|
381
481
|
livepilot --install
|
|
382
482
|
```
|
|
383
|
-
|
|
384
483
|
`%APPDATA%\Claude\claude_desktop_config.json`:
|
|
385
|
-
|
|
386
484
|
```json
|
|
387
485
|
{
|
|
388
486
|
"mcpServers": {
|
|
389
|
-
"LivePilot": {
|
|
390
|
-
"command": "livepilot"
|
|
391
|
-
}
|
|
487
|
+
"LivePilot": { "command": "livepilot" }
|
|
392
488
|
}
|
|
393
489
|
}
|
|
394
490
|
```
|
|
395
491
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
<details>
|
|
399
|
-
<summary><strong>Cursor</strong></summary>
|
|
400
|
-
|
|
401
|
-
`.cursor/mcp.json`:
|
|
402
|
-
|
|
492
|
+
**Cursor** — `.cursor/mcp.json`:
|
|
403
493
|
```json
|
|
404
494
|
{
|
|
405
495
|
"mcpServers": {
|
|
406
|
-
"LivePilot": {
|
|
407
|
-
"command": "npx",
|
|
408
|
-
"args": ["livepilot"]
|
|
409
|
-
}
|
|
496
|
+
"LivePilot": { "command": "npx", "args": ["livepilot"] }
|
|
410
497
|
}
|
|
411
498
|
}
|
|
412
499
|
```
|
|
413
500
|
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
<details>
|
|
417
|
-
<summary><strong>VS Code / Windsurf</strong></summary>
|
|
418
|
-
|
|
419
|
-
VS Code — `.vscode/mcp.json`:
|
|
420
|
-
|
|
501
|
+
**VS Code** — `.vscode/mcp.json`:
|
|
421
502
|
```json
|
|
422
503
|
{
|
|
423
504
|
"servers": {
|
|
424
|
-
"LivePilot": {
|
|
425
|
-
"command": "npx",
|
|
426
|
-
"args": ["livepilot"]
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
```
|
|
431
|
-
|
|
432
|
-
Windsurf — `~/.codeium/windsurf/mcp_config.json`:
|
|
433
|
-
|
|
434
|
-
```json
|
|
435
|
-
{
|
|
436
|
-
"mcpServers": {
|
|
437
|
-
"LivePilot": {
|
|
438
|
-
"command": "npx",
|
|
439
|
-
"args": ["livepilot"]
|
|
440
|
-
}
|
|
505
|
+
"LivePilot": { "command": "npx", "args": ["livepilot"] }
|
|
441
506
|
}
|
|
442
507
|
}
|
|
443
508
|
```
|
|
444
509
|
|
|
445
510
|
</details>
|
|
446
511
|
|
|
447
|
-
|
|
512
|
+
<details>
|
|
513
|
+
<summary><strong>3. M4L Analyzer (optional)</strong></summary>
|
|
514
|
+
|
|
515
|
+
Drag `LivePilot_Analyzer.amxd` onto the master track for real-time spectral analysis.
|
|
516
|
+
The `--setup` wizard and Desktop Extension do this automatically.
|
|
448
517
|
|
|
449
|
-
|
|
518
|
+
</details>
|
|
450
519
|
|
|
451
520
|
Unlocks 29 additional tools: spectral analysis, key detection,
|
|
452
521
|
sample manipulation, deep device introspection, plugin parameter mapping.
|
package/bin/livepilot.js
CHANGED
|
@@ -485,6 +485,109 @@ async function setupFlucoma() {
|
|
|
485
485
|
}
|
|
486
486
|
}
|
|
487
487
|
|
|
488
|
+
// ---------------------------------------------------------------------------
|
|
489
|
+
// Setup wizard — unified installer
|
|
490
|
+
// ---------------------------------------------------------------------------
|
|
491
|
+
|
|
492
|
+
async function setup() {
|
|
493
|
+
console.log("LivePilot Setup Wizard v%s", PKG.version);
|
|
494
|
+
console.log("═".repeat(50));
|
|
495
|
+
console.log("");
|
|
496
|
+
|
|
497
|
+
let ok = true;
|
|
498
|
+
|
|
499
|
+
// 1. Python
|
|
500
|
+
console.log("Step 1/5: Checking Python...");
|
|
501
|
+
const pyInfo = findPython();
|
|
502
|
+
if (pyInfo) {
|
|
503
|
+
console.log(" ✓ %s", pyInfo.version);
|
|
504
|
+
} else {
|
|
505
|
+
console.log(" ✗ Python >= 3.9 not found");
|
|
506
|
+
console.log(" Install: brew install python@3.12 (macOS) or python.org (Windows)");
|
|
507
|
+
ok = false;
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
// 2. Install Remote Script
|
|
511
|
+
console.log("");
|
|
512
|
+
console.log("Step 2/5: Installing Remote Script...");
|
|
513
|
+
try {
|
|
514
|
+
const { install } = require(path.join(ROOT, "installer", "install.js"));
|
|
515
|
+
install();
|
|
516
|
+
console.log(" ✓ Remote Script installed");
|
|
517
|
+
} catch (err) {
|
|
518
|
+
console.log(" ✗ Failed: %s", err.message);
|
|
519
|
+
ok = false;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
// 3. Bootstrap Python venv
|
|
523
|
+
console.log("");
|
|
524
|
+
console.log("Step 3/5: Setting up Python environment...");
|
|
525
|
+
if (pyInfo) {
|
|
526
|
+
try {
|
|
527
|
+
ensureVenv(pyInfo.cmd, pyInfo.prefixArgs);
|
|
528
|
+
console.log(" ✓ Virtual environment ready");
|
|
529
|
+
} catch (err) {
|
|
530
|
+
console.log(" ✗ Failed: %s", err.message);
|
|
531
|
+
ok = false;
|
|
532
|
+
}
|
|
533
|
+
} else {
|
|
534
|
+
console.log(" ⊘ Skipped (no Python)");
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
// 4. Copy M4L Analyzer to User Library
|
|
538
|
+
console.log("");
|
|
539
|
+
console.log("Step 4/5: Installing M4L Analyzer...");
|
|
540
|
+
const analyzerSrc = path.join(ROOT, "m4l_device", "LivePilot_Analyzer.amxd");
|
|
541
|
+
if (fs.existsSync(analyzerSrc)) {
|
|
542
|
+
const home = require("os").homedir();
|
|
543
|
+
let dest;
|
|
544
|
+
if (process.platform === "darwin") {
|
|
545
|
+
dest = path.join(home, "Music", "Ableton", "User Library", "Presets",
|
|
546
|
+
"Audio Effects", "Max Audio Effect");
|
|
547
|
+
} else {
|
|
548
|
+
dest = path.join(home, "Documents", "Ableton", "User Library", "Presets",
|
|
549
|
+
"Audio Effects", "Max Audio Effect");
|
|
550
|
+
}
|
|
551
|
+
try {
|
|
552
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
553
|
+
fs.copyFileSync(analyzerSrc, path.join(dest, "LivePilot_Analyzer.amxd"));
|
|
554
|
+
console.log(" ✓ Analyzer copied to %s", dest);
|
|
555
|
+
} catch (err) {
|
|
556
|
+
console.log(" ✗ Failed: %s", err.message);
|
|
557
|
+
}
|
|
558
|
+
} else {
|
|
559
|
+
console.log(" ⊘ Analyzer not found in package (optional)");
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
// 5. Connection test
|
|
563
|
+
console.log("");
|
|
564
|
+
console.log("Step 5/5: Testing Ableton connection...");
|
|
565
|
+
const reachable = await checkStatus();
|
|
566
|
+
if (reachable) {
|
|
567
|
+
console.log(" ✓ Ableton Live is running and reachable");
|
|
568
|
+
} else {
|
|
569
|
+
console.log(" ⊘ Ableton not running (start it and select LivePilot as Control Surface)");
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
// Summary
|
|
573
|
+
console.log("");
|
|
574
|
+
console.log("═".repeat(50));
|
|
575
|
+
if (ok) {
|
|
576
|
+
console.log("✓ Setup complete! Next steps:");
|
|
577
|
+
console.log("");
|
|
578
|
+
console.log(" 1. Open Ableton Live 12");
|
|
579
|
+
console.log(" 2. Go to Preferences → Link, Tempo & MIDI");
|
|
580
|
+
console.log(" 3. Set Control Surface to 'LivePilot'");
|
|
581
|
+
console.log(" 4. Start making music with AI!");
|
|
582
|
+
console.log("");
|
|
583
|
+
console.log(" Claude Code: claude mcp add LivePilot -- npx livepilot");
|
|
584
|
+
console.log(" Claude Desktop: Already configured if using Desktop Extension");
|
|
585
|
+
} else {
|
|
586
|
+
console.log("⚠ Setup completed with issues. Run 'npx livepilot --doctor' for details.");
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
|
|
488
591
|
// ---------------------------------------------------------------------------
|
|
489
592
|
// Main
|
|
490
593
|
// ---------------------------------------------------------------------------
|
|
@@ -507,6 +610,7 @@ async function main() {
|
|
|
507
610
|
console.log("");
|
|
508
611
|
console.log("Commands:");
|
|
509
612
|
console.log(" (none) Start the MCP server");
|
|
613
|
+
console.log(" --setup Full setup wizard (install + configure + test)");
|
|
510
614
|
console.log(" --install Install Remote Script into Ableton Live");
|
|
511
615
|
console.log(" --uninstall Remove Remote Script from Ableton Live");
|
|
512
616
|
console.log(" --status Check if Ableton Live is reachable");
|
|
@@ -553,6 +657,37 @@ async function main() {
|
|
|
553
657
|
process.exit(passed ? 0 : 1);
|
|
554
658
|
}
|
|
555
659
|
|
|
660
|
+
// --setup (unified installer wizard)
|
|
661
|
+
if (flag === "--setup") {
|
|
662
|
+
await setup();
|
|
663
|
+
return;
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
// Auto-install Remote Script when launched from Desktop Extension
|
|
667
|
+
if (process.env.LIVEPILOT_AUTO_INSTALL === "true") {
|
|
668
|
+
try {
|
|
669
|
+
const { install } = require(path.join(ROOT, "installer", "install.js"));
|
|
670
|
+
const { findAbletonPaths } = require(path.join(ROOT, "installer", "paths.js"));
|
|
671
|
+
const candidates = findAbletonPaths();
|
|
672
|
+
if (candidates.length > 0) {
|
|
673
|
+
// Check if already installed
|
|
674
|
+
const target = path.join(candidates[0].path, "LivePilot");
|
|
675
|
+
if (!fs.existsSync(target)) {
|
|
676
|
+
console.error("LivePilot: auto-installing Remote Script to %s", candidates[0].path);
|
|
677
|
+
install();
|
|
678
|
+
console.error("LivePilot: Remote Script installed. Select 'LivePilot' in Ableton > Preferences > Link, Tempo & MIDI > Control Surface.");
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
} catch (err) {
|
|
682
|
+
console.error("LivePilot: auto-install skipped (%s)", err.message);
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
// Custom TCP port from Desktop Extension config
|
|
687
|
+
if (process.env.LIVEPILOT_TCP_PORT && process.env.LIVEPILOT_TCP_PORT !== "9878") {
|
|
688
|
+
process.env.LIVE_MCP_PORT = process.env.LIVEPILOT_TCP_PORT;
|
|
689
|
+
}
|
|
690
|
+
|
|
556
691
|
// Default: start MCP server
|
|
557
692
|
const pyInfo = findPython();
|
|
558
693
|
if (!pyInfo) {
|
|
@@ -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.24",
|
|
4
|
+
"description": "Agentic production system for Ableton Live 12 — 293 tools, 39 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
|
}
|