![見出し画像](https://assets.st-note.com/production/uploads/images/165145464/rectangle_large_type_2_0bc57b603587eb6a099e4c1747debdf8.jpeg?width=1200)
(JUCE)自作 VST/AU プラグインの動作確認方法 ~ アルゴリズム検証は MATLAB で
まえがき
JUCE 等を使って VST/AU プラグインを開発する場合、みなさんどのようにして動作確認をしていますか?
海外のチュートリアルビデオとかを見ても、DAW を起動して生成したプラグインを 組み込んで実行、というのが多いように思います。
実際は DAW に組み込んで使うのがほとんどな訳で、当たり前と言えば当たり前ですね。
ここでは他の方法も含めてご紹介したいと思います。
以下は基本的に、Windows 上の Visual Studio でエフェクター・プラグインを開発する場合を想定して書いています。
DAW に組み込む
DAW に組み込むには、DAW のプラグインスキャン対象であるフォルダーに置く必要があります。
開発中はビルドの度にコピーするのは不便ですので、ビルド後に自動でコピーされるよう設定しましょう。
Visual Studio のソリューションエクスプローラーで、プロジェクト "~VST3" を右クリック → プロパティ → ビルドイベント → ビルド後のイベント、で「コマンドライン」右端の V をクリック、さらに<編集>をクリックします。
![](https://assets.st-note.com/img/1733761478-rnlDkMx4ew3PsoSmgyfcCLqF.jpg?width=1200)
最後の行に以下を追加し、適用させます。
xcopy /Y "$(TargetDir)$(TargetName).vst3\Contents\x86_64-win\$(TargetName).vst3" "C:\Program Files\Common Files\VST3\"
$(TargetDir) と $(TargetName) はVisual Studioのプロジェクトビルド設定で使用されるマクロです。
まずは以下を加え、確認してみてもよいでしょう。
echo TargetDir: $(TargetDir)
echo TargetName: $(TargetName)
上記では コピー先を標準の "C:\Program Files\Common Files\VST3\" としています。ここへの書き込みは管理者権限が必要ですので、フォルダのアクセス権限を変更するか、Visual Studio を「管理者として実行」する必要があります。
別途ユーザーディレクト下に VST フォルダーを作り、そこを DAW のプラグインスキャン対象に追加した方が便利かもしれません。
その場合はコピーコマンドのコピー先を適宜変えてください。
プラグインホストの利用
重い DAW を起動しなくても、まずは軽いプラグインホストで確認する方が手軽かと思います。
プラグインホストアプリはいくつかありますが、JUCE 公式でも用意されています。
JUCE\extras\AudioPluginHost\AudioPluginHost.jucer
を起動して、必要なプラットフォームでビルドします。
公式サイトにもサンプル等がありますが、メンテされていなかったりするのでこちらが確実です。
![](https://assets.st-note.com/img/1733762479-wKbi5PAvLxSHc4EZaFo78N9h.jpg?width=1200)
ここに プラグインをドロップして必要なラインを接続すれば動作確認が行えます。
スタンドアローン版の利用
デフォルトで選択されていると思いますが、設定(左ペインの歯車アイコンクリック)の "Plugin Formats" で "Standalone" をチェックしておけば、単体で動作可能な exe ファイル用プロジェクトも生成されます。
![](https://assets.st-note.com/img/1733762598-ZWOtGAF7S0ynlPwJ3T6pQhBi.jpg?width=1200)
このプロジェクトを実行すれば Visual Studio から プラグインがそのまま立ち上がるため、GUI のチェック等はすぐできます。
![](https://assets.st-note.com/img/1733763150-0zcfYHastuiw2JvjMb4OIGr3.jpg)
Virtual I/O を併用する
スタンドアローン版は単体で起動でき外部入力は選べますが、このままでは音楽プレイヤーの出力等に処理を掛けることができません。
VB-CABLE(Donationware)等を使うと、Virtual In → Virtual Out へ信号を流せるので、プレイヤー出力を Virtual In、スタンドアローン版の入力を Virtual Out、出力を実際のヘッドホン等とすると、
プレイヤー → Virtual In → Virtual Out → スタンドアローン版 → ヘッドホン
のように信号が流れて、プレイヤーで再生した音楽にプラグインでリアルタイムに処理を掛けてヘッドホンから出すことができます。
Windows タスクバーのスピーカーアイコンをクリックして、プライマリ出力を Virtual In にしておけば、Web ブラウザー等の出力(YouTube 等)にも効果を掛けることができます。
-インストール
上記サイトから "VB-CABLE Driver" をDL/解凍後、右クリック → 管理者インストール してから PC を再起動してください。
"VB-Audio Virtual Cable" がバーチャル再生/録音デバイスとしてそれぞれ登録されます。
-設定
(1)Windows ツールバーのスピーカーアイコンをクリックして "VB-Audio Virtual Cable" を選択します。
これでWindowsのデフォルト音声出力が Virtual Cable になります。
(使い終わったら戻しておきましょう)
VLC/foobar2000 等、プレイヤー側で出力デバイスを選択できる場合はそちらで選択しても構いません。
(2)プラグインの Options -> Audio/MIDI Settings で、"Input" を "Cable Output"に、"Output" を実際に音を出したいデバイスに設定します。
"Mute audio input" にチェックが付いている場合は外してください。
![](https://assets.st-note.com/img/1733763831-JyvSjOTKlEWkDVoHnNbuYFZR.jpg)
同じく VB-AUDIO の Voicemeeter/Banana/Potato 辺りを入れても
"VoiceMeeter VAIO”、"VoiceMeeter VAIO3" がサウンドドライバーとして登録されるので、同様に使うことができます。
"HiFi-Cable" はサンプリングレート変換非対応ですが、勝手に Windows のサンプリングレート変換が入ると音質が劣化したり、処理が増えて音飛びの原因にもなりますので、かえってこちらの方が安心かもしれません。
以下が、Visual Studio の「実行」でスタンドアローン版を立ち上げ、Virtual I/O を利用して実動作を行っている例です。
![](https://assets.st-note.com/img/1733764141-7PZe2hfSXJFn3jQwp1dtTEAB.jpg)
また全てに共通ですが、信号処理の検証時は「サウンドの設定」で、
「オーディオの強化」「立体音響」等は全てオフにしておきましょう。
![](https://assets.st-note.com/img/1733764508-D3olN72Yz0MmkeXBb5PhHQcS.jpg)
想定外の処理が付加され、オリジナル信号処理の効果確認ができなくなってしまいます。
Windows アップデート等で強制的にオンになっている場合もありますので注意が必要です。
MATLAB で信号処理アルゴリズムの検証
私はプラグイン開発時はまず、MATLAB/Simulink を用いてアルゴリズム検証までを行っています。
グラフィカルなデバッグ等が簡単に行えますし、VST/AU プラグインの生成・ホスティングもできます。
![](https://assets.st-note.com/img/1733766633-qpOVztIMs59FeixP4gc3TDSR.png?width=1200)
(サイドチェーンを用いたダッキング VST)
![](https://assets.st-note.com/img/1733766665-zgBH3TiLZIt2PYxcSsQk5Du7.png?width=1200)
Simulink を用いたリアルタイムシミュレーションの例
プラグイン自体の GUI の自由度は低くグラフ描画等もできませんが、C++ をマスターしていなくてもサクサク開発できてしまいます。
簡単なプラグインであれば 1時間も掛からず作れてしまうでしょう。
(生成はエフェクトプラグインのみ)
![](https://assets.st-note.com/img/1733767022-GUTIb4hol9uViYpKD8RHtXvs.png)
![](https://assets.st-note.com/img/1733767055-PZgaVSOMvrm86YnBTALCswu3.png)
多少はデザインもいじれます。
![](https://assets.st-note.com/img/1733766510-04TXKaP3R26EJL7CsADqlbyv.png)
VST/AU プラグイン生成には Audio Toolbox が必要ですが、Home ライセンス(非商用のみ)でも可能なので、一式税込み 3万円ちょい、あると便利な Simulink も +5千円弱で購入可能(買い切り)です。
プロライセンスであれば、MATLAB 関数を使っていても直接 JUCE プロジェクト生成が可能です。
詳しくはこちらをご覧ください。
また、MATLAB Online / Mobile は無料アカウントでも基本ツール含めて 20時間/月 使用可能です。
さらに今ならなんと、Interface 2025年1月号 を購入すると MATLAB / Simulink 含め 111製品(Online 版)が 2025/5/31 まで使用可能なライセンスが付いてきます!
Audio Toolbox も含まれてはいますが、残念ながら Online 版では VST/AU プラグイン等、バイナリ生成はサポートされておりません。
しかし今年のライセンスには Home ライセンス製品にはない MATLAB Coder 等も含まれているため、Home ライセンスでは不可能な JUCE プロジェクトの生成ができます!
つまり、MATLAB で作ってそのまま JUCE でビルドできます!!
(大丈夫かな? 間違えってことは・・)
まあ、信号処理部を手作業で C++ に変換するのはそれほど大変ではないので、あとで手を入れることを考えれば自分でやった方が良いとは思いますが。
むしろ大変なのは GUI ですからね。(;¬_¬)
GUI Editor もなくなっちゃったし、いっそのこと MATLAB のプラグイン生成が WebView UI 対応してくれれば、最強の VST/AU プラグイン開発環境になるのに・・。
(JUCE プロジェクト生成が可能なことからも分かるとおり、MATLAB は JUCE を使っています)
あとがき
知ってる人は当然知ってる内容かとは思いますが、これから VST/AU プラグイン開発を始める方向けに解説を書いてみました。
「こういう方法もある!」とかあればぜひ教えてください。 (。・_・。)ノ
タイトル画像モデル:綾夏