CRIWARE Unity Plugin Manual  Last Updated: 2024-12-05
シームレス連結再生

サンプル内容

概要

シームレス連結再生を利用した音声再生スクリプトのサンプルです。

cri4u_samples_criatom_script08_main.png

操作方法

[Play Cue]ボタンを押下すると、指定されたCueを連結再生します。
[Play Data]ボタンを押下すると、スクリプトで生成したサイン波を連結再生します。

上記それぞれのPlayボタン押下後、 [Stop] ボタンによって音声出力を停止します。

シーン情報


ミドルウェア CRI ADX (CRI Atom)
サンプル Scriptサンプル:シームレス連結再生
格納場所 /cri/unity/samples/UnityProject/Assets/Scenes/criatom/script/ScriptSample08_SeamlessSequencePlayback/Scenes
シーンファイル ScriptSample08_SeamlessSequencePlayback.unity
ADXデータのオリジナル データ:ピンボール


プログラムの解説

シームレス連結再生を利用した音声の連続再生を行うスクリプトのサンプルです。
キューまたはメモリ上に配置されたPCMデータを、継ぎ目なく連続して再生することが可能です。
本サンプルではそれぞれの再生フォーマットに対応した CriAtomExPlayer で再生しています。

シームレス連結再生スクリプトについて

CriAtomExPlayer のシームレス連結再生機能を使用した再生を行います。

シームレス連結再生は具体的な手順は以下の通りになります:

  1. プレーヤーに対して連結再生用エントリプールを作成します。
    • CriAtomExPlayer.PrepareEntryPool によって作成します。
    • このとき入力可能なデータ個数は余裕をある程度持つことを推奨いたします。
    • (PCMデータの場合) CriAtomExRawPcmVoicePool によって専用のボイスプールを作成し、 CriAtomExPlayer.SetVoicePoolIdentifier によってプレーヤーと紐づける必要があります。
    • (PCMデータの場合)また、 CriAtomExPlayer.SetFormat によって再生予定の音声フォーマットを必ず指定します。
  2. 音声を再生する前に CriAtomExPlayer に十分な音声データを入力します。
    • CriAtomExPlayer.Start 呼び出し後に即座に次のデータが要求されるので、Start呼び出し前に入力しておく必要があります。
    • (キューの場合)このとき先頭キューは CriAtomExPlayer.SetCue によって入力し、次からのデータは CriAtomExPlayer.EntryCue によって入力します。
    • (PCMデータの場合)このとき先頭キューは CriAtomExPlayer.SetData によって入力し、次からのデータは CriAtomExPlayer.EntryData によって入力します。

  3. シームレス連結再生中は適切なタイミングでデータを追加供給します。
    • (キューの場合)入力したキューの長さにもよりますが、キュー再生の場合はデータ長に余裕があるためエントリが空になったタイミングで CriAtomExPlayer.EntryCue で追加します。
    • (PCMデータの場合)アプリケーションフレームレートとAtomサーバ処理の周期によっては一度に二つのバッファが消費される場合があるため、空になり切る前に余裕をもって入力します。

注意
シームレス連結再生に使用する波形データのフォーマットは、 全て同じにする必要があります。
具体的には、以下のパラメータが同じである必要があります。
  • コーデック
  • チャンネル数
  • サンプリングレート
パラメータが異なる波形を連結しようとした場合、意図としない速度で音声データが再生されたりエラーコールバックが発生する等の問題が発生します。