# アンビソニックオーディオデコーダーの開発

> Instructions for implementing an ambisonic decoder plug-in and registering it in Project Settings.

アンビソニックデコーダーは、アンビソニックなオーディオ形式をステレオやサラウンドなどの特定の出力形式にデコードするオーディオコンポーネントです。この形式は、プラットフォームがこれをオーバーライドしない限り、スピーカーの設定 (メニューで **Edit** > **Project Settings** > **Audio** > **Default Speaker Mode** を選択) に依存します。

Unity はアンビソニックオーディオをサポートしていますが、デフォルトではビルトインデコーダーは提供していません。代わりに、サードパーティ製のデコーダーを選択するか、独自のデコーダープラグインを使用する必要があります。

## アンビソニックオーディオデコーダープラグインの選択##set-up-an-ambisonic-audio-decoder-plug-in

[オーディオスペーシャライザー](/engine/6000.0/manual/audio/mixer-native-audio-plugin/spatializer-sdk.md)の設定と同じ方法で、アンビソニックオーディオデコーダーを設定できます。ただし、`AudioPluginInterface.h` ファイルの以下のパラメーターはアンビソニックオーディオデコーダープラグインに固有のものです。

* [`UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder`](#unityaudioeffectdefinitionflags_isambisonicdecoder) 効果定義フラグ

* [`UnityAudioAmbisonicData`](#unityaudioambisonicdata-struct) データ構造体

### UnityAudioEffectDefinitionFlags\_IsAmbisonicDecoder##unityaudioeffectdefinitionflags\_isambisonicdecoder

プラグインのスキャン段階で、`UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder` フラグは、これがアンビソニックデコーダー効果であることを Unity に通知します。プラグインをアンビソニックデコーダーとして動作させるには、効果の説明ビットフィールドにフラグを設定する必要があります。

``````
`````
definition.flags |= UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder;
`````
``````

Unity は、Project Settings ウィンドウ (メニューで **Edit** > **Project Settings** > **Audio** > **Ambisonic Decoder Plugin** を選択) で、プラグインをオプションとしてリスト表示します。

### UnityAudioAmbisonicData 構造体##unityaudioambisonicdata-struct

`UnityAudioAmbisonicData` 構造体は、Unity がスペーシャライザーに渡す [`UnityAudioSpatializerData`](/engine/6000.0/manual/audio/mixer-native-audio-plugin/spatializer-sdk.md#SpatializerMetaData) 構造体に似ており、`ambisonicOutChannels` 整数を含んでいます。

#### ambisonicOutChannels 整数##the-ambisonicoutchannels-integer

アンビソニックデコーダーは、Unity のオーディオパイプラインにおいて初期の段階で実行されるため、`ambisonicOutChannels` 変数は、Unity が使用する必要のある出力チャンネル数をプラグインに通知します。`ambisonicOutChannels` は、`DefaultSpeakerMode` のチャンネル数に自動的に設定されます。

例えば、4 つのチャンネルをもつ一次オアンビソニックオーディオクリップを再生し、スピーカーモードがステレオ (2 チャンネルのみ) の場合

* アンビソニックデコーダーのプロセスコールバックは、入出力チャンネル数に対して 4 を渡します。

* `ambisonicOutChannels` フィールドは自動的に 2 に設定されます。

* プラグインは空間化されたデータを最初の 2 チャンネルに出力し、他の 2 つのチャンネルへの出力をゼロにします。

## アンビソニックオーディオデコーダープラグインの開発手順##steps-to-develop-an-ambisonic-audio-decoder-plug-in

Unity 用の独自のアンビソニックオーディオデコーダープラグインを開発するには、以下の手順に従います。

1. [ネイティブのオーディオプラグイン SDK](/engine/6000.0/manual/audio/mixer-native-audio-plugin.md) を使用してカスタムオーディオプラグインを作成します。

2. 効果の説明ビットフィールドにフラグを設定します。

   ```
   definition.flags |= UnityAudioEffectDefinitionFlags_IsAmbisonicDecoder;
   ```

3. プラグインの設定が完了したら、ファイルをコンパイルします。任意のプラットフォームでコンパイルできることを確認してください。

4. オプションで、ファイルを .dll ファイルに変換します。

5. プラグインファイルを Unity プロジェクトの Asset フォルダーに移動します。

Unity でアンビソニックオーディオプラグインを使用する方法の詳細については、[アンビソニックオーディオ](/engine/6000.0/manual/audio/ambisonic.md)を参照してください。

## Unity アンビソニックがサポートする形式##formats-that-unity-ambisonics-support

Unity アンビソニックソースのフレームワークは、一次および二次のアンビソニックをサポートします。プラグインインターフェースには、バイノーラルステレオ、クアッド出力をサポートする情報が含まれていますが、どの出力をサポートするかはプラグインによって決定されます。

最初は、アンビソニックデコーダープラグインは一次アンビソニックソースとバイノーラルステレオ出力をサポートします。二次アンビソニックはサポートされません。

利用可能なアンビソニック形式のうち、特定のものに対する専用のフレームワークはありません。クリップの形式がアンビソニックのデコーダープラグインの想定される形式と一致する場合は、アンビソニックオーディオは問題なく作動します。Unity にとって好ましいアンビソニック形式は、B-format で ACN コンポーネント順と SN3D の正規化を伴っているものです。

## その他の情報##further-information

プラグインの開発方法については、[ネイティブオーディオプラグイン SDK](/engine/6000.0/manual/audio/mixer-native-audio-plugin.md) および[オーディオスペーシャライザー SDK](/engine/6000.0/manual/audio/mixer-native-audio-plugin/spatializer-sdk.md) を参照してください。[オーディオプラグイン SDK](https://github.com/Unity-Technologies/NativeAudioPlugins) もダウンロードする必要があります。
