-
Notifications
You must be signed in to change notification settings - Fork 0
Architecture
Daisuke Tsukada edited this page Sep 5, 2026
·
2 revisions
Claude Code ←(HTTP: localhost:3360/mcp)→ LiveMCP.amxd(Live のトラック上)
├ node.script … MCP サーバー本体(server/src、esbuild でバンドル)
└ js …………… LiveAPI ブリッジ(device/code/live-bridge.js、ES5)
Claude Code ←(会話)→ MCP ツール live.set.* ─→ scripts/als*.js ─→ .als ファイル(Live を介さない)
scripts/remote-probe.js ←(TCP 3361)→ Remote Script LiveMCP_Probe(Live の Python、検証用)
| やりたいこと | 経路 | 理由 |
|---|---|---|
| 動いているセットの操作(クリップ配置・デバイス挿入・パラメータ) | M4L(node.script + js) | LOM で足りる。Live 内で完結 |
| セットの組み立て・Group 化・参照修復・パックからの一括生成 |
.als 直書き(scripts/als*.js) |
LOM に group_tracks も save も無い。ファイルなら数秒で完成品が出る |
| ステータスバー通知・ブラウザからの読み込み(将来) | Remote Script | M4L の LiveAPI ホワイトリストの外側 |
| セットの保存 | 人間の操作 | どの経路にも API が無い。保存の判断は Live の画面で人がする |
Remote Script 版への全面移行は Issue #4 で計画中です。判断の経緯は 記録 の「M4L ホワイトリストの壁」にあります。
-
v8は使わない。v8.mxoは Max アプリ起動時にしか読み込まれず、Live 組み込みのランタイムでは生成されない。js(ES5)で書く -
LiveAPI は low-priority thread でしか生成できない。 node.script → js の経路に
deferlowが必須 -
node.script から LiveAPI は触れない。 必ず js ブリッジ経由(
server/src/bridge.jsの JSON プロトコル) -
Live ブラウザは M4L から触れない。 サンプル探索は fs ベース(
sample-search.js) - Max はファイルパス単位でキャッシュする。 デバイス更新の反映には Live の再起動が要る
- ブリッジ 1 往復のタイムアウトは 15 秒。重い処理(Drum Rack のパッド生成)はツール側で分割して投げる
-
@modelcontextprotocol/sdkの Streamable HTTP、stateless(リクエストごとにツールを登録しても副作用が無いよう、状態は bridge / config 側に持つ) - CommonJS のみ(Node for Max 互換のため ESM 不可)
- ポート 3360、パス
/mcp。LIVEMCP_PORTで変更
.als は gzip された XML です。スキーマは非公開なので DOM に載せて書き戻しません。触る箇所だけをテキストとして差し替え、それ以外は 1 バイトも変えません。
- テンプレート(
templates/*.xml)は推測で書かず、Live 12.4.5 が実際に書いたセットから起こす(scripts/extract-templates.js) - ポインタ id は
NextPointeeIdから文書順に連番で振る - 検証は「生成 → Live で開く → Live が保存した結果とタグ出現数で比較」
- 書き換えは Live 純正の
Backup/と同じ命名で退避してから。削除はしない - Live で開いているセットは書かない(書いても画面に反映されず、保存で消える)
実物から読み取った規則の一覧は .als スクリプト にあります。
音楽家は CLI を打ちません。.als の操作も MCP ツールとして露出し、判断が要る場面(Live で開いている等)はツールがエラー文言で状況と選択肢を返し、Claude が言葉で確認します。UX 検証の記録は 記録 を参照。
| パス | 内容 |
|---|---|
server/src/ |
MCP サーバー本体(CommonJS) |
server/test/ |
node:test。Live 不要で実行できる |
device/code/live-bridge.js |
js 側 LiveAPI ブリッジ(ES5) |
device/LiveMCP.maxpat |
パッチソース。.amxd はここから生成 |
scripts/ |
.als 生成・修復、Loopcloud 整理、ビルド、Remote Script 導入 |
templates/ |
Live 12.4.5 から起こした .als の部品 |
data/ |
Loopcloud の分類表(JSON が正)と人の判断(overrides) |
docs/ |
設計記録(reports/)、レビュー用の表、Live のファイル構成メモ |
remote-script/ |
検証用 Remote Script(Python) |
wiki/ |
この Wiki の clone(git 管理外) |