Wwise SDK 2019.1.11
|
オーディオ デバイス プラグインは、オーディオの処理チェーンの最終ポイントです。Natural AudioデバイスはOSのサウンドシステムですが、追加のハードウェアやドライバを使うことで許容される場合は、他の出力も可能です。シンクプラグインの役目は、ミックスされた最終オーディオサンプルを、デバイスが分かる形式でデバイスに転送することです。
オーディオデバイスプラグインを書くことは、サウンドエンジン側では、 AK::IAkSinkPlugin
インターフェースの実装を意味します。ここでは、これらのインターフェースに固有の関数のみがカバーされています。他のプラグインタイプと共有されるインターフェースコンポーネント( AK::IAkPlugin
インターフェース)に関する情報については、Wwise サウンドエンジン プラグインの作り方 を参照してください。サンプルコードは、提供のAkSink プラグインを参照してください (サンプル) 。
オーディオデバイスは常に、そのオーディオデバイスが使用するプラグイン(Audio Deviceシェアセット)と具体的なデバイスIDによって、特定されます。このデバイスIDはWwiseサウンドエンジンにとって特に意味はなく、プラグインの作成者が、同じ種類のデバイスが多数ある場合にそれぞれ区別できるためだけのものです。 AK::SoundEngine::Initや
AK::SoundEngine::AddOutputで使われる
AkOutputSettings::idDeviceパラメータを経由して、ゲームから送信されます。例えば、Windowsのオーディオデバイスにアクセスするオーディオデバイスプラグインからは、あるコンピュータ上で多数のWindowsデバイスを確認する可能性があります。
複数あるデバイス同士を区別する必要のないデバイスを使う場合は、このパラメータを無視します。一方、これを実装する必要がある場合は、 idDevice
パラメータが 0
の時に選択される "デフォルトデバイス"のコンセプトに、必ず対応してください。 0を受信した時に、最初に使用できるデバイスを選択するのか、特定デバイスを指定するのかは、プラグインプログラマーの自由です。
Wwiseオーサリングアプリケーションでプラグインを使用する場合、パラメータが RTPCに対応しているかどうかに関わらず、パラメータは定期的に更新されます。これにより、Wwise 使用の必要に応じて、プラグインは非 RTPC 値の実行時の値の変更をサポートすることができます。プラグインがこれをサポートしないようにデザイン段階でするには、初期化時にパラメータ値のコピーを作成し、プラグインの存続期間を通じてこれらの値が変化しないようにする必要があります。
シンクプラグインも他のプラグインと同様に、オーサリングDLL側で対応する部分が必要です。全プラグイン共通となるWwiseオーサリング側のコンポーネントの、基本的な設定については、 Wwise プラグイン DLL の作成方法 を参照してください。また、シンクプラグインに対して、DLL: AkGetSinkPluginDevices
からエクスポートした関数を追加で設定できます。この関数の目的は、テストする時にオーサリングツールで選択できるデバイスを表示させるためで、Audio Hardware Preferences ダイアログに表示されます。この関数はオプションです。これを実装しないと、必要に応じてプラグインがデフォルトの出力先に初期化すると予想されます。
Wwiseは AkGetSinkPluginDevices
をコールして、その際にプラグインID、事前にアロケーションした OutputDeviceDescriptor
のアレイ、そしてアレイの最大サイズを提供します。デバイス名の長さは、最大 AK_MAX_OUTPUTDEVICEDESCRIPTOR
(256文字)です。カウント(io_uMaxCount
)が正しく入力された記述子の数を反映するように、修正します。
この関数をDLLからエクスポートする必要があり、通常は以下のようにDEFファイルに1行追加します:
注釈: プラグインをUnityやUnrealで見せるには、ランタイムダイナミックライブラリ(DLL、つまりdylib)を必ず作成します。これは、オーサリングDLLとは異なります。ダイナミックライブラリ 参照 |
プラグインのWwise側( effectpluginwwise)とサウンドエンジン側の部分を実装後、以下の手順でプラグインをテストできます:
AK::SoundEngine::GetIDFromString
で提供されるものです。例:
あるいは、オーディオデバイスプラグインを、 AK::SoundEngine::AddOutputと合わせて使うこともできます。
詳細については、以下のセクションを参照してください: