Skip to content

Development

Daisuke Tsukada edited this page Sep 5, 2026 · 1 revision

開発

コマンド

npm --prefix server install   # 依存(server/ 配下)
npm test                      # node:test。Live 不要
npm run build                 # esbuild バンドル + .amxd 生成
npm run install-device        # ビルドして User Library へ導入
  • Node 22 以上(node:sqlite)。CI は Node 22
  • server/src は CommonJS のみ(Node for Max 互換のため ESM 不可)
  • device/code/live-bridge.js は Max の js オブジェクトで動くので ES5 で書く(Node API 不可)

テスト

server/test/*.test.js。Live の実機が無くても動くよう、ブリッジは偽物に差し替え、.als は最小のセットを組んで検証します。

ファイル 対象
bridge.test.js / live-bridge.test.js / http-server.test.js ブリッジのプロトコルと HTTP サーバー
amxd.test.js .amxd の読み書き(Live 同梱の純正デバイスをバイト単位で再生成できる)
als.test.js / als-refs.test.js / als-generate.test.js / set-tools.test.js .als の読み書き・Group 化・修復・生成・MCP ツール
sample-meta.test.js / sample-kind.test.js / midi-file.test.js / set-name.test.js 名前の解釈、ループ / ワンショット判定、MIDI、セット名
loopcloud-survey.test.js / loopcloud-db.test.js 分類表、Loopcloud DB(偽の SQLite と tags.cache を組む。node:sqlite が無い Node ではスキップ)

Live 依存の検証(生成した .als が開けるか、ツールが実機で通るか)は自動化できないため、PR の本文に「実機で確認した / 未検証」を必ず書きます。

CI

.github/workflows/test.ymlmain / develop への push と全 PR で npm ci → build → testmain / develop は保護ブランチで、CI 通過と PR 経由のマージが必須です。

ブランチと Issue

Git Flow: main(リリース)/ develop(既定・統合)/ feature/<issue>-<slug> / fix/<issue>-<slug>

  1. 変更が入る作業は先に Issue を立てる
  2. ブランチ名・コミットメッセージ(日本語)に Issue 番号を入れる
  3. PR は develop へ。squash マージ
  4. 実装完了時に Issue へ要約をコメントし、コミットのリンクを残す

ラベル: mcp-tool / als / loopcloud / remote-script / roadmap / documentation

ツールの追加

  1. device/code/live-bridge.jshandleRequestcase "<op>" を足し、LiveAPI を叩く関数を書く(ES5)
  2. server/src/tools.jsserver.registerTool("live.<対象>.<動詞>", { description, inputSchema(zod) }, handler) を足す。handler は bridge.call("<op>", args) を呼ぶだけにする
  3. 1 往復が 15 秒を超えそうな処理は、ツール側で分割して投げる(create_audio_batch / drumrack.build を手本に)
  4. server/test/ に偽ブリッジでのテストを足す
  5. npm run install-deviceLive を再起動 → 実機で確認
  6. MCP ツール にも追記する

.als 系のツールは server/src/set-tools.js に置き、scripts/als*.js を呼びます。esbuild のバンドルでは templates/ が読めないので、bundle-entry.js がテンプレートを文字列として焼き込みます。

未対応の LOM を調べる

live.api.info で対象パスの型・プロパティ・関数一覧を実機から取り、live.api.raw で試してからツール化します。Remote Script 側から見える Song のメンバー(245 個)は M4L の LOM より多いので、M4L に無ければ Remote Script の経路を検討します。

Producer Pal について

Producer Pal(GPL-3.0)はコードの流用禁止。仕様参照のみです。

Clone this wiki locally