アンビソニックなオーディオ
このページはアンビソニックスの再生方法と、アンビソニックなオーディオデコーダーをサポートするためのオーディオプラグインインターフェースに対する変更について説明します。
アンビソニックスはマルチチャンネル形式で保存されます。それぞれのチャンネルが特定のスピーカーにマッピングされる代わりに、アンビソニックスはより全般的な方法で音場を表します。そのため、音場はリスナーの向き (つまり、VR や AR におけるユーザーの頭部の回転) に基づいて回転させることができます。また、音場はスピーカーの設定と一致する形式にデコードすることもできます。アンビソニックスは一般に 360 度のビデオとペアになっており、離れた周囲の音のためのオーディオスカイボックスとしても使用できます。
Edit > Project Settings > Audio を使用して、プロジェクトの Audio Manager Inspector ウィンドウに移動します。プロジェクト内の使用可能なデコーダーリストからアンビソニックのデコーダーを選択します。Unity 2017.1 にビルトインのデコーダーはありませんが、Google と Oculus はそれぞれ、Unity 用オーディオ SDK でデコーダーを提供します。
マルチチャンネルの WAV ファイルを、通常どおりにインポートします。オーディオクリップの Inspector ウィンドウで、新しい Ambisonic のチェックボックスを選択します。WAV ファイルは B-format で、ACN コンポーネントの順序で SN3D で正規化されている必要があります。
他のオーディオクリップと同じように、アンビソニックなオーディオクリップもオーディオソース経由で再生します。アンビソニッククリップを再生するとき、アンビソニッククリップはまず必要に応じて解凍され、アンビソニックデコーダーを通してプロジェクトで選択されたスピーカーモードに変換されます。それから、オーディオソースのエフェクトを通じて処理されます。
Audio Source プロパティーに関していくつか注意点があります。
Spatialize を無効に設定します。アンビソニックオーディオクリップを再生する場合、Spatialize はプロジェクトで選択されたアンビソニックオーディオデコーダーを通して自動的に処理されます。デコーダーは、クリップをアンビソニック形式からプロジェクトで選択したスピーカー形式に変換します。デコーダーはさらに、オーディオソースとオーディオのリスナーの位置に基づいて、このデコード操作の一部として空間化をすでに処理しています。
空間化されたオーディオソースと同様に、アンビソニックオーディオクリップではリバーブゾーンは無効になります。
プラグインを作成する場合は、まず、以下の Unity マニュアルのネイティブのオーディオプラグイン SDK とオーディオスペーシャライザー SDK に関する情報を参照し、オーディオプラグイン SDK をダウンロードしてください。
https://bitbucket.org/Unity-Technologies/nativeaudioplugins
アンビソニックオーディオデコーダーの AudioPluginInterface.h には 2 つの変更点があります。1 つめは、新しいエフェクト定義フラグ UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder です。アンビソニックデコーダーには、エフェクトの定義ビットフィールドにこの定義フラグを設定する必要があります。このフラグによって、プラグインのスキャン中に、エフェクトがアンビソニックデコーダーであることが Unity に通知され、その結果、AudioManager のアンビソニックデコーダーのリストに表示されます。
2 つめは、アンビソニックデコーダーに渡す新しい UnityAudioAmbisonicData 構造体です。これは、スペーシャライザーに渡す UnityAudioSpatializerData 構造体に非常に似ていますが、新しい ambisonicOutChannels 整数が追加されています。このフィールドは、DefaultSpeakerMode のチャンネル数に設定されます。アンビソニックデコーダーは、クリップのチャンネル数で実行するオーディオパイプラインの非常に早い段階に配置されます。ですから、ambisonicOutChannels は実際に使用する出力チャンネルの数をプラグインに通知します。
1 次アンビソニックオーディオクリップ (4 チャンネル) を再生し、スピーカーモードがステレオ (2 チャンネル) の場合、アンビソニックデコーダーのプロセスコールバックは、インとアウトのチャンネル数に対して 4 つ渡されます。ambisonicOutChannels フィールドは 2 つに設定されます。この一般的な状況では、プラグインは空間化されたデータを最初の 2 チャンネルに出力し、他の 2 チャンネルの出力はゼロです。
2017.1 の Unity のアンビソニックなソースのフレームワークは、1 次と 2 次のアンビソニックスをサポートします。プラグインインターフェースには、バイノーラルステレオ、クワッド、5.1、7.1 の出力をサポートする情報が含まれていますが、サポートのレベルは、プラグインによって決定されます。初期は、まだ、アンビソニックデコーダープラグインが 1 次アンビソニックソースとバイノーラルステレオ出力をサポートすることだけが予定されています。
現在のフレームワークには、利用可能なアンビソニック形式のいずれかに特化されるものはありません。クリップの形式がアンビソニックのデコーダープラグインの想定される形式と一致する場合は、すべてうまく作動するはずです。しかし、現在の計画では、Unity にとって好ましいアンビソニックフォーマットは、B-format で ACN コンポーネント順と SN3D の正規化を伴っているもの、としています。