Wwiseアンビソニックスの概要
アンビソニックスパイプラインの要となるのが、バスのチャンネルコンフィギュレーションを1次、2次、3次、4次、または5次アンビソニックスに設定できることです。このバスにルーティングしたすべての非アンビソニックス信号は自動的にアンビソニックスにエンコードされ、非アンビソニックスバスにルーティングしたすべてのアンビソニックス信号は、選択済みの設定に従って自動的にデコードされます。最後にアンビソニックスバスに送られたアンビソニックス信号は、変更せずに送るか(Direct Assignment)、ゲームオブジェクトとリスナーの相対的な位置関係や向きに応じて回転したり縮小したりします(3D Spatialization)。さらに以下も可能です:
- B-formatアセットをインポートしてFuMaフォーマットで再生したり(3次まで)、AmbiXフォーマット再生したり(5次まで)できる
- Effectプラグインを使ってデコードをカスタマイズする
- Google ResonanceやAuro HeadphoneなどのEffectプラグインを使ってアンビソニックスをバイノーラルに変換する
- アンビソニックベッドを、アンビソニックス対応のオーディオデバイスに送る
- アンビソニックスバスをディスクに録音して、Wwise Recorderを使って再インポートする
- お気に入りのWwiseプラグイン*で、アンビソニックスも他のフォーマットと同様に処理する
*ただしStereo DelayとMatrix Reverbを除く。
3Dオーディオを目的とした中間的なスペーシャル表現
ブログ「 アンビソニックスを音の空間配置の仲介役として使う(VR用) 」で、音の中間的なスペーシャル表現(intermediate spatial representation)、つまり3D表現という概念を詳細に説明しています。まとめると、バス階層の上位にあるミキシングバスは、3D情報を伝達できるように設定するべきで、そうすることでヘッドフォン用に適切にバイノーラル化をしたり、スピーカー用に「ダウンミックス」(最適な用語ではありませんが)したりできるのです。特に一部プラットフォームに組み込まれた3Dオーディオ技術を有効活用するゲームでは、この点が重要です。
Wwiseはオーディオサブミックスの中間的な3D表現として、以下の3種類に対応しています:
- Audio Objects: Wwise 2021.1でObject-Basedパイプライン が導入されるまで、これはミキシング無しを意味しました。この中でObject-Basedの表現方法は、スペクトルの端の方に位置し、ミックスの中の個々のサウンドを 実際に ミックスするのではなく、単に集めているだけで、binauralizer(より広い意味では「3Dレンダラ」)によって消費されるまで、個々のサウンドのポジショニング情報を保存します。3D情報は失われないので、3Dレンダラが最適に機能します。ただしサウンドがダウンミックスされないため、従来はミキシングバスの数個あるチャンネルにEffectを適用できたのに対し、すべてのサウンドに個別に適用する必要があり、数は数百にもおよぶことがあります。
- Fixed Objects: 固定されたオブジェクト、つまりすでにスピーカーポジションが把握されているチャンネルコンフィギュレーションのこと。よく選ばれるのが7.1.4で、理由は、“height”スピーカー(耳より上)があるので上部からくる音を表現できるからです。一方、7.1.4では下部からくる音を適切に表現できません。またスピーカーと直接そろっていない音があれば、その方向性は隣接する3つのスピーカーによって伝達されますが、結果は最適ではありません。
- Ambisonics: AmbisonicsはFixed Objectsと似てチャンネル数が一定しています。ただしFixed Objectsのように特定の方向の空間的表現がほかの方向よりも優れていることはなく、回転されても不変なため、一様に ぼやけて います。この表現方法のシャープさは、アンビソニックスの次数に比例します。
アンビソニックバスにbinauralizer Effectを設定する
Master Audio Bus の下にバスを作成し、Google ResonanceやAuro Headphonesなどのアンビソニックスbinauralizer Effectを入れます。バイノーラル処理が必要なオーディオは、すべてここに送るようにします。
このバスにアンビソニックコンフィギュレーションの1つを設定します。中間的なスペーシャル表現(intermediate spatial representation)として使うのに、アンビソニック次数が高ければ高いほど良くなります。バスのコンフィギュレーションはアンビソニックスですが、このバスのOut Configは、binauralizer Effectによってステレオとなります。
「アンビソニックス」対「オーディオオブジェクト」
アンビソニックスは、binauralizerなどの3Dレンダラで活用するのに適したフォーマットです。Audio Objectとは対照的にサブミックスEffectsや3Dレンダラー自身が処理するチャンネル数が固定されていますが、方向の観点で精度がやや犠牲になります。達成される精度は、あなたが選択するチャンネル数(4~36)に直接比例します。
一方、Object-Basedパイプラインは方向性の精度について妥協を許しません。つまりどんな犠牲を伴ってでも、各オブジェクトの重要な3D情報を維持します。Audio Objectの数やそれに伴うチャンネル数を妥当な数に維持するための手段(例えばVoice Limitingなど)を検討するのは、デザイナーの責任です。
「アンビソニックス」と共に、「Audio Object」
WwiseのObject-Basedパイプラインが、アンビソニックスのように複数のチャンネルのあるAudio Objectに対応しています。つまりこの2種類の表現方法は互いに排他的ではないのです。例えばAudio Objectは方向性のレンダリングが最適化されているため、それが特にメリットの高いようなサウンドを保持するのにはAudio Objectを使い、それ以外にはアンビソニックスを使うことができます。Audio Object的な言い方をすれば、Audio Objectとして保持されないサウンドは、すべて「ベッド」行きです。ベッドを表現するのに理想的なのがアンビソニックスで、理由は前述の通りです。
Audio Objectの観点で、アンビソニックベッドを設定する
トップレベルのスペーシャル表現にはAudio Objectを使うべきですが、ベッド用には、子のアンビソニックバスを作成し、そこに送るサウンドのアンビソニックスを強制的にダウンミックスします。親バスに直接送られるサウンドはオブジェクトとして扱います。アンビソニックベッドも1つのマルチチャンネルオブジェクトとして扱います。
現時点でWwiseに同梱されるObject binauralizer Effectのソフトウェアはありません。ただ一部のプラットフォームでは、Audio Deviceレベルでオブジェクトのbinauralizationをサポートします。Windows Sonicはその1つです。Master Audio Busがその場合はAudio DeviceのAudio Objectコンフィギュレーションを継承しますが、Ambisonic Bedを、その直接の子とすることができます。
Object-BasedパイプラインにおけるAudio Deviceの役割について詳しくは Audio Objects - From the System Audio Device to the Endpoint を参照してください。
アンビソニックスで表した音は、ヘッドマウントデバイスに合わせてどう回るのか?
通常、HMD(ヘッドマウントデバイス)のヘッドトラッキングデータは、リスナーのオリエンテーション情報としてWwiseにSetListenerPosition() API経由でゲームエンジンから継続的に送信されます。音のポジショニングが3Dに設定されると、その音はゲームオブジェクトに添付されます。それがアンビソニックバスにミキシングされる際は、リスナーのオリエンテーションに対するこのゲームオブジェクトのポジションによって、エンコードする角度が決まります。このようにして、アンビソニックのダウンミックスを構成するサウンドソースは、すでにHMDに基づいて回転済みとなっています。
B-formatのソースにも、3D Spatializationを採用できます。この場合はソースを音場として捉え、ゲームオブジェクトとリスナーの相対的なオリエンテーションに基づいて、それを回転させます(下記「音場としてのアンビソニックス」参照)。
シネマティックVR
アンビソニックスの回転マトリックスをアンビソニックスドメインで計算すれば、最小限のCPUとメモリ消費で回転できます。つまり、VR用オーディオのやり取りに理想的なフォーマットなのです。例えば、まず聴覚的シーンに様々な方向からくるソースを取り入れて完成させたあとに、アンビソニックス信号にエンコードして、それをアンビソニックス対応DAW(Wwiseなど)を使ってディスクに保存します。VRデバイスで再生する瞬間に、再生エンジンがヘッドトラッキング座標を読み込み、アンビソニック信号を逆向きに回転させ、それをヘッドフォン用にバイノーラル信号にデコードまたはバーチャル化すればいいだけです。
前のセクションの説明では、回転をインタラクティブに実行しました。それ以外にも、Wwiseで非インタラクティブ系(シネマティック)コンテンツのVRを作成して、ヘッドトラッキングによる回転だけを別扱いにできます。そうするには前述のバイノーラルバーチャライザEffectを、アンビソニックバス上で Wwise Recorder Effect に置き換えればいいだけです。レコーディングされたファイルは互換性のあるFuMaファイルまたはAmbiXファイルであり、バスと同じ次数です。このファイルを360動画に組み込めば、上記手順に従ってプレイヤーが自由に音場を回転できます。
環境Effect
同じような配慮が、環境Effectに使用するAuxiliary Busにも必要です。現時点でアンビソニックスにネイティブで対応しているのは、RoomVerbとConvolution Reverbで、MatrixReverbは対応していません。フロントバックのディレイを使うかどうかに関わらず、これらのEffectをステレオや4.0ch(またはそれ以上)のバスに使ってから、アンビソニックバスにルーティングできます。2Dサウンドと同じルールに従って、出力がアンビソニックスにエンコードされます。同じことをRoomVerbでできますが、直接アンビソニックスのバスに使用することも可能です。指向性チャンネルは無相関信号(decorrelated signals)で構成され、標準的なマルチチャンネルコンフィギュレーションに似ています。高次アンビソニックスは無相関チャンネルが増えるので、処理負荷が大きくなります。品質とパフォーマンスの適切な関係を見出すために、色々と実験してみると良いでしょう。
アンビソニックパンニングとVBAPの比較
モノ音源のアンビソニックスベッドへのエンコードを、見た目の観点で行うことがあります。Wwiseで実装された3Dサウンドのデフォルトのパンニングアルゴリズムは広く使われるVBAPアルゴリズムに基づき、全体のエネルギー消費を一定に保ちつつサウンド精度を最大限にしますが、その代償として損なわれるのがエネルギースプレッドの変化です。つまり、バーチャルソースがラウドスピーカーとアラインしているとエネルギースプレッドが最小限となり、ラウドスピーカーの弧の中心(7.1chなどの2Dコンフィギュレーションの場合)や三角の中心(7.1.4chなどの3Dコンフィギュレーションの場合)で最大限となります。一方、アンビソニックスのエネルギースプレッドはソース方向やラウドスピーカーレイアウトに関わらず、常に一定です。スプレッドは次数と反比例の関係にあります。よって、1次アンビソニックスは非常にぼやけています。アンビソニックスのサブミックスは、親バス(5.1、7.1.4など)の標準コンフィギュレーションに、 全体的なアンビソニックスデコード の技を使って自動的にデコードするので、 全体的なアンビソニックスの パンニング [1] をWwiseで実装するには、3Dサウンドをアンビソニックスバスに送り、次にこのバスを、標準コンフィギュレーションの親バスに送ります。
音場としてのアンビソニック
アンビエントサウンドを実装するのに、アンビソニックスサウンドが録音でも合成でも大変よく合います。一般的にゲームの中間的なスペーシャル表現として高次アンビソニックスが使われますが、アンビエント音などには通常、低次のもので充分です。ブログ アンビソニックスで、ダイナミックなアンビエンスを実現 で、この点を詳しく解説しています。
音場の収縮
ほかのマルチチャンネルファイルと同様に、アンビソニックスを3D Spatializationで音場として使う場合に、Spreadがデフォルトの「0」のままだとモノラル点音源へと収縮してしまいます。完全に音場に囲まれたようにするには、アンビソニックサウンドに適切なAttenuation Sharesetを追加し、Spreadを100%に等しくする必要があります。
アンビソニックスで、ダイナミックなアンビエンスを実現 にて説明した通り、100%のSpreadと、 Position + Orientation 3D のSpatializationでは、アンビソニックスの音場を、エミッタとリスナーのゲームオブジェクトの相対的なオリエンテーションに基づいて回転させることで、音場とワールドが結びついている、という錯覚をもたらします。
アンビソニックスではリスナーに向かってくる波面を表現するので、音場を構成する音源が、常に離れたところにあります。このため、この表現方法を使って音場内の変換を行うのは難しいです。ただし、Spreadを使い、音場を出入りする際の効果を真似ることができます。実際に、Spreadが100%未満であれば、エミッタであるゲームオブジェクトがある方向に向けて、音場を収縮させる効果があるのは、 Spreadの効果 で説明した通りです。これはまさしくWwise Spatial AudioでRoomがルームトーンやリバーブに対応している方法です( ルームトーン 参照):
- リスナーがルームの中にいるときは、Spreadが100%に近く、ルームトーンやリバーブバスは、音場の回転に合わせたルームのオリエンテーションに紐づけられます。
- リスナーが外にいれば、Roomのゲームオブジェクトが最寄りのポータルに配置され、Spreadは50%未満となり、ポータルのApertureに依存します。このため音場を、ルームの向きに合わせて回転させながら、ポータルの位置に向かって収縮させます。リスナーが立ち去っていくと、音場はさらに収縮していき、ポータルの位置で点音源となります。