一部のAndroid端末固有の問題として、オーディオの再生開始レイテンシが大きいという問題があります。 例えばAndroidアプリケーションが音声再生を行った場合、数百ミリ秒の再生遅延が発生することがあります。 これに対して、CRI Atomライブラリでは遅延の少ない低レイテンシ再生モードを用意しています。
低レイテンシ再生モードの使用方法
効果音再生などで遅延を少なくしたい場合、ネイティブサウンドレンダラを使ってボイスプールとプレイヤーを作成します。 例えば、ボイスプールに対してネイティブサウンドレンダラを指定する場合は次のように記述します。
CriAtomExStandardVoicePoolConfig vpool_config;
criAtomExVoicePool_SetDefaultConfigForStandardVoicePool(&vpool_config);
vpool_config.player_config.max_sampling_rate = 44100;
vpool_config.player_config.sound_renderer_type = CRIATOM_SOUND_RENDERER_NATIVE;
voice_pool = criAtomExVoicePool_AllocateStandardVoicePool(&vpool_config, NULL, 0);
デフォルトのサウンドレンダラは、ソフトウェアレンダラ(CRI Atom Software Render=ASR) を使用します。 これはライブラリ内部でエフェクト処理やミキシングを行うため、再生開始までに少し時間がかかります。
ネイティブサウンドレンダラを使用した場合、ライブラリ内部でのミキシング処理などは行わずに直接 OpenSLESに音声バッファを渡して再生を開始します。そのため少ない遅延で再生を開始できます。
ネイティブサウンドレンダラの制限事項
ネイティブサウンドレンダラを使用する場合、再生データや機能に関して以下の制約が入ります。
- 音声データのサンプリングレートは44100Hz/22050Hzのみ。
- 2Dパン、ボリューム調整のみ可能。ピッチ調整やリバーブなどのエフェクト機能などは使えません。
- 最大同時発音数は28音です。(HCA-MXなどの設定などによって若干変動します)
デフォルトの ASR を使用する場合は上記のような制約はありません。[
CRIATOM_SOUND_RENDERER_ASR 指定時]
エフェクトをかけたい場合は ASR 用のボイスプールを作成し、そちらから鳴らすようにしてください。 例えば、SE再生用のボイスプールをネイティブサウンドレンダラで作成し、BGMやエフェクト付きの効果音は ASR で作成するなど、アプリケーション側で状況や用途に応じて使い分けてください。