大量ボイス再生

サンプルのディレクトリ

/cri/pc/samples/criatomex/playback_many_voices

サンプルの解説

CRI Atomは一つのプレーヤーで大量のボイスを再生することができます。

ライブラリ初期化関数 criAtomEx_Initialize に渡す、 CriAtomExConfig 構造体の max_virtual_voices メンバーで、使用可能なボイスの最大数を設定します。
このメンバーに大きな値(100ボイス分発音させるなら100)を設定します。
#define SMP_NUM_VOICE   (100)

CriAtomExConfig atomex_config;
CriAtomExAcbHn acb_hn;
CriAtomExAdxVoicePoolConfig adxvp_config;
CriAtomExVoicePoolHn voice_pool;
CriAtomExPlayerHn player;

    /* ライブラリ設定をデフォルト値で初期化 */
    criAtomEx_SetDefaultConfig(&atomex_config);
    /* バーチャルボイス数を設定 */
    atomex_config.max_virtual_voices = SMP_NUM_VOICE;
    /* ライブラリの初期化 */
    criAtomEx_Initialize(&atomex_config, NULL, 0);

    /* ACFファイルの読み込みと登録 */
    criAtomEx_RegisterAcfFile(NULL, PATH ACF_FILE, NULL, 0);
    /* ACBファイルを読み込み、ACBハンドルを作成 */
    acb_hn = criAtomExAcb_LoadAcbFile(NULL, PATH ACB_FILE, NULL, PATH AWB_FILE, NULL, 0);

    /* ADXボイスプールの作成 */
    criAtomExVoicePool_SetDefaultConfigForAdxVoicePool(&adxvp_config);
    /* ボイス数を設定 */
    adxvp_config.num_voices = SMP_NUM_VOICE;
    /* ボイスプールの作成 */
    voice_pool = criAtomExVoicePool_AllocateAdxVoicePool(&adxvp_config, NULL, 0);

    /* プレーヤーの作成 */
    player = criAtomExPlayer_Create(NULL, NULL, 0);
    /* キューIDの指定 */
    criAtomExPlayer_SetCueId(player, acb_hn, CRI_ATOMCUESHEET_THUNDER1);
    /* 再生の開始 */
    criAtomExPlayer_Start(player);

criAtomExPlayer_Start関数を実行すると、次々とボイスを使用して発音します。 ボイスが足りなくなると古い順からボイスが停止し、再び使いまわされます。

ボイスの上限が決まっているため、データの作りに依存せず、 CPU負荷をある程度の範囲内に抑えることができます。

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