方法 : オーディオ デバイスの列挙
この例では、複数のオーディオ デバイスが存在している可能性がある場合に XAudio2 を初期化する方法を示します。GetDeviceCount メソッドおよび GetDeviceDetails メソッドを使用して、システム上で利用可能なオーディオ デバイスのプロパティを調べます。このプロセスにより、ゲームの要件に最も近いデバイスを選択することができます。受け入れ可能なデバイスが見つかったら、そのデバイス番号を CreateMasteringVoice メソッドに渡すことができます。
注意
1 つのオーディオ デバイスのみが存在する場合 (Xbox 360 の場合など) や、デフォルトのオーディオ デバイスを希望する場合は、IXAudio2::CreateMasteringVoice の DeviceIndex 引数にデフォルト値の 0 を使用します。デフォルトのオーディオ デバイスを使用するように XAudio2 を初期化する例については、「方法 : XAudio2 の初期化」を参照してください。
利用可能なオーディオ デバイスを列挙するには
XAudio2Create 関数を使用して、XAudio2 エンジンのインスタンスを作成します。
HRESULT hr;if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) ) return hr;
GetDeviceCount 関数で使用可能なオーディオ デバイスの数を調べます。
UINT32 deviceCount;
pXAudio2->GetDeviceCount(&deviceCount);
使用可能なデバイスを順に調べ、最も適切なデバイスを決めます。
オーディオ デバイスの詳細は、GetDeviceDetails 関数で取得します。この例では、確認される唯一の要件は、オーディオ デバイスが 2 チャンネル以上をサポートしていることです。
XAUDIO2_DEVICE_DETAILS deviceDetails;int preferredDevice = 0;
デバイスの出力フォーマットに加えて、それぞれの照会対象オーディオ デバイスの既定の役割を確認するには、XAUDIO2_DEVICE_DETAILS.Role で返される値を確認します。たとえば、デフォルトの通信デバイスが必要な場合は、次のコードを使用してこのデバイスを検出できます。
XAUDIO2_DEVICE_DETAILS deviceDetails;int preferredDevice = 0;
for (unsigned int i = 0; i < deviceCount; i++){ pXAudio2->GetDeviceDetails(i,&deviceDetails); if (deviceDetails.Role == DefaultCommunicationsDevice) { preferredDevice = i; break; }}
最適なデバイスが見つかると、そのインデックスが CreateMasteringVoice 関数に渡されます。
注意
希望の条件を満たすデバイスがない場合は、DeviceIndex に 0 を指定すると、既定のグローバル デバイスが使用されます。
IXAudio2MasteringVoice* pMasterVoice = NULL;
if ( FAILED(hr = pXAudio2->CreateMasteringVoice( &pMasterVoice, XAUDIO2_DEFAULT_CHANNELS, XAUDIO2_DEFAULT_SAMPLERATE, 0, preferredDevice, NULL ) ) ) return hr;
関連トピック
- XAudio2 の基本的な情報
主要な XAudio2 の概念の概要を説明します。
- 方法 : XAudio2 の初期化
XAudio2 を初期化するのに必要な最小限の手順を示します。
- 方法 : XAudio2 によるサウンドの再生
XAudio2 でサウンドを再生するために必要となる最小限の手順を示します。