IIDX INFINITASの音ズレ(もしくは怪奇現象)の解決策を探る


8/5に行われたbeatmania IIDX INFINITAS(以下、INF)の大型アップデート後、「音がズレる」もしくは「音がとてつもなく遅くなる」、または「ホラー映画に出てきそうな怪奇現象のBGMになっている」なっているというツイートを見かけましたが、
これも見事に「音がズレてしまう」現象で自分もハマり、解決策を探っていましたが原因が特定できたのでとりあえず記事にまとめようと思います。

原因は「WASAPI排他モードと使用しているサウンドカードもしくはオーディオインターフェース(以下、オーディオIF)の設定によって音ズレなどの怪奇現象が発生する」ようです。
その設定とは「レイテンシー」によるものだと考えられます。

レイテンシーというのはバッファサイズからサンプルレートを割った数……と説明すると異様なまでに難しい話になるので、ざっくり言うと「サウンドデバイス内の遅延速度」とお考えください。

INFはWASAPI排他モードにおいてサウンドデバイス側にレイテンシーを求めているらしく、そのレイテンシーが比較的最小に設定されているようです。
一部のサウンドカードやオーディオIFはオーディオドライバ側でレイテンシーの設定ができる機能を持ち合わせています。
このオーディオIFのレイテンシー設定がINFで求めている最小レイテンシーを超えてしまっているため、音がずれる現象や上記の動画のような怪奇現象が発生します。

当方、UA-101というオーディオIFを使用していましたがこのデバイスを使用している限りは音がズレる現象が発生していました。
その原因を探った結果、このUA-101にある「オーディオ入出力のバッファサイズ」を最小にすることで解決しました。

これがINFで音がズレることなく再生できた設定。

そしてこれが動画で流れていた怪奇現象が発生する設定。

どうもオーディオIF側のバッファサイズが多すぎるとINFで音の処理が正確に行われず、音ズレや怪奇現象が発生するようです。

今回の大型アップデートで実装された「WASAPI排他モード」について説明しておくと、このWASAPI排他モードはWindowsのOSに内蔵されている「カーネルミキサー」を経由せず直接音を出す機能です。
カーネルミキサーは他のアプリケーションの音を集約してサウンドデバイスに送る機能で、「各アプリの音を集約する」のと「音量が大きいと自動でリミッターがかかる」等の、いわばオーディオミキサーの機能を備えています。
このカーネルミキサーを経由すると遅延が発生する他、音量が極端に大きいとリミッターがかかる等の機能により音質が変化する問題を抱えおり、INFはこのWASAPI排他モードを使用することにより遅延と音質の問題を解消することができます。

ただしこのWASAPI排他モード、遅延を無くす分いくつかのデメリットも存在しています。
カーネルミキサーは「Windows内に搭載されている音量」や「OBS Studio(以下、OBS)等のストリーミングアプリで取得できる」機能も備えています。

WASAPI排他モードは前途で話した通りカーネルミキサーを経由しません。
大型アップデート後に「音量を無視して爆音(もしくは音が小さく)になる」や、「OBSで音が拾えない」といった問題はこのカーネルミキサーが経由されていないのが原因になります。

また、サウンドカードによってはWASAPI排他モード自体に対応していないものも存在しいます。
起動時に「サウンドデバイスの作成に失敗しました」というエラーが発生し起動できなかった場合、それは使用しているサウンドデバイスがWASAPI排他モードに対応していない可能性があるためです。

上記のような問題を解決する手段としてINFには「WASAPI共有モード」が設定できるようになっています。l
このWASAPI共有モードは前途のカーネルミキサーを経由するモードであり、言ってしまうと大型アプデ前のINFと同じ挙動になります。
WASAPI排他モードで正常に動作しない場合はWASAPI共有モードを使用することで問題を解決できますが、その代償として音質・遅延が大きく影響が出る問題が発生します。

OBSで使用する場合はこのWASAPI共有モードで音を出すことができますが、同時に遅延の問題も付きまといます。
それを解決する手段としてWASAPI排他モードの音を拾うことができる「VoiceMeeter Banana」があります。

Windowsユーザにオススメの万能仮想ミキサー「VoiceMeeter Banana」が凄い
https://av.watch.impress.co.jp/docs/series/dal/1255935.html

……が、これもどうも多少なりとも遅延が発生するらしく、使用する分にはあまり推奨できないようです。

物理的な解決策としては別のサウンドデバイスにINFから出している音を入力し、その音を直接聞くというストロングスタイルがあるのですが、これは極端な話「ミキサーかオーディオIFを別で買う」ということになるので、相当の余裕が無い限りお勧めしません。