ボイスプールからのボイス割り当て
- 「ダイナミックボイスアサイン」(DVA)は、サウンドに設定された優先順位に応じて、動的にボイスを割り当てる機能です。
プレーヤーハンドルはサウンドを再生するときにボイスを「ボイスプール」から取得します。
このときボイスプールにボイスが存在しなければ、現在、再生中でもっとも低い優先順位のボイスの再生を停止し、そのボイスを使用して再生します。
ボイスプールのカスタマイズ
ボイスプールのパラメーター
- ボイスプールを作成する際には、以下のようなパラメーターを指定可能です。
ボイス数(num_voices)
- ボイスプールで確保するボイスの数を指定します。
この値がボイスプール当たりの発音数上限となります。
最大チャンネル数(player_config::max_channels)
- ボイスが対応するチャンネル数の上限値です。
作成されたボイスは、ここで指定した値 「以下」 のチャンネル数の音声のみを再生可能です。
最小チャンネル数(min_channels)
- ボイスが対応するチャンネル数の下限値です。
作成されたボイスは、ここで指定した値 「以上」 のチャンネル数の音声のみを再生可能です。
- 前述の最大チャンネル数と同じ値を指定することで、特定のチャンネル数のみに対応したボイスプールを作成することも可能です。
最大サンプリングレート(player_config::max_sampling_rate)
- ボイスが対応するサンプリングレートの上限値です。
作成されたボイスは、ここで指定した値 「以下」 のサンプリングレートの音声のみを再生可能です。
- 注意
- 音声再生中にピッチを変更する場合、ピッチ変更を加味したサンプリングレートを指定する必要があります。
例えば、48kHzの音声を2倍のサンプリングレート(ピッチを+1200セント)で再生する場合、本パラメーターには 96000 を指定する必要があります。
ストリーミング再生を行うかどうか(player_config::streaming_flag)
- ボイスをストリーミング再生に使用するかどうかを指定します。
CRI_TRUE を指定した場合、作成されたボイスはメモリ再生とストリーム再生の両方に対応します。
CRI_FALSE を指定した場合、作成されたボイスはメモリ再生のみに対応します。
ストリーミング再生専用かどうか(is_streaming_only)
- ボイスをストリーミング再生用に限定するかどうかを指定します。
CRI_TRUE を指定した場合、player_config::streaming_flag に関係なく、作成されたボイスはストリーム再生にのみ使用されます。
CRI_FALSE を指定した場合、ボイスの動作は前述の player_config::streaming_flag の指定に従います。
複数ボイスプールの扱い
- ボイスプールは複数作成することが可能です。
例えば、ボイスプール1はモノラル用に100ボイス、ボイスプール2はステレオ用に20ボイス、ボイスプール3は5.1チャンネル用に4ボイス…というように、複数のボイスプールを用いてチャンネル数ごとに異なる発音数上限を設けることが可能です。
さらに細かく制御したい場合には、「 ボイスプール識別子 」をプレーヤーハンドルに指定し、使用するボイスプールを発音毎に明示的に指示することも可能です。
- ボイスプールが複数存在する場合、再生する音声に近いフォーマットのボイスが優先的に使用されます。
例えば、モノラル音声のみが再生可能なボイスプールAと、ステレオ再生可能なボイスプールBとが存在する場合、モノラル音声の再生には原則ボイスプールA内のボイスが使用されます。
(ボイスプールA内のボイスが全て使用中の場合に限り、ボイスプールB内のボイスがモノラル音声の再生に使用されます。)
- 補足:
- 再生する音声に対してどのボイスを使用するかは、チャンネル数のほか、サンプリングレートやストリーム再生の可否等を考慮してAtomライブラリが決定します。
具体的には、以下優先順位で適切なボイスプールを決定しています。
- ストリーム再生の可否
- 最大チャンネル数
- 最小チャンネル数
- サンプリングレート
- 再生可能なコーデックの数
例えば、最大96kHzに対応したメモリ再生用ボイスプールCと、最大48kHzに対応したストリーム再生可能なボイスプールDとが存在する状況で24kHzの音声をメモリ再生した場合、当該音声は原則ボイスプールC内のボイスを使用して再生されます。
(サンプリングレートよりもストリーム再生の可否の方が、ボイス選択時の判断基準として優先度が高いため。)
ボイスリミットグループ
- 基本的にはこのような仕組みですが、さらに高度な設定を行うことができます。
例えば、「銃声は同時に3音までしか再生したくない」という場合は、「ボイスリミットグループ」を使用します。
発音プライオリティ
- 「銃声グループ」というボイスリミットグループを作成し、最大発音数を3と設定します。そして様々な銃声に「銃声グループ」というボイスリミットグループを設定するとそのグループに所属するサウンドは同時に3音までしか再生できなくなります。
また、ボイスリミットグループには「先着優先」や「後着優先」などのリミットに達したときの振る舞いを設定することができます。
例えば、銃声は後着優先が向いており、後からの発音要求がもっとも古い発音を消していくことになります。
それに対してセリフなどは「先着優先」が向いており、再生中のセリフが次のセリフの再生要求によって停止してしまうことを防ぎます。