いまや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などのドライバソフトウェアとして公開されているもの。普通のステレオヘッドホンに使用可能。
メールアドレスを登録することで製品コードを受け取ることができる。(製品はH5/H3/P5のいずれかを選択)
ソフトの上からではプリセットの選択しかできないものの、インストール先の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 | トラックバック(-) | コメント(-) |

9月の中旬からGoogle日本語入力の変換候補とサジェスト候補の一覧が表示されなくなって久しい。
やる気がある空いた時間を見つけることができなくてずっと放置していたけれど、解決のためにいじってみる。

Windows10のせいなのか、特殊な環境のせいなのか、といろいろ考えたけど・・・
そもそもインストールしてるものといえばVisualStudioくらいで他の常用アプリは環境移行や再構築が楽なように
インストーラとレジストリに依存しないタイプのものに限定して一つのフォルダに一元管理している。
ドライバーさえパッケージをばらして手動で入れるくらいで、どちらかといえばバニラ状態に近いという自信がある。

AppData下の3種dbファイルの削除や常駐プロセスの影響とか検証してみたけれどまったく関係がなかった。
変換候補の枠さえ表示されなくなるのがGoogle日本語入力2.19.2600.0からで、次の2.19.2680.0もダメ、
開発版の2.19.2690.100もまったくダメで2.17.2400.0に戻すと正常に表示される。
変換候補が表示されなくなった時期はちょうど2.19.2600.0が来たあたりなので環境的な問題よりは
Google日本語入力そのものの問題のほうが大きいと勝手に断定し、仕方ないので旧2.17.2400.0を常用中。

[解決法・・・というかダウングレード]
自分がとった方法なので責任は持ちませんが。
① Google日本語入力のアンインストール
② 再起動
③ 管理者権限でコマンドプロンプトを開く
④ sc delete gupdate と sc delete gupdatem を実行する(Googleの更新サービス削除)
⑤ 念のため %USERPROFILE%\LocalLow\Google\Google Japanese Input 内の boundary.db, cform.db, segment.db を削除
⑥ 下記より自分の環境に合う旧版をダウンロード&インストール
  http://dl.google.com/japanese-ime/2.17.2400.0/googlejapaneseinput32.msi
  http://dl.google.com/japanese-ime/2.17.2400.0/googlejapaneseinput64.msi
⑦ 再起動
⑧ Windowsの設定→時刻と言語→地域と言語→日本語[オプション]でGoogle日本語入力を選ぶ

これで旧版から自動更新されることなくGoogle日本語入力を使用可能。
GoogleIMEJaRenderer.exeだけ2.17.2400.0に維持しておけば最新版でも変換候補は表示されそうな気もするけど
検証と管理が面倒そうなのでパス。
新バージョンが出て全面的に解決されるまでの解決法として同じ症状に悩む方々に捧げよう。

2016.10.26 13:38 | PC | トラックバック(-) | コメント(-) |

Windows10対応のSound Blaster X-Fi MB3 1.00.06(以下SBXFIMB3)がでてからしばらくになるけれど、
使う人によってはひどいと言える不具合があるため適当にバイナリをいじって常用している。

1.00.06ではOS起動時に自動で立ち上がるときの起動オプション "/r" がつくとWindows10のFastBootを意識してのことか
とても素早くSBXFIMB3が起動する。これは前バージョンの1.00.04とは比較にならない起動速度なのだけど、
そのせいかホットキーを検出するサービスが実行されないらしく、PCを起動したあとトレイから一回引き出してあげないことには
プロファイルの切り替えをキー操作でできないという大問題が発生した。

問題といえばもう一つ、Windows10のTH2からアニバーサリーアップデートを行ったときになぜかSBXFIMB3が
1.00.04に勝手にダウングレードされていたこと。Windows10に対応してないバージョンを強制的にいれてくるとか正気なのかな…
ちなみにWindows10上での1.00.04は対応するサウンドデバイスが検出できない深刻なバグが発生する。

というわけでパッチを更新して公開したので奇特な方は是非。
なお、同梱のDLLも不具合があったため新しい物に変更済み。
[1.00.04]/[1.00.06]
・短い音の末尾が途切れる問題の修正
・起動時のスプラッシュロゴを削除
・プロファイルの切り替え通知
[1.00.06]
・自動起動時にホットキーでプロファイルが切り替わらない問題の修正

ダウンロード

2016.08.18 17:59 | プログラム | トラックバック(-) | コメント(-) |

正月早々にInputWireをこっそり更新。
マクロの処理や他ライブラリのテストベッドとしていろいろいじったので設定も互換なし。
マクロにループ機能を持たせたんだけど今日いまさらながらにコレが寝マクロ可能なことに気づいてしまった・・・
といっても寝マクロするようなタイトルを遊んでるわけでもないけど。
使い手しだいとはいえ、マクロの扱いというのは一般の方からしたらどういう位置づけなんだろうなぁ・・・

img150108_00.png
マウスの相対座標移動やループを実装した図

そもそもマザーボードメーカーであるASUSの最新ROGシリーズにはKeyBotなる専用チップを乗せていて
繋ぐキーボードに依存せずマクロ機能を与えてたり、先日さわったSonicStudioのSonicRader(これもASUS)も同様に
Direct3D(あるいはオーバーレイ?)へ音が発生した方向を表示したりと徐々に行き過ぎ感が。

img150108_01.jpg
KeyBotチップ。マクロ機能を実現する専用チップをマザーボードが搭載するという時代・・・

汎用的に使えることを目的としたInputWireもそこまでとは言わないものの余り機能を付け足してはいけないのかも。
これに指定座標カラーピックと条件分岐でもつけようものなら完全にBOT運用じゃないか。
ソフトウェアのモラルというのは作り手にあるべきなんだろうか?使い手にあるべきなんだろうか?

2015.01.08 20:25 | プログラム | トラックバック(-) | コメント(-) |