Wwise SDK 2023.1.8
|
オーディオ デバイス プラグインは、オーディオの処理チェーンの最終ポイントです。Natural AudioデバイスはOSのサウンドシステムですが、追加のハードウェアやドライバを使うことで許容される場合は、他の出力も可能です。シンクプラグインの役目は、ミックスされた最終オーディオサンプルを、デバイスが分かる形式でデバイスに転送することです。
オーディオデバイスプラグインを書くことは、サウンドエンジン側では、 AK::IAkSinkPlugin
インターフェースの実装を意味します。ここでは、これらのインターフェースに固有の関数のみがカバーされています。他のプラグインタイプと共有されるインターフェースコンポーネント( AK::IAkPlugin
インターフェース)に関する情報については、 Sound Engineプラグインの作成 を参照してください。サンプルコードは、提供のAkSink プラグインを参照してください ( サンプル ) 。
オーディオデバイスは常に、そのオーディオデバイスが使用するプラグイン(Audio Deviceシェアセット)と具体的なデバイスIDによって、特定されます。このデバイスIDはWwiseサウンドエンジンにとって特に意味はなく、プラグインの作成者が、同じ種類のデバイスが多数ある場合にそれぞれ区別できるためだけのものです。 AK::SoundEngine::Initや
AK::SoundEngine::AddOutputで使われる
AkOutputSettings::idDeviceパラメータを経由して、ゲームから送信されます。例えば、Windowsのオーディオデバイスにアクセスするオーディオデバイスプラグインからは、あるコンピュータ上で多数のWindowsデバイスを確認する可能性があります。
複数あるデバイス同士を区別する必要のないデバイスを使う場合は、このパラメータを無視します。一方、これを実装する必要がある場合は、 idDevice
パラメータが 0
の時に選択される "デフォルトデバイス"のコンセプトに、必ず対応してください。 0
を受信した時に、最初に使用できるデバイスを選択するのか、特定デバイスを指定するのかは、プラグインプログラマーの自由です。
シンクプラグインに、追加の静的な関数を登録し、利用可能なオーディオデバイスの列挙に対応させることができます。この関数の目的は、オーサリングツール上でユーザーが選択できるデバイスを表示させることと、ランタイムに AK::SoundEngine::GetDeviceList
へのコールを通してデバイスの列挙を可能にすることです。この関数はオプションです。これを実装しないと、必要に応じてプラグインがデフォルトの出力先に初期化すると予想されます。必要であれば、追加の静的関数を、プラグインパラメータ作成の関数のあとに提供してください。プラグイン作成のために提供するほかの静的関数に関する詳細は、 Sound Engineプラグインの作成 を参照してください。
以下は、MyPluginという仮想のシンクプラグイン用の、デバイス列挙の実装例です。なお、MyPluginのネームスペースにある関数やクラスは、実際のプラグイン実装用のプレースホルダです。
プラグインデバイス列挙は、Wwiseがコールし、表示するデバイスの最大数や
AkDeviceDescription
のアロケーション済みのアレイが入ります。デバイス名の長さは、最長 AK_MAX_PATH
(256文字)です。カウント数 (io_maxNumDevices
) を修正し、正しく表示されるデバイス概要の個数を示してください。提供されるデバイス概要アレイポインターがNullの場合も、表示されるデバイス概要の個数を反映するようにカウントを修正し、コールする側が out_deviceDescriptions
に適したメモリ量を割り当てられるようにします。
注釈: このサウンドエンジンの実装は、今までのオーサリングだけの、プラグインに相当する AkGetSinkPluginDevices の代わりとなるもので、デバイス列挙を、サポートされる全プラットフォームで実装し、 AK::SoundEngine::GetDeviceList を通してランタイムにコールできるようにしています。 |
注釈: このファンクションは、全プラットフォームでコンパイルされます。プラットフォーム独自のデバイス列挙に対応するには、適切なマクロ(例 AK_WIN、 AK_LINUX など)を使うべきで、実装が定義されていないプラットフォームの場合は、 AK_NotImplemented を返すべきです。 |
シンクプラグインも、ほかのプラグインと同様に、対応するオーサリングDLLが必要です。全プラグイン共通となるWwiseオーサリング側のコンポーネントの、基本的な設定については、 Authoring Plug-in Library Format を参照してください。
注釈: AkGetSinkPluginDevices は非推奨となり、デバイス列挙を実装するには、上記の サウンドエンジンコンポーネント セクションを参照してください。 |
プラグインのWwise側( オーディオプラグインのAuthoring部分の記述 )とサウンドエンジン側の部分を実装後、以下の手順でプラグインをテストできます:
AK::SoundEngine::GetIDFromString
で提供されるものです。例:
あるいは、オーディオデバイスプラグインを、 AK::SoundEngine::AddOutputと合わせて使うこともできます。
あなたのプラグインでデバイス列挙をテストするには、 AK::SoungEngine::GetDeviceList
を使います。
詳細については、以下のセクションを参照してください: