CRIWARE Unity Plugin Manual  Last Updated: 2024-04-24
出力波形の取得

サンプル内容

概要

音声出力の波形データを取得して視覚化するスクリプトのサンプルです。

cri4u_samples_criatom_script06_main.png

操作方法

操作できる箇所はありません。

シーン情報


ミドルウェア CRI ADX (CRI Atom)
サンプル Scriptサンプル:出力波形の取得
格納場所 /cri/unity/samples/UnityProject/Assets/Scenes/criatom/script/ScriptSample06_OutputCapture/Scenes
シーンファイル ScriptSample06_OutputCapture.unity
ADXデータのオリジナル データ:音楽の簡易クロスフェード


プログラムの解説

音声出力の波形データをリアルタイムに取得して表示させるスクリプトサンプルです。
PCMデータの値がキューブのY軸位置に反映され、波形グラフの形を作ります。
再生する音楽はサンプルスクリプトに指定されており、スクリプトの実行開始時に再生されます。

波形データ取得スクリプトについて

音声出力の波形データはADXの音声出力データ解析機能により取得することができます。
スクリプトファイルWaveMeter.csではその仕方を実演しました。
具体的な手順は以下の通りになります:

  1. 適切な設定パラメータでCriAtomExOutputAnalyzerを初期化します。
    • 構造体CriAtomExOutputAnalyzer.ConfigのメンバenablePcmCaptureをtrueに、numCapturedPcmSamplesを取得したいデータの長さ(サンプル数)に指定します。
    • CriAtomExOutputAnalyzerのコンストラクタに設定済みのConfig構造体を渡して初期化します。

  2. 音声が再生される前にCriAtomExPlayerに音声データ解析モジュールをアタッチします。
    • CriAtomExOutputAnalyzer.AttachExPlayer(CriAtomExPlayer)を利用します。
    • DSPバスにアタッチすることも可能です。その場合はCriAtomExOutputAnalyzer.AttachDspBus(string busName)を利用します。
    • 再生開始後のアタッチは失敗します。

  3. 再生中にGetPcmData関数を使用して波形データを取得し、可視化します。
    • Update()などでCriAtomExOutputAnalyzer.GetPcmData(ref float[] pcmData, int channelId)を実行し、チャンネルを指定しながらPCMデータを取得します。
    • PCMデータはフロート配列として参照引数に出力されます。
    • 参照引数として渡された出力用pcmData配列の長さが(1)で設定したnumCapturedPcmSamplesを下回ると、GetPcmDataの中でメモリ空間の再確保が行われます。不要なGCを避けるために、あらかじめ長さがnumCapturedPcmSamples以上の配列を確保してください。

注意
スクリプトの実行終了時など、出力音声データ解析機能が不要になった時点に、CriAtomExOutputAnalyzer.DetachExPlayer() (DSPバスにアタッチしている場合はDetachDspBus)、CriAtomExOutputAnalyzer.Dispose()関数を順番に実行して、インスタンスを破棄してください。