CRIWARE Unity Plugin Manual  Last Updated: 2024-04-24
CriAtomExOutputAnalyzer クラス

音声出力データ解析モジュール(プレーヤ/ソース/バス単位) [詳解]

CriAtomExOutputAnalyzer の継承関係図
CriAtomExPlayerOutputAnalyzer

クラス

struct  Config
 音声出力データ解析モジュールコンフィグ構造体 [詳解]
 

公開メンバ関数

delegate void PcmCaptureCallback (float[] dataL, float[] dataR, int numChannels, int numData)
 波形取得コールバック [詳解]
 
 CriAtomExOutputAnalyzer (Config config)
 音声出力データ解析モジュールの作成 [詳解]
 
override void Dispose ()
 出力データ解析モジュールの破棄 [詳解]
 
bool AttachExPlayer (CriAtomExPlayer player)
 AtomExプレーヤのアタッチ [詳解]
 
void DetachExPlayer ()
 AtomExプレーヤのデタッチ [詳解]
 
bool AttachDspBus (string busName)
 DSPバスのアタッチ [詳解]
 
void DetachDspBus ()
 DSPバスのデタッチ [詳解]
 
float GetRms (int channel)
 アタッチ中の音声出力のRMSレベルの取得 [詳解]
 
void GetSpectrumLevels (ref float[] levels)
 スペクトル解析結果の取得 [詳解]
 
void GetPcmData (ref float[] data, int ch)
 アタッチ中の音声出力の波形データの取得 [詳解]
 
void SetPcmCaptureCallback (PcmCaptureCallback callback)
 波形データ取得コールバックの登録 [詳解]
 
void ExecutePcmCaptureCallback ()
 波形データ取得コールバックの実行 [詳解]
 
void ExecutePcmCaptureCallback (PcmCaptureCallback callback)
 

公開変数類

const int MaximumSpectrumBands = 512
 スペクトラムアナライザの最大バンド数 [詳解]
 

詳解

音声出力データ解析モジュール(プレーヤ/ソース/バス単位)

説明:
CriAtomSource/CriAtomExPlayerごと、またはバスごとの音声出力の解析を行います。
レベルメータ機能などを提供します。
注意:
CriAtomSource/CriAtomExPlayerにアタッチする場合、HCA-MXやプラットフォーム固有の 音声圧縮コーデックを使用している場合は解析できません。
HCAもしくはADXコーデックをご利用ください。

構築子と解体子

CriAtomExOutputAnalyzer ( Config  config)
inline

音声出力データ解析モジュールの作成

戻り値
音声出力データ解析モジュール
説明:
出力音声データの解析モジュールを作成します。
作成した解析モジュールは、CriAtomSourceまたはCriAtomExPlayer、またはバスにアタッチして使用します。
アタッチしている音声出力に対し、レベルメータなどの解析を行います。
// 解析モジュールの作成例
// コンフィグでSpectrumAnalyzerを有効にし、バンド数を指定
CriAtomExOutputAnalyzer.Config config = new CriAtomExOutputAnalyzer.Config();
config.enableSpectrumAnalyzer = true;
config.numSpectrumAnalyzerBands = 16;
// 出力データ解析モジュールを作成
this.analyzer = new CriAtomExOutputAnalyzer(config);
備考:
解析モジュールにアタッチ可能なCriAtomSource/CriAtomExPlayer/バスは一つのみです。
解析モジュールを使いまわす場合は、デタッチを行ってください。
注意:
音声出力データ解析モジュールの作成時には、アンマネージドなリソースが確保されます。
解析モジュールが不要になった際は、必ず CriAtomExOutputAnalyzer.Dispose メソッドを呼んでください。

関数詳解

delegate void PcmCaptureCallback ( float[]  dataL,
float[]  dataR,
int  numChannels,
int  numData 
)

波形取得コールバック

説明:
出力される波形データを取得するためのコールバックです。
override void Dispose ( )
inline

出力データ解析モジュールの破棄

説明:
出力データ解析モジュールを破棄します。
本関数を実行した時点で、出力データ解析モジュール作成時にプラグイン内で確保されたリソースが全て解放されます。
メモリリークを防ぐため、出力データ解析モジュールが不要になった時点で本メソッドを呼び出してください。
注意:
本関数は完了復帰型の関数です。
アタッチ済みのAtomExプレーヤがある場合、本関数内でデタッチが行われます。
対象のAtomExプレーヤが再生中の音声は強制的に停止しますのでご注意ください。
参照
CriAtomExOutputAnalyzer::CriAtomExOutputAnalyzer
bool AttachExPlayer ( CriAtomExPlayer  player)
inline

AtomExプレーヤのアタッチ

戻り値
アタッチが成功したかどうか(成功:True、失敗:False)
説明:
出力データ解析を行うAtomExプレーヤをアタッチします。
複数のAtomExプレーヤをアタッチすることは出来ません。 アタッチ中に別のAtomExプレーヤをアタッチした場合、アタッチ中のAtomExプレーヤはデタッチされます。

CriAtomSourceをアタッチする場合、CriAtomSource::AttachToOutputAnalyzerを使用してください。
注意:
アタッチは再生開始前に行う必要があります。再生開始後のアタッチは失敗します。

本関数でアタッチしたAtomExプレーヤをデタッチする前に破棄した場合、 デタッチ時にアクセス違反が発生します。
必ず先にデタッチを行ってからAtomExプレーヤを破棄してください。
参照
CriAtomExOutputAnalyzer::DetachExPlayer, CriAtomSource::AttachToOutputAnalyzer
void DetachExPlayer ( )
inline

AtomExプレーヤのデタッチ

説明:
出力データ解析を行うAtomExプレーヤをデタッチします。
デタッチを行うと、以降の解析処理は行われなくなります。
注意:
アタッチ済みのプレーヤが音声を再生している状態で本関数を呼び出した場合、 強制的に再生を停止した上でデタッチが行われます。

アタッチしたAtomExプレーヤが既に破棄されていた場合はアクセス違反が発生します。
必ず本関数、またはCriAtomExOutputAnalyzer::Disposeを呼び出してから、 AtomExプレーヤを破棄するようにしてください。
参照
CriAtomExOutputAnalyzer::AttachExPlayer, CriAtomExOutputAnalyzer::Dispose
bool AttachDspBus ( string  busName)
inline

DSPバスのアタッチ

戻り値
アタッチが成功したかどうか(成功:True、失敗:False)
説明:
出力データ解析を行うDSPバスをアタッチします。
複数のDSPバスをアタッチすることは出来ません。 アタッチ中に別のDSPバスをアタッチした場合、アタッチ中のDSPバスはデタッチされます。
参照
CriAtomExOutputAnalyzer::DetachDspBus
void DetachDspBus ( )
inline

DSPバスのデタッチ

説明:
出力データ解析を行うDSPバスをデタッチします。
デタッチを行うと、以降の解析処理は行われなくなります。
参照
CriAtomExOutputAnalyzer::AttachDspBus, CriAtomExOutputAnalyzer::Dispose
float GetRms ( int  channel)
inline

アタッチ中の音声出力のRMSレベルの取得

引数
channelチャンネル番号
戻り値
RMSレベル
説明:
アタッチ中の音声出力のRMSレベルを取得します。
本機能を利用する場合、ConfigのenableLevelmeterにTrueを指定してモジュールを作成してください。
参照
CriAtomExOutputAnalyzer::AttachExPlayer, CriAtomExOutputAnalyzer::AttachDspBus
void GetSpectrumLevels ( ref float[]  levels)
inline

スペクトル解析結果の取得

引数
levels解析結果(帯域毎の振幅値)
説明:
スペクトラムアナライザによって解析された帯域ごとの振幅値を取得します。
配列の要素数はモジュールの作成時に指定したバンド数です。
本機能を利用する場合、ConfigのenableSpectrumAnalyzerにTrueを、numSpectrumAnalyzerBandsに MaximumSpectrumBands以下の正数を指定してモジュールを作成してください。 解析結果を市販のスペクトルアナライザのように表示させたい場合、 本関数が返す値をデシベル値に変換する必要があります。
例:
// 例:スペクトル解析結果を取得するコンポーネント
public class SpectrumLevelMeter : MonoBehaviour {
private CriAtomExOutputAnalyzer analyzer;
void Start() {
// 引数 config については省略。モジュールの作成時に指定したバンド数は 8 とする
this.analyzer = new CriAtomExOutputAnalyzer(config);
// CriAtomExPlayer のアタッチについては省略
}
void Update() {
// 音声再生中の実行
float[] levels = new float[8];
analyzer.GetSpectrumLevels (ref levels);
// levelsの0帯域目の振幅値をデシベル値に変換
float db = 20.0f * Mathf.Log10(levels[0]);
Debug.Log (db);
}
}
参照
CriAtomExOutputAnalyzer::AttachExPlayer, CriAtomExOutputAnalyzer::AttachDspBus
void GetPcmData ( ref float[]  data,
int  ch 
)
inline

アタッチ中の音声出力の波形データの取得

引数
data出力データ
chチャンネル
説明:
アタッチ中の音声出力の波形データを取得します。
本機能を利用する場合、ConfigのenablePcmCaptureにTrueを、numCapturedPcmSamplesに 正数を指定してモジュールを作成してください。
注意:
引数の配列の長さが十分でない場合、関数内で配列の確保が行われます。
不要なGCの発生を避けるため、初期化コンフィグで指定したデータサンプル数以上の 長さの配列を引数に渡すようにしてください。 現状、取得可能なチャンネルはL/Rのみです。chには0か1を指定してください。
参照
CriAtomExOutputAnalyzer::AttachExPlayer, CriAtomExOutputAnalyzer::AttachDspBus
void SetPcmCaptureCallback ( PcmCaptureCallback  callback)
inline

波形データ取得コールバックの登録

説明:
出力データ取得用のコールバックを登録します。
コールバックによる波形データ取得を利用する場合、ExecutePcmCaptureCallbackの呼び出し前に 本関数によりコールバックの登録を行ってください。
void ExecutePcmCaptureCallback ( )
inline

波形データ取得コールバックの実行

説明:
出力データ取得用のコールバックを実効します。
本関数を呼び出すと、最後の実行時からの出力差分データを引数とするコールバックが 複数回呼び出されます。
注意:
コールバックによる波形データ取得を利用する場合、本関数を定期的に呼び出してください。
本関数が長時間呼び出されなかった場合、取得可能な波形データに欠落が生じます。
void ExecutePcmCaptureCallback ( PcmCaptureCallback  callback)
inline
非推奨:
削除予定の非推奨APIです。 SetPcmCaptureCallback(PcmCaptureCallback)ExecutePcmCaptureCallback()の使用を検討してください。

メンバ詳解

const int MaximumSpectrumBands = 512

スペクトラムアナライザの最大バンド数

説明:
スペクトラムアナライザが出力できるバンド数の最大値です。

このクラス詳解は次のファイルから抽出されました: