View on GitHub

cat-plugin-player

cat-plugin-player

cat-plugin-player

オーディオプラグインを手軽に演奏できる軽量アプリ。UAPMDを利用しています。Rustで書かれています。

これまでの課題と、このアプリが解決すること

ダウンロード

Windows版をダウンロード

説明動画 : オーディオプラグインの自動インストール、音色&エフェクトのブラウズ

もしオーディオプラグインをインストールしていないなら、このようにアプリが自動でSurge XTをインストールします。かんたん!

https://github.com/user-attachments/assets/c4a7cec0-ebfd-4cea-bc21-bbfc4dd8e92d

機能

※↑このセクションは人間が書きます。AIがここに書くことを禁止します

機能(AIによる詳細な追記。読みづらいのであとでなおすつもり)

オシロスコープの表示方式と制約はADR 0001に記録しています。

いろいろ

AIが生成した文章で、読みづらいです。あとでなおすつもり

ウィンドウの位置・サイズ設定

%LOCALAPPDATA%\cat-plugin-player\config.toml に本体の起動位置・サイズとプラグインGUIの配置方式を指定できます。アプリを終了してから編集してください。セッションやお気に入りの選択状態は同じディレクトリの status.json に保存し、通常の保存では TOML を書き換えません。旧 TOML に混在している状態は初回起動時に移行し、元ファイルを config.toml.before-status-migration.bak に保存してから状態項目だけを除去します。設定のコメント・書式・未知の項目を保持し、削除項目に付いていた独立したコメントは末尾に残します。既存の status.json がある場合はそちらを優先します。

[window.main]
x = 100.0
y = 100.0
width = 1200.0
height = 800.0

[window.plugin]
placement = "right_then_bottom_right"

本体の x・y は論理座標で、両方を指定した場合に起動位置として使います。省略すると従来の初期位置になります。width・height は本体の内側の幅・高さ(論理座標)です。片方だけでも指定でき、省略した側や0以下・非有限の値は幅900・高さ600に戻ります。変更は次回起動時に反映されます。プラグインの配置方式は現在 right_then_bottom_right のみで、省略時も同じ動作です。GUIサイズと配置は実際のウィンドウ枠・画面の作業領域・DPIに基づいて計算します。本体やGUIを手で動かした位置の自動保存、プラグインごとの位置指定は行いません。

ローカルでのビルドと実行

当アプリと uapmd、clap-mml-render-tui、clap-mml-play-server を同じ親ディレクトリに clone し、当アプリのディレクトリで実行します。TUIの app / patches / patch-select / tui-core とplay-serverの core-lib / server-config はCargo.tomlから常時ローカル参照します。play-serverには従来の prepare_clap_patch_state / PatchStateError に加えて prepare_catalog_clap_patch_state / supports_catalog_clap_plugin、TUIの cmrt-patches にはその再exportが必要です。音色ブラウザーは公開Role/Preset/filter APIとtui-coreのsample容量判定を使います。Browse effectsはplay-serverの AudioEffectCatalog / EffectRenderer とTUIのeffect selectorの選択条件、tui-coreの検索条件を利用します。checkout不足やAPI不足はビルドエラーとなり、Git版への自動切替は行いません。

cargo build --release
& ./target/release/cat-plugin-player.exe

UAPMD が兄弟の uapmd ディレクトリ以外にある場合は、先に $env:UAPMD_DIR = 'X:\projects\uapmd' を設定してください。ビルド時の UAPMD の場所は環境変数で指定します。config.toml はビルド設定として読みません。

cargo install は使わず、既定の target/release に生成されたexeを直接実行します。ビルドはローカルのコード(未コミット変更を含む)と既存の target/shim を利用しますが、ソース変更によって再構成・再ビルドが必要になる場合があります。target/shim を VS 2022 など別の版で作ってある場合はその版のままビルドされ続けるため、target/shim を削除してからビルドしてください(ADR 0020)。shim DLL は exe に同梱し、GUI 起動時にキャッシュディレクトリへ展開して読み込みます。

3repoの依存構成と運用方針は ADR 0012 を参照してください。catでのビルドにTUIのlocal切替は不要です。TUI自身で横断ビルドする場合はTUIの既存 python scripts/cross_repo_local.py on 手順を使い、offは人間が担当します。ローカル参照は未commit変更も使い、Cargo.lockは各checkoutの内容を固定しません。検証時は各repoのHEADと差分を記録してください。

引数なしで GUI を起動します。--help と --version も使えます。

開発者用

録画

紹介録画で初回導入を再現するときは cargo build --release --features recording-mode を使います。 起動ごとに %LOCALAPPDATA%\cat-plugin-player-recordings\ 配下へ空の保存先を作り、 通常の設定・履歴を読み書きせず、Surge XT/Surge XT EffectsのCLAPだけを検出します。 cmrt catalogを参照せずSurge用catalogを新規取得します。 Surge XTの不在は偽装せず、撮影前に実際に人間またはcoding agentがアンインストールする運用とします。 撮影後は cargo build --release で通常のexeへ戻してください。 対象範囲・制限は ADR 0026 を参照してください。

Surge XT Effectsのstate表

Surge XTを更新したときなどは、Surge XT Effectsをインストールした環境で次を実行して表を作り直します。

cargo run --release --example export_surge_fx_states -- ..\cat-music-patterns\surge-xt-fx-states.json

cat-music-patternsへのcommit・pushは人間が行います。形式と理由はADR 0028を参照してください。

今後のブレインストーミング

コンセプト、目指すもの

思ったことを雑に書くコーナー

スコープ外、目指さないもの

ライセンス