音声出力デバイスの選択

サンプルのディレクトリ

/cri/pc/samples/criatomex/select_device

サンプルの解説

サウンドデバイスをアプリケーション中で選択するサンプルです。
Atomライブラリの出力音声は、初期化時に CriAtomExAsrConfig::sound_renderer_type に設定したサウンドレンダラから出力されます。
(デフォルト設定から変更していない場合、CRIATOM_SOUND_RENDERER_NATIVE から出力されます。)
PC環境では、 CRIATOM_SOUND_RENDERER_NATIVE は Windows の既定の再生デバイスにアサインされています。
そのため、デフォルト設定でライブラリを初期化した場合、アプリケーション中で再生した全ての音声が既定のデバイスから出力されます。
(ユーザーが Windows の設定を変更し、既定のサウンドデバイスを変更した場合、変更後のデバイスから音声が出力されるようになります。)
Windows の既定のデバイスを無視して、アプリケーションから出力先デバイスを明示的に指定することも可能です。
具体的には、アプリケーション中で criAtom_SetDeviceId_WASAPI 関数を実行することで、 CRIATOM_SOUND_RENDERER_NATIVE に任意のデバイスをアサインすることが可能です。
具体的な処理コードの一例を以下に示します。
main()
{
        :
    /* CRIATOM_SOUND_RENDERER_NATIVEに指定されたデバイスをアサイン */
    criAtom_SetDeviceId_WASAPI(
        CRIATOM_SOUND_RENDERER_NATIVE, device_info[app_obj->selected_device].id);
        :
}


オーディオデバイスの列挙には criAtom_EnumAudioEndpoints_WASAPI 関数で利用可能です。
criAtom_EnumAudioEndpoints_WASAPI 関数を実行することで、デバイス検出毎にその情報をコールバックで受け取ることが可能です。)
main()
{
        :
    /* オーディオデバイスの列挙 */
    criAtom_EnumAudioEndpoints_WASAPI(user_endpoint_callback, NULL);
        :
}

/* デバイス検出時に呼び出されるコールバック */
static void CRIAPI user_endpoint_callback(void *object, IMMDevice *device)
{
        :
    /* デバイスIDの取得 */
    hr = device->GetId(&device_id);

    /* デバイスIDの保存 */
    wcscpy_s(device_info[num_devices].id, MAX_DEVICE_ID_LENGTH, device_id);

    /* デバイスID領域を解放 */
    CoTaskMemFree(device_id);
        :
}

CRI Middleware logo Copyright (c) 2006-2018 CRI Middleware Co., Ltd.