OpenAL Softが3Dオブジェクトの事前mixを即止めていた
バーチャルサラウンドシステムのサーベイ( https://docs.google.com/spreadsheets/d/1eEYCoViNcBg3adz9CUUxkMDuZRHbz74Lz6HF67yfows/edit?usp=sharing )を更新していて気付いたけど、以前OpenAL Softが実装( https://github.com/kcat/openal-soft/commit/a27e5e16523e1f6f166410e9992fc40886064eca )していた3Dオブジェクトの事前mixは翌日に即revert( https://github.com/kcat/openal-soft/commit/45d6bb58a4293c5b1ab229cea86e0ef24a2a084b )されていた。何たるタイミング。。
3Dオブジェクトの事前mixは3DオブジェクトにHRTFを適用する前に一旦仮想的なスピーカーにミックスするフローを指す。これはAstoundSound( https://www.audiokinetic.com/download/documents/AstoundSound_Technical_Overview.pdf )やAuro-Headphone(ソースが見当らなかった)が採用している。
OpenAL Softのコミットメッセージを見ると
The sound localization with virtual channel mixing was just too poor, so while
it's more costly to do per-source HRTF mixing, it's unavoidable if you want
good localization.
とされている。
事前mixの必要性
もっとも、3Dオーディオオブジェクトを無限に扱う訳には行かないので、適当なタイミングでオブジェクトをbed(通常の7.1ch出力)にmixしてしまう必要が生じる。
今のところハードウェア的に制約が有るものはそうそう無いが、Dolby Atmosでも高々128オブジェクトであり、フィルタ入りのmixは一般に16chを超えてくるとモバイルデバイスでは厳しい。
Morpheusのように専用プロセサを用意しているハードウェアやAMD TrueAudioのように各種オーディオミドルウェアにDSP機能を解放しているケースは別として、3Dオーディオエンジンはこの手の制約に対応する必要がある。
事前にリバーブ等のエフェクトを掛けたアセットを出力する機能も必要かもしれない。SEGAのRezはDreamcast版ではYAMAHA製のAICA DSPを使用したランタイムリバーブを使用していたが、PS2版ではADXされたADPCMに事前にリバーブを入れていた。同様に、カットシーン等では3Dオブジェクトを事前にfold downしておく必要が有るように思える。もちろん、VRのようにインタラクティブ性の必要なポイントでは難しいが。。