Class CriAtomDspSpectra
Implements
Inherited Members
Namespace: CriWare
Assembly: CriWare.CriAtom.dll
Syntax
public class CriAtomDspSpectra : IDisposable
Constructors
CriAtomDspSpectra(in Config, IntPtr, int)
スペクトラムアナライザの作成
Declaration
public CriAtomDspSpectra(in CriAtomDspSpectra.Config config, IntPtr work = default, int workSize = 0)
Parameters
Type | Name | Description |
---|---|---|
CriAtomDspSpectra.Config | config | スペクトラムアナライザ作成パラメーター |
IntPtr | work | ワーク領域 |
int | workSize | ワーク領域サイズ |
Remarks
説明: スペクトラムアナライザを作成します。 スペクトラムアナライザは、PCMデータを解析し、 帯域ごとの信号の強さを計測するモジュールです。 PCMデータの入力には、 Process(uint, uint, float[][]) 関数を使用します。 解析結果の取得には、 GetLevels() 関数を使用します。 不要になったスペクトラムアナライザは、 Dispose() 関数で明示的に破棄する必要があります。
備考: スペクトラムアナライザの作成に失敗した場合、本関数はnullを返します。 (失敗の原因はエラーコールバックで通知されます。) SetUserAllocator(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr>, delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void>, IntPtr) によるアロケーター登録を行わずに本関数を実行する場合、 CalculateWorkSize(in Config) 関数で計算したサイズ分のメモリをワーク領域として渡す必要があります。
注意: 本関数を実行する前に、ライブラリを初期化しておく必要があります。 本関数にセットしたワーク領域は、 Dispose() 関数を実行するまでの間、アプリケーションで保持する必要があります。 ( Dispose() 関数実行前に、ワーク領域のメモリを解放しないでください。) 本関数は完了復帰型の関数です。 本関数を実行すると、しばらくの間Atomライブラリのサーバー処理がブロックされます。 音声再生中に本関数を実行すると、音途切れ等の不具合が発生する可能性があるため、 本関数の呼び出しはシーンの切り替わり等、負荷変動を許容できるタイミングで行ってください。
See Also
CriAtomDspSpectra(IntPtr, int)
デフォルト設定でのインスタンス作成
Declaration
public CriAtomDspSpectra(IntPtr work = default, int workSize = 0)
Parameters
Type | Name | Description |
---|---|---|
IntPtr | work | |
int | workSize |
Properties
NativeHandle
ネイティブハンドル
Declaration
public NativeHandleIntPtr NativeHandle { get; }
Property Value
Type | Description |
---|---|
NativeHandleIntPtr |
Methods
CalculateWorkSize(in Config)
スペクトラムアナライザ作成に必要なワーク領域サイズを計算
Declaration
public static int CalculateWorkSize(in CriAtomDspSpectra.Config config)
Parameters
Type | Name | Description |
---|---|---|
CriAtomDspSpectra.Config | config | スペクトラムアナライザ作成パラメーター |
Returns
Type | Description |
---|---|
int | 必要なワーク領域のサイズ(単位はバイト) |
Remarks
説明: スペクトラムアナライザの作成に必要なワークサイズを計算します。 configで与えられるパラメーターに依存し、必要なワークサイズは変化します。
備考: ワーク領域サイズの計算に失敗した場合、本関数は負値を返します。 (失敗の原因はエラーコールバックで通知されます。)
See Also
Dispose()
スペクトラムアナライザの破棄
Declaration
public void Dispose()
Remarks
説明: スペクトラムアナライザを破棄します。 スペクトラムアナライザ作成時に確保されたメモリ領域が解放されます。 (スペクトラムアナライザ作成時にワーク領域を渡した場合、本関数実行後であれば ワーク領域を解放可能です。)
注意: 本関数は完了復帰型の関数です。 本関数を実行すると、しばらくの間Atomライブラリのサーバー処理がブロックされます。 音声再生中に本関数を実行すると、音途切れ等の不具合が発生する可能性があるため、 本関数の呼び出しはシーンの切り替わり等、負荷変動を許容できるタイミングで行ってください。
See Also
GetLevels()
スペクトル解析結果の取得
Declaration
public IntPtr GetLevels()
Returns
Type | Description |
---|---|
IntPtr |
Remarks
説明: Process(uint, uint, float[][]) 関数でセットしたPCMデータの、解析結果を返します。 解析結果は CriFloat32 型の配列です。 配列の要素数は、 CriAtomDspSpectra(in Config, IntPtr, int) 関数実行時に CriAtomDspSpectra.Config::num_bands で指定した数になります。 0 番目の要素が最低帯域の振幅値、 (num_bands - 1) 番目の要素が最高帯域の振幅値です。
備考: 複数チャンネルのPCMデータを解析した場合、 全てのチャンネルのPCMデータを一旦ミックスし、ミックス結果に対し解析を行います。 そのため、 Process(uint, uint, float[][]) 関数に複数チャンネルの音声データをセットした場合でも、 本関数は長さは num_bands の1次元配列を返します。
注意: GetLevels() 関数が返す値は、帯域ごとの振幅値です。 解析結果を市販のスペクトルアナライザのように表示させたい場合、 本関数が返す値をデシベル値に変換する必要があります。
See Also
Process(uint, uint, float[][])
スペクトラム解析
Declaration
public void Process(uint numChannels, uint numSamples, float[][] pcm)
Parameters
Type | Name | Description |
---|---|---|
uint | numChannels | |
uint | numSamples | |
float[][] | pcm |
Remarks
説明: PCMデータを解析します。 解析結果は GetLevels() 関数で取得可能です。
備考: 入力するデータ列(pcm)の値は -1.0f ~ +1.0f の範囲を想定しています。 ただ、±1の範囲を超える値を入力した場合でも、GetLevels() 関数が返す値が大きくなるだけなので、 データ入力時点でクリッピングを行う必要はありません。 本関数は内部で1024点のサンプルが蓄積されるのを待ってからFFT処理を行う為、 スペクトラムは1024サンプル入力毎に更新されます。
See Also
Reset()
スペクトラムアナライザのリセット
Declaration
public void Reset()
Remarks
説明: スペクトラムアナライザをリセットします。 本関数を実行した時点で、 Process(uint, uint, float[][]) 関数にセットしたPCMの情報がクリアされます。
備考: GetLevels() 関数の戻り値をゼロクリアしたい場合、 本関数を実行してください。