以前より度々記事に書くことのあったサウンドデバイスの切り替え問題。
「既定のデバイス」を切り替える方法では対応していないアプリで音が消えてしまったり
ハード側での切り替えではスピーカーとヘッドホンの音量を独立して設定できない問題があった。
今回はデバイス切り替え問題に決着をつけるべく、この前作ったVBRedirectをさらに発展させてこんなソフトを作ってみた。
個人的には脱EqualizerAPOに近い使い道になっているかもしれない。
副次的に切り替え以外のトリッキーな使い方もできるようになったので後半でご紹介。

img180501_01.png
OutputWire


●このソフトでできること

・既定のデバイス/通信デバイスの設定
・音量のアップ/ダウン/指定/他デバイスに揃える
・ミュートのオン/オフ/トグル
・音量のリンク(2つのデバイスの音量とミュートがシンクロする)
・出力のコピー(指定デバイスからも同時再生させる)/VSTプラグインでの加工

img180501_02.png
実装済みの動作一覧

これらをホットキーに割り当ててマクロ的に実行できるようにしようというもの。
個人的な用途のために作ったものなのでかなりニッチなものであることは否めない・・・。
VSTプラグイン対応は完全にオマケでVST3対応は面倒なのでパス。
VSTプラグインといえばEqualizerAPOでも使用できるものの、デバイスが持つAPOを上書きしないといけない上に
32bit版プラグインは使用できず、実際の動作はAudioDG.exeで行われるので設定ソフトからは波形入力されず
インジケーターが動かない問題が。

img180501_03.png
VSTプラグイン対応

自分の使い方で例を挙げよう。
スピーカー出力Aとヘッドホン出力Bを切り替えたい。ただしヘッドホン出力Bは既定の通信デバイスB2も使いたい。
そんな場合は以下のようになる。
※前回記事で扱ったVB-Cableのデバイスを使用

[Startup]
①VB-Cableを規定のデバイスにする

[スピーカー]
①VB-Cableを規定の通信デバイスにする
②Aの音量をVB-Cableの音量にコピー
③VB-CableとAの音量操作をリンクさせる
④VB-Cableへの出力をAにコピーする

[ヘッドホン]
①B2を既定の通信デバイスにする
②Bの音量をVB-Cableの音量にコピー
③VB-CableとBの音量操作をリンクさせる
④VB-Cableへの出力をBにコピーする

他にもこんな用途を考えてみる
・普通に出力を分岐させてヘッドホンとスピーカーの同時出力
・マイクから仮想デバイスへ出力コピーしてVST効果で加工、仮想録音デバイスをアプリに指定させボイスチェンジャー化
・SoundBlasterから出力コピーしてコピー先でスカウトモードを使う (出力コピーはコピー元のAPO効果を付与できる)

夢が広がるなぁ・・・
仮想デバイスや未接続な光出力デバイス、ディスプレイ側でミュートにしたHDMIサウンドなど実際に音が出ないデバイスを
経由させて普段使いのデバイスに出力コピーすることで、Sonic StudioやAcoustic Engineといった専用ソフトウェアのAPOを
上書きすることなくVST効果を乗せられる。どうしてもVSTプラグインを使いたいんだって人にも良い手段を提供できそうだ。


●このソフトの細かい仕様と制限
箇条書きで手抜きをさせてもらうけれど・・・
・StartupプロファイルはOutputWire起動時に自動実行される
・出力コピーおよび音量リンクはそれぞれ1つしか維持できない
・出力コピーは 出力デバイス→出力デバイス または 入力デバイス→出力デバイス が可能。前者が低遅延
・出力コピーはコピー元とコピー先両方のAPO効果を受ける
・音量リンクはAとBどちらがどちらでも動作は同じ
・VSTプラグインの効果は出力コピー先にしか乗らない
・VSTプラグインはプロファイル共通扱い
・VSTプラグインはOutputWireと同じbit版しか読み込めない
・VST処理は64bit版のほうが32bit版より2倍以上軽い。
・VST処理は2chプラグインであっても7.1ch出力全てに効果を乗せる
・入力と出力のチャンネル数が異なるプラグインの動作は未定義

等々。
出力コピーや音量リンクが1つなのは実装が面倒なのもあるけれどループバックが怖いから。
簡単に言うとスピーカーにマイクを近づけてハウリングが起きるのと同じで、ループが出来上がると
無限増幅でデバイスにどんな影響があるかわからない。
どうしても出力コピーを2系統使いたい場合はVBRedirectと併用する手もある。
(本当はVBRedirectを置き換えるためのソフトでもあるわけだけど・・・)


●ダウンロード
こちらからどうぞ。32bit/64bit同梱。
VBRedirectと同じく、WASAPIの自動コンバート機能を使うためWindows10でしか動かないので注意。


[2018/05/02]
いくつかのプラグインの動作不良を改善。
他にも不定期で改良していくのでページ右上のバージョンをチェックしていただければ。

img180501_04.png
お気に入りのTDR Novaの操作がまともにできるようになった。
音の成分をリアルタイムで見ながらいじれるイコライザ。知識がなくてもいじりやすいUI。ステキ。
OutputWireのVSTウィンドウはOKを押さない限り設定を保存しないので、いじりすぎて不満が出たときは
Cancelすることで以前の設定に戻すことが可能。とにかくいじって体感して覚えていくのだ。

2018.05.01 19:27 | プログラム | トラックバック(-) | コメント(-) |

今回はどんなサウンドデバイスも(とは断言できないが)バーチャルサラウンドに対応させる方法を取り上げようと思う。
後述するソフトの設定や特性上、GSX1000のような使い方になったので疑似GSX1000化とも言えるかもしれない。
ただし、手元のGSX1000実機と比べるとやはり違うのであくまでも疑似的なものだとお断りしておこう。
(Windows10の立体音響では再生デバイスがステレオと認識される問題をクリアできないのでパス)

使用するものは
・お手持ちのサウンドデバイス … ステレオであればなんでも良い。オンボードでも良い。
・VB-Cable … 7.1chと認識される仮想デバイスを追加する
・EqualizerAPO … 特定のデバイスに様々な音響効果を付与する
・HeSuVi … EqualizerAPOをサラウンド処理に特化させる
・VBRedirect (自前のソフト) … VB-Cableへの出力を他のデバイスへ転送する (記事内にダウンロードリンクあり)

流れとしては以下。
①VB-Cableのインストール
②EqualizerAPOのインストール
③HeSuViのインストール
④各設定の変更
⑤VBRedirectのインストール
⑥仕上げの設定

●注意事項
ドライバやAPO周りの変更を行うので作業は失敗を覚悟の上で自己責任で。
既にVB-Cableを使用している環境では問題が発生するので諦めること。
使用するソフトの制限からWindows10 64bit以外では動作しない
ヘッドホン用バーチャルサラウンドなのでスピーカーではイマイチ。

●構成図
上記ソフトを使用して下図のような構成に仕上げる。
img180411_09.png


①VB-Cableのインストール
VB-Cableは再生と録音にそれぞれ1つの仮想デバイスを追加するソフト。
再生側のVB-Cableに音声を流すと録音側のVB-Cableでそれを取り出すことができる。
7.1chとして認識される上にAPOも付与できるので手持ちのデバイスのチャンネル数やソフトを気にしなくていい。
ここからダウンロードしたzipファイルを解凍し、VBCABLE_Setup_x64.exeを右クリック、「管理者権限として実行」を選ぶ。
(64bit版ではなぜかインストーラーに管理者実行属性がついていないため)
インストーラー画面右下の大きな[Install Driver]ボタンを押すとインストールがはじまる。
完了すると「仕上げに再起動してね!」的なメッセージボックスが出るものの今はそのまま続ける。
解凍したファイルの中にあるVBCABLE_ControlPanel.exeを実行してメニューのOptionから48000Hzを選んでおく。
このメニューの中には遅延の設定もあり、smp数を少なくするほど遅延が小さくなっていく。
環境によって選ぶ数字が変わってくるのでよくわからない場合は触らなくていい。
たぶん録音側デバイスへPCM転送するときの遅延だと思うからいじる必要はなさそうだが・・・
img180411_10.png
「再起動後に有効になるよ!」的なメッセージが出るがスルーして次の作業へ。


②EqualizerAPOのインストール
EqualizerAPOは指定したサウンドデバイスに音響処理のためのAPOを付与する。
HeSuViを使用するので設定をいじることはないけど、OS標準ドライバで動作するサウンドデバイスの味付けに便利。
VSTプラグインが使用できるので音の加工はほぼなんでもできると言ってもいいかもしれない。
ここからダウンロードしたexeファイルを実行し、インストール画面を進めていく。
インストール先などはすべて標準のままで以下の画面まで進める。
EqualizerAPO
一覧からCABLE Input VB-Audio Virtual Cableを探してチェックマークを付ける。
既存のAPOを上書きするので他のデバイスに適用しないよう注意。Capture devicesのタブは触れなくていい。
OKを押して完了すると「設定ツールでいじれるからよろしく!」的なメッセージボックスが出るが問題ない。


③HeSuViのインストール
HeSuViはEqualizerAPOでバーチャルサラウンドを実現する設定セットのようなもの。
インストールするとEqualizerAPOの設定が上書きされる。なのでEqualizerAPOの設定を直接いじる必要がない。
HeSuViには多くのバーチャルサラウンドのインパルス応答データ(※)が収録されていて自分の好みに合わせて
選択することができる。例えばCreativeのSBXやDTS Headphone:X、Dolby Headphoneなど。
(※インパルス応答データは乱暴に言うと音の変換テーブルのようなもの)
ここからダウンロードしたexeファイルを実行し、インストール画面を進めていく。
これもインストール先は標準のままでOK。インストールが終わると勝手に設定画面が出るが、今は閉じてしまおう。


④各設定の変更
まずは一旦再起動する。
再起動後、タスクトレイのボリュームコントロールを右クリックしてメニューから再生デバイスを選択。

Playback Devices
CABLE Input(VB-Audio Virtual Cable)を「既定のデバイス」に、転送先のデバイスを「既定の通信デバイス」に設定。

7.1 Surround
更にCABLE Input(VB-Audio Virtual Cable)を選択した状態で「構成」ボタンを押し、「7.1 サラウンド」にする。
このときスピーカーの種類ごとにチェックボックスがいろいろ出てくるが、すべてチェックを入れた状態でいい。
逆に「既定の通信デバイス」となる転送先のデバイスはステレオにしないといけない。

VB-Cable Property
同項目のプロパティを開き、[詳細]タブの中の既定の形式を「16ビット、48000Hz (DVDの音質)」にしてOKしておく。
他のフォーマットでの動作テストを忘れていたので念のためVB-Cableと揃えておく。

Communication device
プロパティを閉じたあとサウンド設定の右端にある[通信]タブを選択し、「何もしない」を選ぶ。
⑤をインストールするまではまだ音は出ない。


⑤VBRedirectのインストール
このソフトはVB-Cableへの出力を「既定の通信デバイス」へ転送し、VB-Cableデバイスのボリュームコントロールを
転送先とシンクロさせる。Windowsサービスとしてバックグラウンドで動作する。
「既定の通信デバイス」を使う仕様からDiscordやSkypeからの音声はVB-Cableを通らない。
なのでバーチャルサラウンドの効果がボイスチャットに乗らず音響的に分離してくれるはず。
(この仕様はGSX1000と同じで後述の設定で音も似せることができることから冒頭で疑似GSX1000化と表現したよ)
ここからダウンロードしたファイルをどこかちゃんとした場所(例えばC:\Program Files\VBRedirectなど)に展開する。
中のInstall.batを右クリック、「管理者権限として実行」を選ぶ。これでサービスの登録は完了。
展開したファイルはそのままにすること。
VBRedirectの作成にあたってWASAPIの自動フォーマット変換を採用したためWindows10以外では動かない・・・と思う。
仮想マシンでテストはしたものの、環境によっては動作しない可能性もあるのでそのときは「猿ちぃ」などの録音から再生へ
リダイレクトするソフトで代用してほしい。



⑥仕上げの設定
⑤までインストールできた段階で音がでるようになったので、ここからバーチャルサラウンドそのものの設定をする。
HeSuViのインストール先がデフォルトのままなら
C:\Program Files\EqualizerAPO\config\HeSuVi\HeSuVi.exe を実行する。
何度も実行して調整することになると思うのでデスクトップにショートカットを作っておくといいかもしれない。

HeSuVi Setting1
左上の赤枠部分がバーチャルサラウンドの種類。いろんな機種から集めたインパルス応答データ一覧。
どれを選ぶかで聞こえ方がまるで違うのでゲームや映画を再生しつつ自分好みの設定を見つけてほしい。
個人的にはシンプルなgsx-.wavがオススメ。

HeSuVi Setting2
右上のこの部分がイコライザ。最初はバーがない空の状態なので、赤枠の[+]ボタンを押すことでバーを追加できる。
バーの下には対応する周波数が自由に設定できる。10バンドイコライザであれば画像のとおり10本のバーで
31, 62, 125, 250, 500, 1000, 2000, 4000, 8000, 16000 となる。
これらのバーを動かすことで低音を強化して迫力をあげたり足音を聞き取りやすくしたりといった音の成分ごとの
強弱を調整することができる。音楽を再生しながら一本のバーを極端に上げ下げするとその変化を感じられるはず。
注意点として一般的なPC用イコライザではバーの1刻みが1デシベルなのに対し、HeSuViのイコライザは1刻みが
0.1デシベルとなっているので他のソフトの設定を持ってくる場合は10倍にしないといけない。


●完了!
以上で全行程が完了。サラウンド対応のゲームや映画で新鮮な体験をしてみてほしい。


●再生テストやインパルス応答のあれこれ
ネット上にあふれる7.1chテストの動画はどれも実際には7.1chではないので注意。
理由は2つで1つは7.1chに対応しているブラウザがごく一部なこと。
もう1つはyoutubeなどの動画サイトは動画がアップロードされた時点で強制的にステレオに再コンバートされること。
一番確実な方法は7.1chのwavやwmaといった録音データをダウンロードしてMPC-BEなどで再生する。
(まちがってもサラウンド非対応なソフトで再生しないこと。ステレオになってしまう。)
ロジクールが公開しているサンプルでもいいけど、個人的にはLogicoolゲームソフトウェアと一緒にインストールされる
「71ChannelCheckSound.wma」が一番テストに向いていると思う。
インパルス応答についてはハード実装のバーチャルサラウンドだと必ずアナログ出力から取り込む必要があるので
オリジナルと同等とはならない可能性があったり、バーチャルサラウンド変換が条件によって動的に変化するタイプの
ものでは応答データで再現できないのであくまでも「それっぽいもの」であることを覚えておこう。


●遅延について
VB-CableやVBRedirectといった音の転送を扱うソフトにはどうしても遅延が存在する。
雑に説明するなら 水が湧き出る泉A(音の発生源) と 水を注ぎ込みたい水田B(出力先) があるとする。
AからBへ水を移すためにはバケツ(バッファ)で汲み取って移し替えるしかない。
小さなバケツだとすぐに汲み取れる(遅延小)が、頻繁にAとBを行き来しないといけないため少しでももたつくと
Bの水が枯れてしまう(音飛び)。そのため一切のリズムを崩さない高い能力が要求される。
大きなバケツだと汲み取るのにやや時間がかかる(遅延大)が、AとBを往復する数は少なくすむので
多少リズムが崩れてもBの水が枯れにくい。
VB-Cableインストール時の設定をふまえてさらに説明すると、サンプリングレートというのは1秒間に
音のデータ(サンプル=smp)をいくつ含むかという数値で、今回採用した48000Hzであれば1秒間に48000個の
データが詰まっていることになる。サンプリングレートが高いほど音を精緻に表現できるが処理するデータも
大幅に増えるので負荷が高くなる。(特にVSTプラグインが重くなる)
そしてVB-Cableの遅延設定にあったsmpはバケツに貯めこめるデータ数のことだ。
今回は48000で1秒なので、デフォルトの7168smpでは149.3ミリ秒=約9フレームの遅延。
最小の512smpだと10.6ミリ秒=1フレーム未満の遅延があることになる。(60fpsとして)

...いや、どうも文字数が多くなりがちだけどここまで読んでくれた方ありがとう&お疲れ様でした。

[2018/05/12]
VB-Cableのインストール説明に設定を追加しました。
VBRedirectのファイルを新しいものに差し替えました。
・低遅延版を同梱

2018.04.12 01:57 | PC | トラックバック(-) | コメント(-) |

自分の環境においてサウンドユニットの変遷はそこそこ頻繁なのだけれど、まるでオーディオの宗教じみた世界に
どっぷり浸かっているとかそういうわけでもなく、それでもサウンド関係の記事がやや多い。
オーディオ関係に詳しいかといえばそこまででもないし音には敏感であっても論評できるほど良い耳ではない。
今回は使用してきたサウンドユニットとあれこれ入れ替えることになった顛末、レビューほどではない簡潔な感想を
ささっと紹介したいと思う。
(ここでは「サウンドデバイス」はOS内からの認識、「サウンドユニット」は物理的な本体として表現するよ)

もともとはISAバス~PCIバスまでそんなこだわりなく適当なサウンドカードを載せてきた。
それがいつかのPCI-Eの登場でXonar DXを導入したことに端を発してあれこれとはじまってしまった・・・

①ASUS Xonar DX
ASUS Xonar DX
DAC: CS4398
DSP: AV100
FMT: 24bit/192kHz

CMediaのチップをASUS用にカスタムしたDSP AV100が乗っているカード。
Low Profileにも対応するカードでリレー(ブラケット近くの白い箱)が乗っている。
PCを起動中にカチッとリレーの音がするのが個人的に癒しだった。これのおかげなのかポップノイズは皆無。
Xonar Switchという有志のソフトを使用することでスピーカーとヘッドホンをワンキーで切り替え可能という
すこぶる便利で快適な環境になった。この切り替えはカード上のリレーで物理的に行われるため、
たとえムービー再生中やゲームプレイ中でも自由に切り替えが可能。
Dolby ProLogic IIx+Dolby Headphone のワイドな音楽再生と当時流行りだったTeamFortress2での
バーチャルサラウンドに衝撃を受けて、ここからバーチャルサラウンド+出力先スイッチングというこだわりが誕生した。


②Creative SoundBlaster Omni 5.1 Surround
SoundBlaster Omni 5.1 Surround
DAC: CS4361
DSP: CA0189-2AG
AMP: MAX97220A
FMT: 24bit/96kHz

日本人らしい事情でPCをMini-ITXへと移行した際、PCI-Eがグラフィックボードの一本のみなので
泣く泣くXonar DXから乗り換えた。
自分にとって初のUSBサウンドユニット。…が選択が悪かったかもしれない。
当時はフリーズや強制終了といったバグがありファームウェアが度々更新された問題児。
見た目はものすごくカッコイイ。今現在でも見た目だけならこれが一番好き。
ボリュームコントロールが適度な抵抗で扱いやすく、押し込むとミュートの切り替えが可能。
サウンドカードとは違って本体にこうしたインターフェースが乗ることで机上操作ができて便利だった。
ただしスピーカーに切り替えるにはヘッドホン端子を物理的に抜かないといけないため不満が。
ヘッドホン端子のみホワイトノイズが乗ったり、エフェクトを乗せない状態でもDXに比べて音が粗野だったので
最終的には手放してしまった。
Dolbyとはまた一味違うCreative独自のバーチャルサラウンドに魅了された機種でもある。


③FOSTEX PC-100USB
FOSTEX PC-100USB
DAC: PCM2704
AMP: JRC3414
FMT: 16bit/48kHz

本体上部にボリュームノブのみという非常に漢らしいUSBDAC。
Omniが切り替え不可能だと知り、OS側の"既定のデバイス"の切り替え用にもうひとつの出力先として購入。
しかし、"既定のデバイス"の切り替えはデバイスをオープンしたままになるソフトにおいて
音が消えてしまったりエラーが出たりとDXのようなスマートな切り替えには程遠かった・・・
ヘッドフォン端子は耐久性に不安があるとの書き込みが散見されるのでRCAのみで使用。
ボリュームノブはやや硬めだけどアナログな扱いなのでOS側のボリュームを固定したまま調整可能。
出力が最大16bit/48kHzとはいえかなりいい音を出す。厚みがあるのにやぼったくなく、
後述するサウンドユニットを巡った今なお、コレがいちばんいい音を出していたと思う。ゆえに手放してはいない。
APOとくっつけることでサラウンドも通せて無敵になると信じている。
価格やスペックは関係ないと思い知らせてくれた逸品。べた褒め。


④ASUS Xonar U7
ASUS Xonar U7
DAC: CS4398
DSP: CM6632A
AMP: LME49726MA
FMT: 24bit/192kHz

USBDACとしての初Xonar。出力先切り替え問題の解決を夢見て購入。
音はこれまで挙げたサウンドユニットよりさらに細いというか繊細というか解像度がめちゃくちゃ高い。
DXと同じくリレーが乗っていてポップノイズとは無縁。Xonar DXのUSB版といっても差し支えない気がする。
ボリュームジョグを押し込むとスピーカーとヘッドホンが切り替わる仕様は認識していたけど、
実際には押されるたびにOSのサウンドデバイス一覧から切り替え元デバイスが消えて切り替え先デバイスが出現、
"既定のデバイス"を付与しなおすという挙動だったためにソフトによって問題が生じた。
その苦肉の策としてEmotivaのドライバをいれることで解決したのは過去記事のとおり。
 (裏面にあるUSB1.1切り替えスイッチを使えばOS標準ドライバで切り替え問題を解決できたかもしれない)
ジョグダイヤルがとても軽く回るので、たまに切り替えでボリューム値が変わってしまうことや
ダイヤルの平たく大きな面に対し軸のつながりが心もとなく、押し込みの耐久性に不安を感じたため
結局は手放してしまった。今思えばU7で腰を落ち着けていればよかったかもしれない。
さらに手放した後にU7がSonic Studioに対応した(=バーチャルサラウンドが使える)という間の悪さが悔しい。


⑤Creative SoundBlasterX G5
Creative SoundBlasterX G5
DAC: CS4398
DSP: SB-Axx1
AMP: TI6120A2
FMT: 24bit/192kHz

U7にてバーチャルサラウンドにひもじい思いをしたためハード側で処理できるというG5を購入。
挿しっぱなしでスピーカー/ヘッドホンの切り替えもできるかな?と期待をしたものの・・・ムリでした。
Omniで感じたハード面の貧弱さを完全に解消してグレードアップしたものという感じ。
音はとても良いし専用ソフトを入れなくても最低限のドライバだけでいいのでごちゃごちゃしなくていい。
Creativeはバーチャルサラウンドの出力設定にスピーカーを選べる(定位先が違う)ので、今現在は
スピーカー出力用のスタンドアロンなバーチャルサラウンドユニットとして使用中。
ケーブル挿しっぱで切り替えできてなおかつ多チャンネルの光入力をサポートしていたらまさに完璧な
サウンドユニットになっていたのに実に惜しい。
ただ、スピーカーとヘッドホンをこれ一つで兼用しようとしない限りは目立った弱点もなく
映画、音楽、ゲーム、どんなメディアタイプもそつなくこなせる感じがとても好きだ。

⑥SENNHEISER GSX 1000
SENNHEISER GSX 1000
DAC: CX20745
DSP: ??????
AMP: CX20745
FMT: 16bit/48kHz(24bit/96kHzは2chのみ)

切り替え先としてヘッドホン専用にもう一個G5を買う気にはなれず似たようなポジションのコチラをチョイス。
リアルタイムでサラウンドをバイノーラルサウンドへとミックスできるサウンドユニット。
バーチャルサラウンドの正確さではダントツだと思う。
それほど音質が良いという印象はなかったけど、これでFPSをやっちゃうと他には戻れない。
お値段がすごいことになってるが、静電容量式タッチパネルのせいであってバイノーラルな技術は
あまり関係ないんじゃないかなぁ。
ワンタッチでスピーカー/ヘッドホンの出力切り替えができるという個人的に夢のような仕様・・・だったのに
スピーカー出力にはバーチャルサラウンドが乗らないという非道っぷり。
なので今現在ヘッドホン専用サウンドユニットとして使用中。
接続なしのスピーカー出力=疑似ミュートとしてワンタッチ切り替えできるのは地味に便利だったりする。


◎そして今は・・・
GSX1000をヘッドホン用、G5をスピーカー用としてAudioSwitcherで切り替えつつ運用中。
APO枠が自由にできるのでRealtekドライバに付属するものを切り貼りできたりとなかなかおもしろいデバイスだ。
"既定のデバイス"の切り替えなので結局は音が消える問題だけはどうしようもなかったが・・・
Acoustic Engine Liteのドライバを使ってDeviceIoControlでリダイレクトスイッチングとかも妄想中。
どちらもサラウンド入力でステレオ出力、ハード側でバーチャルサラウンド化という突き詰まったものなので
もうこれ以上は変更するつもりはなし。
気が向いたら先に紹介したPC-100USBを使ってバーチャルサラウンドな実用化を記事に起こしてみたいと思う。

2018.03.31 20:37 | PC | トラックバック(-) | コメント(-) |

いまやDVDや3D系ゲームにおいて5.1ch/7.1chのサラウンドは当たり前というすごい時代になったけれど
スペースの都合や冗長感からしっかりとスピーカーを用意してる人はさすがに少ないんじゃないだろうか。
Windows10のCreatorsUpdateからステレオ環境でも疑似的にサラウンド再生を可能にするオプションが用意されて
いよいよバーチャルサラウンドの敷居がさがってきた感じだね。
ただ、バーチャルサラウンドについてはいろいろとややこしい条件があったりで、あれこれ書いてみようと思う。
(ここでは5.1chと7.1chをまとめて7.1chと表現していくよ)

●ややこしい仕様とありがちな誤解
バーチャルサラウンドは再生ソフト(ゲーム)側の仕様とデバイス側の仕様がそれぞれマッチングしないと
うまく動作してくれない。この仕様がとてもややこしく、バーチャルサラウンドに対する誤解の元にもなっている。
なのでソフトとデバイスがどのタイプに属し、どう組み合わさるべきなのかを知ることが大事。
まずは再生ソフト(ゲーム)側の仕様をおおまかに2つ。それぞれ 強制 / 従順 タイプとしよう。

・強制的に7.1chで再生する - 強制タイプ
ソフト側がデバイスのスピーカー構成に関係なく7.1chを再生できるタイプ。
元々7.1chの音声をダウンミックスせず再生したり、設定から再生チャンネル数の指定ができたりする。
動画再生ソフトのMPC-BEや音楽再生ソフトのfoobar2000、ゲームならBattlefieldシリーズがこれに当たる。

・デバイスのスピーカー構成に従って再生する - 従順タイプ
ソフト側がデバイスのスピーカー構成にしたがって再生チャンネル数を決定するタイプ。
設定でチャンネル数の指定ができないタイプや旧DirectSoundを使ったものはよほどコレ。
多くのゲームはこのタイプで、今大人気のPUBGもこの記事を書いている時点ではこちら側。


そして次にデバイス側の仕様を2つ。それぞれ APO(2ch) / Native(7.1ch) タイプとしよう。

・APOでバーチャルサラウンド処理をする - APO(2ch)タイプ
 デバイスが2chとして認識されるにもかかわらず7.1chのサラウンドを処理できるタイプ。
 APOが音源のチャンネル数を認識して2chへと仮想化処理を行う。
 (APOは乱暴に言うとドライバの外側にくっつく音声処理部のこと)
 ドライバやハードウェアそのものは汎用的な作りでいいので多くのUSBサウンドデバイスに採用されている。
 OSの立体音響機能での仮想化や後述のバーチャルサラウンドソフトのいくつかがこれに当たる。
 最近はAPO処理でありながらも7.1chデバイスとして認識されるものが増えてきているが
 ここでは便宜上、2chデバイスとして認識されながらもAPO処理に依存するものを指す。

・ドライバ内部またはハード側でバーチャルサラウンド処理をする - Native(7.1ch)タイプ
 デバイス自体が5.1ch/7.1chとして認識され、ドライバの内部もしくはハード内部で仮想化処理をするタイプ。
 APOタイプに比べて当然ながら実装コストが高くつくのでお値段もそこそこ張ったりする。
 SoundBlasterX G5、GSX1000、Razer Surroundなどがこれに当たる。
 LogicoolのUSBヘッドセットなど、APO処理でありながらもデバイス自体は7.1chとして認識されるものもこちら側とする。

さて、ソフトとデバイスにそれぞれ2つずつのタイプを挙げたのだけれども勘のいい人は気づいたかもしれない。
スピーカー構成に依存するソフトと2chと認識されるデバイスの組み合わせ・・・
「従順タイプ & APO(2ch)タイプ」は最悪なのである。
APO(2ch)タイプはステレオと認識されるので従順タイプのソフトはその情報を元に音声フォーマットを決定する。
当然、7.1chの音声データはどうやっても出てこないので仮想化が働かない。
[ステレオ]→[バーチャルサラウンドのエフェクト]→[ステレオ]というステレオの味付けになってしまうので、
それをサラウンドだと誤解している人は相当に多いと思う。
(少なくともブログや掲示板でいろいろ見る限り)

上記の4タイプそれぞれの組み合わせは、
強制タイプ & APO(2ch)タイプ = 〇
強制タイプ & Native(7.1ch)タイプ = 〇
従順タイプ & APO(2ch)タイプ = ×
従順タイプ & Native(7.1ch)タイプ = 〇
となり、バーチャルサラウンドの動作にはスピーカー構成の設定が重要なことがお分かり頂けただろうか。
サウンドデバイスを購入する場合はNative(7.1ch)タイプであることを意識するといいかもしれない。
たとえNative(7.1ch)タイプでもスピーカー構成が7.1chに設定されているかしっかり確認しよう。

PUBGなどOpenALを使うタイトルの場合はOpenAL Softのalsoft-config.exeを使うことで出力ch数を指定できる。
デフォルトではAutoDetect(自動検出)となっているので従順タイプに属するが、7.1chと決め打ちしてしまえば
強制タイプとして振る舞いAPO(2ch)タイプでもバーチャルサラウンドが有効になる。
後述のAPO(2ch)タイプのバーチャルサラウンドを試す場合は是非設定をしてみてほしい。
(PUBGは公式FAQでステレオと明記されているが、実際に出力されるフォーマットはサラウンドになっている)

[2018/03/31追記]
Windows10 ver1709においてOSのサウンド設定を開いたりトレイのボリュームからコンテキストメニューを表示させると
再起動後に再生デバイスのスピーカー構成がステレオに戻ってしまうバグがある。
一部の環境で不安定になると囁かれたKB4090913 (KB4074588のfix版)を適用することで修正されるので
対象環境でバーチャルサラウンドを使用している方は修正プログラムが適用されているかチェックしてみよう。
バーチャルサラウンドの根幹にかかわるバグなので重要度は高いものの、適用する際は自己責任で。


●ステレオで本当に立体的に聞こえるのか
人間の聴覚は鼓膜2つのステレオなのに前後左右を聞き分けられるのはとても不思議なもので、
音が鼓膜に届くまでに頭や耳の形状の影響で変化してその差異が音での空間認識を可能にしている。
バーチャルサラウンドはこの変化を再現することで各方向から聞こえていると錯覚する音を作っている。
しかしバーチャルサラウンドが使用者の頭や耳の形なんて知りようもないわけで殆どの場合はリファレンスとなる
平均頭部模型やあるいはそれに近い基準でもってよしとする音を提供する。
なので自分の頭部形状がそれぞれのリファレンスに近いほど自然で立体的に感じられるし、そうでなければ
違和感のあるおかしな味付けの音と感じられる。
バーチャルサラウンドの良し悪しは感性や好みといった価値観以前に上記のような聴覚のマッチングが重要なので
「一概に批評できない」というか「人に良し悪しを伝える意味が多分にない」というか・・・ジレンマな部分が大きい。


●音の「上下方向」という要素
バーチャルサラウンドはあくまでも7.1ch/5.1chの環境を仮想的に表現しているわけだけど、
そもそも7.1ch/5.1chとは前後左右に展開するスピーカー群。つまり横方向の広がりを豊かにしたものにすぎない。
なのでバーチャルだろうとリアルだろうと基本的に上下を聞き分けるようにできていない。
FPSで航空機が頭上にいるように聞こえるのは録音された時点でそういう音に加工されているからだ。
先日のWindows10 CreatorsUpdateで導入された「立体音響」はまさにここに直結するもので、
これまでのバーチャルサラウンドとは違って音源の位置に上下の概念も含めることができるようになっている。
(あくまでそういう枠組みが用意されただけで上下の表現にはアプリ側の対応が必要。)
将来的にはゲーム系はこの機能を使うようになり、バーチャルサラウンドソフトも「立体音響」機能の一部として
登録して使えるようになっていくのかもしれない。それを思うととてもワクワクするよね。


●バーチャルサラウンドソフト
以下に自分が試してきたバーチャルサラウンドソフトについて触れていこうと思う。
あくまで個人の感想なので興味があれば実際に使ってみるのが一番だ。

①Windows Sonic for Headphones
surround_sonic.png

インストールタイプ: OS機能
処理タイプ: 不明、挙動はAPO(2ch)
イコライザ: なし
出力構成: ヘッドホン
遅延: なし

先に紹介したWindows10 Creatores Updateから使用できるようになった立体音響機能。
再生デバイスのプロパティから画像のように設定することでバーチャルサラウンドが利用可能になる。
このとき対象となるデバイスはスピーカー構成が強制的にステレオになるためAPO(2ch)タイプのように振る舞う。
もし構成を7.1chなどに変更した場合は立体音響が勝手にオフになる。
デバイスに付与されたAPOの効果も乗るのでバーチャルサラウンド処理が競合しないよう注意。
もっとも簡単に試せるバーチャルサラウンドでありながら、音源の背後移動もしっかり認識できるので侮れない。
バーチャルサラウンド入門はここからが無難。

②Sound Blaster X-Fi MB3
surround_sbx.png

インストールタイプ: 仮想デバイス(ch数は出力デバイスと同じになる)
処理タイプ: APO(2ch)
イコライザ: 有
出力構成: スピーカー/ヘッドホン
遅延: 体感できず

マザーボードにバンドルされているソフト。
Realtekのサウンドデバイスでしか使用できないが、ライセンスがあればどのデバイスにも使用可能。
仮想デバイス側のAPOで処理し、出力先デバイスのAPOは通らない。
設定が細かく、どんなデバイスもほぼSoundBlaster化する。
SoundBlasterシリーズはAPO処理タイプが多いので、MB3のせいでハードの存在意義が危ういとさえ思う。
バーチャルサラウンドの定位や音楽と併用したときの聞こえ方が一番好き。

③Acoustic Engine Lite
surround_blasterx.png

インストールタイプ: 仮想デバイス
処理タイプ: APO(2ch)
イコライザ: 有(設定ファイルを手動編集)
出力構成: ヘッドホン
遅延: 体感できず

SoundBlasterX H5などのドライバソフトウェアとして公開されているもの。普通のステレオヘッドホンに使用可能。
ソフトの上からではプリセットの選択しかできないものの、インストール先のXMLファイルを編集することで
プリセットを自由にいじれるため、実質的にAcoustic Engine Proとほぼ同じ設定ができる。
バーチャルサラウンド処理はMB3とは細かく違う部分があり、背後からの音はややくすぐったく感じた。
それが逆に体感アップというか臨場感につながっているようにも思う。世代的にはこちらが新しい。
設定を編集するのは多少苦労するかもしれないが、BlasterXシリーズのバーチャルサラウンドは一聴の価値あり。
(画像は英語だけど日本語版があります。)

④Razer Surround
surround_razer.png

インストールタイプ: 仮想デバイス
処理タイプ: Native(7.1)
イコライザ: 有
出力構成: ヘッドホン
遅延: 環境によってあり(※)
※環境によってはBIOS/UEFI で HPET[High Precision Event Timer] を無効化すると劇的に遅延が解消される模様

知る人ぞ知るRaze Surround。音の方向キャリブレーションが可能という本格的な仕様。
Razer Synapse経由の使用でアカウントが必要。7.1chデバイスなので再生側ソフトウェアを選ばない手軽さがある。
中身はMSIやASUS SonicFocusでお馴染みのA-Volute Nahimic。
個人的にはバーチャルサラウンドに特化しすぎていて音楽などの2ch音源をミックスするような使い方で違和感を
感じるため使用を断念。
SBX系のような自由度がない分、扱いやすく簡潔で導入の敷居も低いのでFPSに特化するならこれ一本でいいと思う。
無料で使用できるが細かい設定ができない。Razerの周辺機器を持っている場合は制限が解除される。
(画像は英語だけど日本語版があります。)

⑤Voice Meeter Banana
surround_banana.png

インストールタイプ: 仮想デバイス
処理タイプ: Native(7.1ch)
イコライザ: 有
出力構成: 不明(おそらくスピーカー)
遅延: あり

寄付ウェアの仮想ミキサー。機能制限はないので実質フリー。
出力をMixdown Aにすることでバーチャルサラウンドになる。
バーチャルサラウンド処理はミキサー側で行っているように見受けられるがNativeと分類。
設定で遅延を減らせるものの映画やゲームではどうしてもズレを感じるので録音や放送向けかな。
(ひょっとしたらASIOで遅延をなくせるかもしれない)
各チャンネルのレベルを見ることができるので、正常に7.1ch再生されているかなどチェックしやすい。
また、7.1chの音を直接ファイルに録音することもできるのでテスト音声の作成に重宝する。

⑥Dolby Headphone
surround_z300.png

インストールタイプ: USBオーディオドライバ
処理タイプ: APO(2ch)
イコライザ: 無
出力構成: ヘッドホン
遅延: なし

TurtleBeach Z300用のドライバーを使う。
このドライバにはDolby HeadphoneのAPOがくっついていて、しかもドライバそのものはOS標準のものを
使っているので、USB接続のヘッドセットやサウンドデバイスであれば使用できてしまう。
infファイルの USB\VID_10F5&PID_2110&MI_00 を自分のデバイスIDに書き換えることでインストールが可能。
(起動オプションで"ドライバー署名の強制を無効化"して入れる)
デバイスのプロパティからDolby Headphoneの切り替えができる。
ほかのバーチャルサラウンドソフトのように環境がゴテゴテしない分いいかもしれない。
ドルビーは一部で言われているようにリバーブ/エコー感が強いけど親しみやすいから好き。

⑦SPATIAL SOUND CARD
surround_spatial.png

インストールタイプ: 仮想デバイス
処理タイプ: Native(7.1ch)
イコライザ: 不明
出力構成: ヘッドホン
遅延: 不明

Steamで購入できるバーチャルサラウンドソフト。
5.1chまでの制限つきであれば無料版が存在する。(グラミー記念版なのでいずれ消える可能性あり)
おそらくDTS Headphone:Xのカスタム品と思われるが、うまくインストールできなかったので詳しいことはわからない。


●おわり
ざっとサウンドデバイスに依存しないバーチャルサラウンドソフトをあげてみました。
ほかにもSoundBlasterX 720°やMB5なども試したけれどRealtekオンリーなので割愛。
これからバーチャルサラウンドをかじってみようかなという人や、うまく動作させているか不安な人の参考になれば。

2017.05.26 01:02 | PC | トラックバック(-) | コメント(-) |