cat-plugin-player
オーディオプラグインを手軽に演奏できる軽量アプリ。UAPMDを利用しています。Rustで書かれています。
これまでの課題と、このアプリが解決すること
- オーディオプラグインの音色は素晴らしいですね!
- 演奏するには、DAWを起動し、演奏のための前準備が必要なことが多いです。
- 手軽に演奏するための軽量アプリは、入手のためのアカウント登録が必要なことがあったり、操作感覚がnot for meだったりしました。
- 現代は、ほしいUXがあれば、バイブコーディングで実現できます。
- そうすることにしました。
機能
- 検出
- 起動すると、installされているプラグインを自動で検出します
- 演奏
Loadボタンを押すと、プラグインload後、自動で演奏を開始します
- GUI
Show UIボタンを押すと、プラグインのGUIを表示できます
- 音色
- 音色の変更をしたいときは、プラグインのGUIを使います
機能(AIによる詳細な追記。読みづらいのであとでなおすつもり)
- 演奏
- 最後に演奏したinstanceのプラグインを
%LOCALAPPDATA%\cat-plugin-player\config.tomlに保存し、次回起動時に再生成して自動演奏します Load成功時、Sequenceをオンにしたとき、Test noteで演奏したときに記憶します。停止やRemove後も記憶は残ります- 保存対象はプラグインの形式・ID・名前・ベンダー・ファイルの場所です。プラグイン内で変更した音色・パラメータの保存は含みません
- 起動時は前回のプラグインを直接ロードして演奏を開始し、その後にGUIを初期化して一覧を背景で走査します
- 古い履歴やファイル移動などで直接ロードできない場合は、GUI表示後の走査結果から復元します。古い履歴は一度演奏すると更新されます
- 起動時間の計測方法と結果は docs/startup-timing.md を参照してください
- 最後に演奏したinstanceのプラグインを
ビルド & 動作確認 の手順
- ※前提として、まず UAPMD をビルドしてください。手順等もそちらを参照ください。Windowsなら
Microsoft C++ Build Toolsが入っていればかんたん!入っていないならAIにきいて入れればかんたん!全体にAI任せでかんたん!くらいのイメージです - ※次の前提として、Rustが入っていなければAIにきいて入れればかんたん!くらいのイメージです
- 前述のとおり、 ../uapmd がビルド済みであることを確認します
- Surge XT などのオーディオプラグイン(instrument)がinstall済みであることを確認します。例えばREAPERでSurge XTが鳴ることを確認します
cargo runします(アプリがデバッグビルドされます)- 画面が開くことを確認します
- Surge XT などが画面にlistされることを確認します
- Loadボタンをクリックします
- Loadされ、音が鳴ることを確認します
今後のブレインストーミング
- ※気分で変更する可能性があります
- plugin対応
- cmrtだと検知できるが、当アプリが検知できていない、というプラグインが多数ある
- CLAPプラグインがそうで、10個くらいあるうち2個くらいしか検知できていない
- cmrtだと検知できるが、当アプリが検知できていない、というプラグインが多数ある
- エフェクトルーティング
- 小さく始める。まず1つ。次に直列。cmrtは実現済み
- VST3とGUIに対応している、という、cmrtにない強みの部分を伸ばす
- スクショ
- 開いたGUIのスクショをconfig dirに保存し、plugin launcherはそれを表示して、ビジュアルで選べる
- これまでの課題、文字ベースでpluginsを選ぶのは、目が滑る
- 画像なら、直感的に選べる。目が滑らない、かもしれない。検証する価値はある
- これまでの課題、文字ベースでpluginsを選ぶのは、目が滑る
- 検討、そもそもプラグイン横断でpatch nameで絞り込みで選ぶcmrtの方法もそれはそれでよい。併存して検証の想定
- 開いたGUIのスクショをconfig dirに保存し、plugin launcherはそれを表示して、ビジュアルで選べる
- GUIの自動操作?
- GUIで操作したものをlog化し、cmrtでTUIでサクサク操作を再現?プラグインごとの個別対応のヒントに?
- eguiでいろいろ遊ぶ
- 鍵盤表示?
- 波形表示?
- grid sequencer?
- snapshort, state save
- 好きな音色に好きなタイプのシマーリバーブを挿したもの、をショートカットキー一発で呼び出す
- スクショ
- cmrtの各種crateを利用して、いろいろやる
- ※crateの洗練にもなり、こちらは利用することで恩恵があるので、win-win
- patch selector
- CLAPオーディオプラグインのプリセットパッチを検知できます
- CLI import / export
- cmrt keyboard画面はCLIから、patchとeffectとアルペジオなどを指定して、一発で鳴らせます。同じことを可能に(cmrt をcat-plugin-player に変更するだけで鳴るレベルに)
- 頻繁に破壊的変更してよい。あとから手作業で移行作業は可能。変更をおそれて身動きできなくて進歩がとまるよりマシ
- cmrt keyboard画面はCLIから、patchとeffectとアルペジオなどを指定して、一発で鳴らせます。同じことを可能に(cmrt をcat-plugin-player に変更するだけで鳴るレベルに)
コンセプト、目指すもの
- 楽器
- 例えばMIDI鍵盤のついたシンセサイザーは、電源を入れて鍵盤を押せば音が鳴ります。
- そのレベルで手軽に使えることを目指します。
- 音を鳴らすまでの操作を最小化します。
- そのレベルで手軽に使えることを目指します。
- 例えばMIDI鍵盤のついたシンセサイザーは、電源を入れて鍵盤を押せば音が鳴ります。
- 鳴ること
- 「作者の環境で鳴ること」はできるだけ維持することを目指します
- すぐ鳴ること
- アプリ起動から音が鳴るまで体感0.2秒。演奏までを最速にしています
- GUI表示準備などの処理も、音の後にしています
- GUI表示より先に音が鳴るのは、いわばスプラッシュスクリーンのサウンド版かもしれません
- releaseビルドしたexeを直接実行する必要があります(cargo経由はtimestampチェックが、デバッグビルドはデバッグコードが、それぞれ起動時の待ち時間になるため)
- GUI表示準備などの処理も、音の後にしています
- アプリ起動から音が鳴るまで体感0.2秒。演奏までを最速にしています
- 教育用
- 商業用よりは、教育用の方向を向いています
- 実験、探索、自分用
- 頻繁に破壊的変更をします
思ったことを雑に書くコーナー
- ※コンセプトに関連します
- オーディオプラグインのプリセット音色が好きだ
- 再現可能であるから
- freeにシェアされるおかげで、みんなが恩恵を受けられるから
- 楽器UXを提供したい
- DAWのUXではなく、楽器のUXを提供したい
- 楽器とは
- オーディオプラグイン から PCキーボード までの各layerの総合である
- 中間layerがある
- それはプラグインホスト、演奏用UIである
- ここはバイブコーディングできるlayerである
- ここを作ることでUXの改善ができる
- それはプラグインホスト、演奏用UIである
- 中間layerがある
- オーディオプラグイン から PCキーボード までの各layerの総合である
- 誰のための楽器?
- 猫、赤子
- つまり猫や赤子(例えばAndroidタブレット)もターゲットに含むくらいレンジを初心者側に広くとる
- ※あくまで比喩表現です。実際にAndroidタブレットで動くかは未確認です。Androidで動かない場合に動くよう努力をする可能性も低いです
- 猫、赤子
スコープ外、目指さないもの
- 堅牢さ
- 何をしても絶対にバグらない。アプリが落ちない
- 完全互換。あらゆる過去の設定やデータをloadして動作する
- 機能
- あらゆる機能を搭載。あらゆる用途で利用可
- 利便性
- 便利さ、使いやすさを極限まで追求
- 性能
- あらゆる環境でCPU負荷なく高速に動作。音は絶対に途切れない
- 要望
- ユーザーのあらゆる要望に即応
ライセンス
- MIT