ASIOBridgeでWin32アプリ出力にVST Effectを掛ける
というわけで仮想サラウンドシステム猛レース(Sony VPT、Dolby Headphone、OpenAL Soft HRTF、ffdshow HRTF、Xear3d、...)を準備していて、その過程で、Windowsアプリケーションの出力にVST Effectを掛けたいというシチュエーションが出てきた。もっとショートカットが有るかもしれないが、手元のオーディオDSPコードが大体Jackで入出力しているのでその都合上。
2chオーディオで十分なら、VSTHostはDirectSoundデバイスから直接音声を入力できる。
できること
例えば: 普通のDirectSowndアプリ(KbMediaPlayer)の出力をJackサーバ経由でVSTHost( http://www.hermannseib.com/english/vsthost.htm )に入力し、DHWrapper VST Effect経由でドルビーヘッドホンを適用する。
もっと一般的には、普通のWin32アプリケーションを、あたかもASIO入出力対応のように見せることができる。ASIO4LLのような"普通のWDMカーネルストリーミングデバイスをASIOに見せるドライバ"の逆と考えればわかりやすい。
準備するもの
ちなみに、Virtual Audio Cableのような普通のパススルーデバイスも提供している。ドネーションウェアで、ドネーションをすると更に2デバイスを入手できる。
他に適当なASIOアプリケーション。今回は、ASIOのルーティングと単純な出力のためにJack( http://jackaudio.org/ )を使った。
セットアップ
(おおきいの - http://storage.osdev.info/pub/idmjt/diaryimage/1312/neta131223l1.png )
今回は、VSTプラグインに5.1ch信号を入力したいので、C:\Program Files (x86)\Jack\32bitsのJackRouter.iniを編集し、6chデバイスにする。その後、管理者権限のコンソールでregsvr32 JackRouter.dllしてJackRouter ASIOデバイスを登録する。
また、ASIOBridgeもデフォルトでは2chなので、タスクトレイのスピーカーを右クリック→再生デバイス→"Hi-Fi Cable Input"→構成 から5.1サラウンドを選択しておく。
(ここから先のセットアップはかなり順番にセンシティブなので、オーディオシステムの電源を入れるように順序付けて行う)
- "Jack Portaudio"を起動し、Jackサーバを常駐させる(これにより、JackRouter ASIOデバイスが使用できるようになる)
- VSTHostを起動し、適当にグラフをセットアップしてRunする - Jackが勝手に接続をセットアップしてしまうので注意
- "Jack Control"(qjackctl)を起動し、"Connect"→"Disconnect all"
- ASIOBridgeを起動し、ASIO Direct(中央のボタン)を押してキャプチャモードにし、"ASIO Device"(水色のテキスト)をクリックして"JackRouter"を選択する
- VSTHostでDevices→WaveからJackRouterを選択し、をEngine→Runする - VSTHostはASIOを使う場合Input/Outputで同じデバイスを使うのでInputは選択できなくなる
- Jack Controlでスクリーンショットのように配線する
- 再生を開始する
応用
実はJackにはネットワークオーディオ機能があるので、これを活用するとネットワーク経由でWindowsホスト上のオーディオを転送できる。セットアップが超面倒なのであまりオススメしないが。。