JUCE / MATLAB ~ スタンドアローン VST の活用方法
まえがき
JUCE や MATLAB はスタンドアローンの VST(.exe) が生成できます。
DAW なしで単体起動でき、外部入力に対して処理を行うことができます。
また、後述する Virtual I/O アプリを使うと、PC上の任意の音(プレイヤーやWebブラウザ等)に対して処理が行えます。
通常、公式の AudioPluginHost アプリを用いてデバッグしている方が多いのではないかと思いますが、スタンドアローン版を使えば、デバッグ時もそのまま任意音声を入力して実動作検証ができるので、いちいち DAW やプラグインホストアプリに読み込ませる必要がなく便利です。
2年ほど前に
夏休みはVST! MATLABで楽々(?)VSTプラグイン開発
の一部として簡単に触れたのですが、ここでは JUCE 向けとしてその活用方法についてもう少し詳しく書いてみようかと思います。
MATLAB でも設定方法は同じです。
以下、VST は狭義の VST であるエフェクト・プラグイン (VSTe)を想定しています。PC 環境は Windows 10 です。
Projucer設定
デフォルトで選択されていると思いますが、"Project Settings" で ”Standalone” をチェックするだけです。
あとは Visual Studio で普通に "StandalonePlugin" をビルド・実行すれば立ち上がります。
Virtual Audio Device
スタンドアローン VST は単体で起動でき、外部入力は選べますが、このままでは音楽プレイヤーの出力等に処理をかけることができません。
VB-Audio の VB-CABLE(Donationware) 等を入れると、"CABLE Input / CABLE Output" という Virtual Audio Device が使えるようになります。
Virtual Audio Device を使うと、Virtual In → Virtual Out へ信号を流せるので、プレイヤー出力を Virtual In、スタンドアローン VST の入力を Virtual Out、出力を実際のスピーカー等とすると、
プレイヤー → CABLE Input → CABLE Output → VST → スピーカー
のように信号が流れ、プレイヤーで再生した音に VST の処理をかけてスピーカーから出すことができます。
インストール
Windows 版の場合(Mac 版もあります)、VB-Audio サイトから
"VBCABLE Driver~.zip" を DL / 解凍後、
VBCABLE _Setup_x64.exe
を右クリック -> 管理者インストールします。
PC を再起動すると、"VB-Audio Virtual Cable" がバーチャル再生/録音デバイスとしてそれぞれ登録されます。
サウンドコントロールパネル設定
Windows タスクバーのスピーカーアイコンを右クリック ->
サウンドの設定を開く(E) -> サウンドコントロールパネル を開きます。
・出力設定
実際に音を出すデバイスを設定します。
プロパティを設定します。
まずは「詳細」の「規定の形式」を確認してください。以下、バーチャル I/O の設定は全てこれに合わせます。
エフェクト類を全て OFF にします。
・バーチャル I/O 設定(再生)
VB-Audio Virtual Cable のプロパティを設定します。
レベルを 100 にします。
「規定の形式」は、さきほどの「実際に音を出すデバイス」に合わせてください。
エフェクト類を OFF にします。
・バーチャル I/O 設定(録音)
再生側と同じ、VB-Audio Virtual Cable のプロパティを設定します。
レベルを 100 にします。
こちらの詳細も入力と合わせます。
「詳細」のサンプリングレートが異なるとサンプリングレートコンバーター(SRC)が入り、レイテンシーの増加や意図しない音質劣化が起こります。
出力に外付けのオーディオ I/F を使用する場合はあまり問題は起こらないと思いますが、PC 内蔵オーディオを使う場合は特に注意が必要です。
オーディオ I/F IC が Realtek 製である場合が多いと思いますが、私の環境では 44.1 kHz で使うとノイズが出ます。
サウンドコントロールパネルの プロパティ -> 詳細で、サンプリングレートを 48 kHz(Virtual In / Virtual Out も)にするとノイズは出ません。
もしかすると Realtek の内部処理が 48 kHz 固定(?)で、それ以外だと SRC が入って処理タイミングが合わなくなるのかもしれません。
SRCは、原理的に 44.1 kHz <-> 48 kHz の高精度変換処理量はかなり多く、SRC によっては音質劣化の原因ともなります。それぞれの環境に合わせて確認してみてください。
参考
サンプリング・レート・コンバーター~マルチステージ化・ポリフェーズ化で演算量を大幅削減!~マルチレート信号処理とは?
また外部 I/F も、USB ハブを使うとノイズが出やすいものもあります。PC直差しが良いようです。
・サウンド設定
最後に、Windows タスクバーのサウンドアイコンをクリックして、"VB-Audio Virtual Cable" を選択し、プライマリ出力を Virtual In に設定します。
これで Windows のデフォルト音声出力が Virtual Cable になりますので、You Tube 等、Webブラウザー等の出力音声にも VST をかけることができます。
(使い終わったら戻しておきましょう)
VLC / foobar2000等、プレイヤー側で出力デバイスを選択できる場合はそちらで選択しても構いません。プライマリ出力を変更せずに、VST にオーディオを流すことができます。
同じく VB-AUDIO の Hi-Fi Cable / Voicemeeter / Banana / Potato を入れても、”Hi-Fi Cable”、"VoiceMeeter VAIO”、"VoiceMeeter AUX VAIO”、"VoiceMeeter VAIO3" 等がサウンドドライバーとして登録されるので、同様に使うことができます。
・VST 設定
VST の Options -> Audio/MIDI Settings で、"Input" を "Cable Output"に、"Output" を実際に音を出したいデバイスに設定します。
"Mute audio input" にチェックが付いている場合は外してください。
ここで音を流して、バーチャル I/O を通して VST の入力まで来ていれば Input 横のレベルメーターが振れますし、出力が繋がっていれば Test をクリックするとテストトーンが出ます。
音が鳴らない場合は接続をチェックしてください。
Audio buffer size は、音切れのない範囲で小さい値に設定するのが良さそうです。私の環境では、大きすぎてもノイズが出ます。また、いったん Audio device type を切り替えて戻したりすると安定することがあります。
それと上の設定でも書いていますが、PC でオーディオ関連の開発を行う場合は、サウンドコントロールパネルのプロパティに「立体音響」等のタブがあれば全て無効にしておきましょう。OFF にしないと、想定外のエフェクトがかかってしまいます。
また、PC によってはそれと別の音響効果がデフォルトで入っている場合があるので、そちらも OFF にしておきましょう。例えば DELL であれば、全ての PC に Waves MaxxAudio が入っていますので、こちらの設定も確認しておきましょう。
プラグイン名
JUCE 用記事ではありますが、自分的に最近分かったので MATLAB での VST 開発時の注意点を一点。
Windows だと C:\Users\(ユーザー名)\AppData\Roaming\ に、プラグイン名のディレクトリが作られ、そこに設定が保存されます。そのため、"PluginName" にはファイル名に使えない文字(\/:*?"<>|)は使えません。使ってしまうと、設定ファイルが作れず、立ち上げ時に毎回設定が必要になってしまいます。(/ はサブディレクトリが作られるだけで動きますが)
JUCE だとデバッグでエラーが出ますが、MATLAB だと通ってしまうので要注意です。
あとがき
以上、ご存じの方はすでに知っているかと思いますが、知らない人は知らないのではないかと思い書いてみました。(u_u)
みなさん、ご存じでしたか?
タイトル画像モデル:あや
この記事が気に入ったらサポートをしてみませんか?