CRI ADX  Last Updated: 2024-09-25 17:41 p
ボイスプール識別子

サンプルのディレクトリ

/cri/pc/samples/criatomex/voice_pool_identifier

サンプルで使用しているデータ

/cri/common/smpdata/criatomex/
  • SampleProject.acf
  • AtomCueSheet.acb
  • AtomCueSheet.awb

サンプルの解説

ボイスプールが複数存在する状況でプレーヤーが再生を行った場合、プレーヤーがどのボイスプール からボイスを取得するかは、再生時の状況によって様々に変化します。
そのため、プライオリティを設定せずに複数の音声を再生した場合、BGMを再生しているボイスが、 意図せずSEの再生によって奪い取られる…といったことが起こり得ます。
BGMやセリフ等、他の音声の発音状況に関係なく常に鳴らし続けたい音声がある場合、 それらの音声向けに専用のボイスプールを確保する必要があります。
Atom ライブラリには、この機能を実現する方法として「ボイスプール識別子」を用意しています。
ボイスプール識別子は、ボイスプールを特定するための一意の数値です。
ボイスプールを作成する際にボイスプール識別子を指定すると、そのボイスプールは識別子を知っている プレーヤーからしか参照されなくなります。
ボイスプール識別子を使用し、ボイスプールとプレーヤーを関連付ける方法は、以下のとおりです。
/* ボイスプール1の作成 */
/* ボイスプールに一意の識別子「0x1234」を設定する。 */
pool_config.identifier = 0x1234;
pool_config.num_voices = 4;
app_obj->voice_pool1 = criAtomExVoicePool_AllocateAdxVoicePool(&pool_config, NULL, 0);
/* ボイスプール2の作成 */
/* ボイスプールに一意の識別子「0x5678」を設定する。 */
pool_config.identifier = 0x5678;
pool_config.num_voices = 4;
app_obj->voice_pool2 = criAtomExVoicePool_AllocateAdxVoicePool(&pool_config, NULL, 0);
/* プレーヤー1の作成 */
app_obj->player1 = criAtomExPlayer_Create(NULL, NULL, 0);
/* プレーヤー1が参照するボイスプールを識別子「0x1234」のボイスプールのみに限定する */
criAtomExPlayer_SetVoicePoolIdentifier(app_obj->player1, 0x1234);
/* プレーヤー2の作成 */
app_obj->player2 = criAtomExPlayer_Create(NULL, NULL, 0);
/* プレーヤー2が参照するボイスプールを識別子「0x5678」のボイスプールのみに限定する */
criAtomExPlayer_SetVoicePoolIdentifier(app_obj->player2, 0x5678);
void criAtomExPlayer_SetVoicePoolIdentifier(CriAtomExPlayerHn player, CriAtomExVoicePoolIdentifier identifier)
ボイスプール識別子の指定
CriAtomExPlayerHn criAtomExPlayer_Create(const CriAtomExPlayerConfig *config, void *work, CriSint32 work_size)
AtomExPlayerの作成
#define criAtomExVoicePool_SetDefaultConfigForAdxVoicePool(p_config)
ADXボイスプール作成用コンフィグ構造体にデフォルト値をセット
Definition: cri_le_atom_ex.h:585
CriAtomExVoicePoolHn criAtomExVoicePool_AllocateAdxVoicePool(const CriAtomExAdxVoicePoolConfig *config, void *work, CriSint32 work_size)
ADXボイスプールの作成
 
上記の例では、ボイスプール1に識別子「0x1234」を、ボイスプール2に識別子「0x5678」を設定しています。
プレーヤー1には criAtomExPlayer_SetVoicePoolIdentifier 関数を使用して識別子「0x1234」を持つボイスプール からのみボイスを取得するよう指示しているため、プレーヤー1に対する再生処理は、全てボイスプール1のボイスを 使用して行われます。
(プレーヤー1でどれだけ再生処理を実行したとしても、ボイスプール2からボイスが奪い取られることはありません。)
同様に、プレーヤー2には識別子「0x5678」を持つボイスプールからのみボイスを取得するよう指示しているため、 プレーヤー2に対する再生処理は、全てボイスプール2のボイスを使用して行われます。