CriAtomDsp API


構成

struct  CriAtomDspPitchShifterConfigTag
 ピッチシフタアタッチ用パラメーター構造体 [詳細]
struct  CriAtomDspTimeStretchConfigTag
 タイムストレッチ用パラメーター構造体 [詳細]
struct  CriAtomDspSpectraConfigTag
 スペクトラムアナライザ作成用パラメーター構造体 [詳細]

型定義

typedef CriAtomDspPitchShifterConfigTag CriAtomDspPitchShifterConfig
 ピッチシフタアタッチ用パラメーター構造体
typedef enum CriAtomDspPitchShifterParameterIdTag CriAtomDspPitchShifterParameterId
 ピッチシフタ用パラメーター
typedef CriAtomDspTimeStretchConfigTag CriAtomDspTimeStretchConfig
 タイムストレッチ用パラメーター構造体
typedef enum CriAtomDspTimeStretchParameterIdTag CriAtomDspTimeStretchParameterId
 タイムストレッチ用パラメーター
typedef CriAtomDspSpectraConfigTag CriAtomDspSpectraConfig
 スペクトラムアナライザ作成用パラメーター構造体

列挙型

enum  CriAtomDspPitchShifterParameterIdTag { CRIATOMDSP_PITCHSHIFTER_PARAM_PITCH = 0, CRIATOMDSP_PITCHSHIFTER_PARAM_FORMANT = 1, CRIATOMDSP_PITCHSHIFTER_PARAM_MODE = 2 }
 ピッチシフタ用パラメーター [詳細]
enum  CriAtomDspTimeStretchParameterIdTag { CRIATOMDSP_TIMESTRETCH_PARAM_RATIO = 0, CRIATOMDSP_TIMESTRETCH_PARAM_FRAME_TIME = 1, CRIATOMDSP_TIMESTRETCH_PARAM_QUALITY = 2 }
 タイムストレッチ用パラメーター [詳細]

関数

CriFloat32 criAtomDsp_ConvertParameterFromCent (CriFloat32 cent)
 セント値からDSPパラメーターへの変換
CriSint32 criAtomDspSpectra_CalculateWorkSize (const CriAtomDspSpectraConfig *config)
 スペクトラムアナライザ作成に必要なワーク領域サイズを計算
CriAtomDspSpectraHn criAtomDspSpectra_Create (const CriAtomDspSpectraConfig *config, void *work, CriSint32 work_size)
 スペクトラムアナライザの作成
void criAtomDspSpectra_Destroy (CriAtomDspSpectraHn spectra)
 スペクトラムアナライザの破棄
void criAtomDspSpectra_Reset (CriAtomDspSpectraHn spectra)
 スペクトラムアナライザのリセット
void criAtomDspSpectra_Process (CriAtomDspSpectraHn spectra, CriUint32 num_channels, CriUint32 num_samples, CriFloat32 *pcm[])
 スペクトラム解析
const CriFloat32 * criAtomDspSpectra_GetLevels (CriAtomDspSpectraHn spectra)
 スペクトル解析結果の取得

型定義

typedef struct CriAtomDspPitchShifterConfigTag CriAtomDspPitchShifterConfig

ピッチシフタアタッチ用パラメーター構造体

説明:
ピッチシフタDSPをアタッチする際に指定するパラメーターです。
criAtomExVoicePool_AttachPitchShifter 関数に CriAtomExDspPitchShifterConfig 構造体のメンバとして指定します。
参照:
criAtomExVoicePool_AttachPitchShifter

typedef enum CriAtomDspPitchShifterParameterIdTag CriAtomDspPitchShifterParameterId

ピッチシフタ用パラメーター

説明:
ピッチシフタDSPに指定するパラメーターです。
criAtomExPlayer_SetDspParameter 関数の param_id に指定します。
参照:
criAtomExPlayer_SetDspParameter

typedef struct CriAtomDspTimeStretchConfigTag CriAtomDspTimeStretchConfig

タイムストレッチ用パラメーター構造体

説明:
タイムストレッチDSPをアタッチする際に指定するパラメーターです。
criAtomExVoicePool_AttachDspTimeStretch 関数に CriAtomExDspTimeStretchConfig 構造体のメンバとして指定します。
参照:
criAtomExVoicePool_AttachDspTimeStretch

typedef enum CriAtomDspTimeStretchParameterIdTag CriAtomDspTimeStretchParameterId

タイムストレッチ用パラメーター

説明:
タイムストレッチDSPに指定するパラメーターです。
criAtomExPlayer_SetDspParameter 関数の param_id に指定します。
参照:
criAtomExPlayer_SetDspParameter

typedef struct CriAtomDspSpectraConfigTag CriAtomDspSpectraConfig

スペクトラムアナライザ作成用パラメーター構造体

説明:
スペクトラムアナライザをアタッチする際に指定するパラメーターです。
criAtomDspSpectra_Create 関数の引数に使用します。
参照:
criAtomDspSpectra_Create


列挙型

enum CriAtomDspPitchShifterParameterIdTag

ピッチシフタ用パラメーター

説明:
ピッチシフタDSPに指定するパラメーターです。
criAtomExPlayer_SetDspParameter 関数の param_id に指定します。
参照:
criAtomExPlayer_SetDspParameter
列挙型の値:
CRIATOMDSP_PITCHSHIFTER_PARAM_PITCH  ピッチ

説明:
ピッチシフタのピッチシフト量です。
単位はセントです。
設定可能な値の範囲は -2400 〜 2400 までです。
備考:
原音と比べて 1200 で 2倍、-1200 で 1/2倍 のピッチシフトになります。
CRIATOMDSP_PITCHSHIFTER_PARAM_FORMANT  フォルマント

説明:
ピッチシフタのフォルマントシフト量です。
単位はセントです。
設定可能な値の範囲は -2400 〜 2400 までです。
備考:
原音と比べて 1200 で 2倍、-1200 で 1/2倍 のフォルマントシフトになります。
注意:
フォルマントシフトが有効になるのはピッチシフトモードが Vocal か Speech の
場合のみです。
CRIATOMDSP_PITCHSHIFTER_PARAM_MODE  ピッチシフトモード

説明:
ピッチシフトの処理方法(アルゴリズム)を指定します。
音声によって設定を変更すると音質が向上することがあります。
下記は指定可能な値と対応するモード名です。
0: Music
1: Vocal
2: SoundEffect
3: Speech

enum CriAtomDspTimeStretchParameterIdTag

タイムストレッチ用パラメーター

説明:
タイムストレッチDSPに指定するパラメーターです。
criAtomExPlayer_SetDspParameter 関数の param_id に指定します。
参照:
criAtomExPlayer_SetDspParameter
列挙型の値:
CRIATOMDSP_TIMESTRETCH_PARAM_RATIO  ストレッチ比率

説明:
再生時間の倍率です。
元データの再生時刻に ratio を掛けた値がストレッチ結果の再生時間となります。
設定可能な値の範囲は 0.5f 〜 2.0f までです。
注意:
設定する値は再生速度ではなく「再生時間」に対する倍率です。
ストレッチの割合を再生速度で指定する場合、再生速度の倍率の逆数を設定してください。
CRIATOMDSP_TIMESTRETCH_PARAM_FRAME_TIME  フレーム時間

説明:
タイムストレッチする際のフレーム時間(単位:ミリ秒)です。
再生する音の種類によって調整することで品質を向上させられます。
設定可能な値の範囲は 10 〜 60 までです。
備考:
ボイス音声は 20msec 辺り、音楽は 50msec 辺りで良好な品質になります。
CRIATOMDSP_TIMESTRETCH_PARAM_QUALITY  処理品質

説明:
タイムストレッチ処理の品質です。
高いほど品質が上がりますが、CPU負荷とのトレードオフです。
設定可能な値の範囲は 0 〜 10 までです。
備考:
人の声は低めでも十分で、音楽をタイムストレッチする場合は、 高く設定するほど良好になります。


関数

CriFloat32 criAtomDsp_ConvertParameterFromCent ( CriFloat32  cent  ) 

セント値からDSPパラメーターへの変換

引数:
[in] cent セント値
戻り値:
CriFloat32 DSPパラメーター値
説明:
-1200〜1200の範囲を0.0f〜1.0fの範囲に正規化します。

CriSint32 criAtomDspSpectra_CalculateWorkSize ( const CriAtomDspSpectraConfig config  ) 

スペクトラムアナライザ作成に必要なワーク領域サイズを計算

引数:
[in] config スペクトラムアナライザ作成パラメーター
戻り値:
CriSint32 必要なワーク領域のサイズ(単位はバイト)
説明:
スペクトラムアナライザの作成に必要なワークサイズを計算します。
configで与えられるパラメーターに依存し、必要なワークサイズは変化します。
備考:
ワーク領域サイズの計算に失敗した場合、本関数は負値を返します。
(失敗の原因はエラーコールバックで通知されます。)
参照:
CriAtomDspSpectraConfig, criAtomDspSpectra_Create

CriAtomDspSpectraHn criAtomDspSpectra_Create ( const CriAtomDspSpectraConfig config,
void *  work,
CriSint32  work_size 
)

スペクトラムアナライザの作成

引数:
[in] config スペクトラムアナライザ作成パラメーター
[in] work ワーク領域
[in] work_size ワーク領域サイズ
戻り値:
CriAtomDspSpectraHn スペクトラムアナライザハンドル
説明:
スペクトラムアナライザを作成します。
スペクトラムアナライザは、PCMデータを解析し、 帯域ごとの信号の強さを計測するモジュールです。

PCMデータの入力には、 criAtomDspSpectra_Process 関数を使用します。
解析結果の取得には、 criAtomDspSpectra_GetLevels 関数を使用します。

不要になったスペクトラムアナライザは、 criAtomDspSpectra_Destroy 関数で明示的に破棄する必要があります。
備考:
スペクトラムアナライザの作成に失敗した場合、本関数はNULLを返します。
(失敗の原因はエラーコールバックで通知されます。)
criAtom_SetUserAllocator によるアロケーター登録を行わずに本関数を実行する場合、 criAtomDspSpectra_CalculateWorkSize 関数で計算したサイズ分のメモリをワーク領域として渡す必要があります。
注意:
本関数を実行する前に、ライブラリを初期化しておく必要があります。

本関数にセットしたワーク領域は、 criAtomDspSpectra_Destroy 関数を実行するまでの間、アプリケーションで保持する必要があります。
criAtomDspSpectra_Destroy 関数実行前に、ワーク領域のメモリを解放しないでください。)

本関数は完了復帰型の関数です。
本関数を実行すると、しばらくの間Atomライブラリのサーバー処理がブロックされます。
音声再生中に本関数を実行すると、音途切れ等の不具合が発生する可能性があるため、 本関数の呼び出しはシーンの切り替わり等、負荷変動を許容できるタイミングで行ってください。
参照:
CriAtomDspSpectraConfig, criAtomDspSpectra_CalculateWorkSize, criAtomDspSpectra_Destroy

void criAtomDspSpectra_Destroy ( CriAtomDspSpectraHn  spectra  ) 

スペクトラムアナライザの破棄

説明:
スペクトラムアナライザを破棄します。
スペクトラムアナライザ作成時に確保されたメモリ領域が解放されます。
(スペクトラムアナライザ作成時にワーク領域を渡した場合、本関数実行後であれば ワーク領域を解放可能です。)
注意:
本関数は完了復帰型の関数です。
本関数を実行すると、しばらくの間Atomライブラリのサーバー処理がブロックされます。
音声再生中に本関数を実行すると、音途切れ等の不具合が発生する可能性があるため、 本関数の呼び出しはシーンの切り替わり等、負荷変動を許容できるタイミングで行ってください。
参照:
criAtomDspSpectra_Create

void criAtomDspSpectra_Reset ( CriAtomDspSpectraHn  spectra  ) 

スペクトラムアナライザのリセット

説明:
スペクトラムアナライザをリセットします。
本関数を実行した時点で、 criAtomDspSpectra_Process 関数にセットしたPCMの情報がクリアされます。
備考:
criAtomDspSpectra_GetLevels 関数の戻り値をゼロクリアしたい場合、 本関数を実行してください。
参照:
criAtomDspSpectra_Process, criAtomDspSpectra_GetLevels

void criAtomDspSpectra_Process ( CriAtomDspSpectraHn  spectra,
CriUint32  num_channels,
CriUint32  num_samples,
CriFloat32 *  pcm[] 
)

スペクトラム解析

説明:
PCMデータを解析します。
解析結果は criAtomDspSpectra_GetLevels 関数で取得可能です。
備考:
入力するデータ列(pcm)の値は -1.0f 〜 +1.0f の範囲を想定しています。
ただ、±1の範囲を超える値を入力した場合でも、criAtomDspSpectra_GetLevels 関数が返す値が大きくなるだけなので、 データ入力時点でクリッピングを行う必要はありません。
本関数は内部で1024点のサンプルが蓄積されるのを待ってからFFT処理を行う為、 スペクトラムは1024サンプル入力毎に更新されます。
参照:
criAtomDspSpectra_GetLevels

const CriFloat32* criAtomDspSpectra_GetLevels ( CriAtomDspSpectraHn  spectra  ) 

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

説明:
criAtomDspSpectra_Process 関数でセットしたPCMデータの、解析結果を返します。

解析結果は CriFloat32 型の配列です。
配列の要素数は、 criAtomDspSpectra_Create 関数実行時に CriAtomDspSpectraConfig::num_bands で指定した数になります。
0 番目の要素が最低帯域の振幅値、 (num_bands - 1) 番目の要素が最高帯域の振幅値です。
備考:
複数チャンネルのPCMデータを解析した場合、 全てのチャンネルのPCMデータを一旦ミックスし、ミックス結果に対し解析を行います。
そのため、 criAtomDspSpectra_Process 関数に複数チャンネルの音声データをセットした場合でも、 本関数は長さは num_bands の1次元配列を返します。
注意:
criAtomDspSpectra_GetLevels 関数が返す値は、帯域ごとの振幅値です。
解析結果を市販のスペクトルアナライザのように表示させたい場合、 本関数が返す値をデシベル値に変換する必要があります。
参照:
criAtomDspSpectra_Process


CRI Middleware logo Copyright (c) 2006-2018 CRI Middleware Co., Ltd.