CRI ADX  Last Updated: 2024-03-21 14:32 p
CriAtomExAsr/CriAtomAsrについて
CriAtomExAsr/CriAtomAsr は ASR(Atom Sound Renderer)にアクセスするためのAPIです。
ASR(Atom Sound Renderer)はソフトウェア実装のサウンドレンダラモジュールです。 マルチチャンネルミキシング、リサンプリング、フィルタ、エンベロープ、 バスセンドルーティング、リバーブやエコーといったDSPエフェクト等の機能を有し、 柔軟で強力なサウンドレンダリングを実現します。
ASRは以下のサブモジュールを持っています。

ASRボイス

デコーダーから受け取ったPCMデータに対し、ボイスの信号処理を行った後ASRバスへの出力を行うモジュールです。
ボイスプールで確保されるボイスの内部モジュールです。
モジュール機能
  • プリディレイ
    再生リクエストしてから実際に再生されるまでのディレイを制御します。
  • リサンプリング
    レンダラーと異なるサンプリング周波数の音声が入力されたとき、合うようにサンプリング周波数を変換します。
    また、ピッチパラメーターが指定された際にも使用されます。
  • インサーションDSP
    タイムストレッチ等のエフェクトを追加することができます。
  • バイクワッドフィルタ
    フィルタタイプを選ぶことができるイコライジング用途のフィルタです。
  • バンドバスフィルタ
    カットオフ周波数を低域と高域に指定することができるフィルタです。
  • エンベロープコントローラー
    Attack,Hold,Decay,Sustain,Releaseといったエンベロープを制御します。
  • チャンネルストリップ
    複数のバスへPCMデータを出力します。
使用方法
CriAtomExVoicePoolHnCriAtomPlayerHn を作成する際、コンフィグの sound_renderer_type に CRIATOM_SOUND_RENDERER_ASR を指定することで内部でASRボイスが作成されます。
API
ASRボイスに直接アクセスするためのAPIは存在しません。
基本的には CriAtomExPlayer APICriAtomExPlayback API を経由して行います。

ASRバス

複数のASRボイスやASRバスから音声信号を入力しサブミックスを行います。
その後、そのサブミックスの結果に対しDSPエフェクト処理を実行します。
最後にチャンネルストリップとバスセンドルーターに従い、他のバスへ音声信号を出力します。
モジュール機能
  • サブミキサー
    ASRボイスや別のASRバスから送られてきたPCMデータをミックスします。
  • DSPエフェクトチェーン
    最大8個までのDSPエフェクトを実行します。
  • チャンネルストリップ
    複数のバスへPCMデータを出力します。
  • レベル解析器
    バスを通る音声のピークとRMSを計測します。
使用方法
criAtomEx_AttachDspBusSetting を呼ぶことでまとめて作成されます。
API
ASRバスにアクセスするためのAPIは以下の通りです。
criAtomExAsr_SetBusVolume ASRバスのボリュームの設定
criAtomExAsr_SetBusMatrix ASRバスのレベル行列の設定
criAtomExAsr_SetBusSendLevel ASRバスのセンドレベルの設定

DSPエフェクト

サウンドに対して様々なエフェクトを掛けることができるモジュールです。
ASRバスに8個まで取り付けることができます。
ASRが使用できるDSPエフェクトは以下の通りです。
使用方法
criAtomEx_AttachDspBusSetting を呼ぶことでまとめて作成されます。
API
DSPエフェクトにアクセスするためのAPIは以下の通りです。
criAtomExAsr_SetDspParameter DSPパラメーター設定
criAtomExAsr_SetDspBypass DSPバイパス設定

ASRラック

ASRバスを保持するモジュールです。
0番バスの結果をプラットフォームのオーディオポート、もしくは別のASRラックへ出力します。
使用方法
criAtomExAsrRack_Create を使って作成します。
API
ASRラックにアクセスするためのAPIは以下の通りです。
criAtomExAsrRack_Create ASRラック作成
criAtomExAsrRack_Destroy ASRラック破棄
criAtomExAsrRack_SetBusVolume ASRラック内のバスのボリュームの設定
criAtomExAsrRack_SetBusMatrix ASRラック内のバスのレベル行列の設定
criAtomExAsrRack_SetBusSendLevel ASRラック内のバスのバスセンドの設定
criAtomExAsrRack_SetDspParameter ASRラック内のDSPパラメーター設定
criAtomExAsrRack_SetDspBypass ASRラック内のDSPバイパス設定
スピーカーマッピング、出力チャンネル数の設定について
criAtomExAsrRack_Create 関数に渡す CriAtomExAsrRackConfig 構造体でミキサーのスピーカーマッピングと出力チャンネル数を設定できます。
スピーカーマッピングはミキサーのチャンネル構成を示します。 出力チャンネル数はミキサーのレンダリング結果を出力に渡す際のチャンネル数を設定します。
デフォルトでは出力チャンネル数は各プラットフォームの標準的なチャンネル数に設定されています。 また、スピーカーマッピングには CRIATOM_SPEAKER_MAPPING_AUTO が設定されており、出力チャンネル数に応じた値が自動的に設定されます。
スマートフォンでの出力チャンネル数はデフォルトで2chとなっており、スピーカーマッピングに CRIATOM_SPEAKER_MAPPING_AUTO が設定されている場合、内部的には CRIATOM_SPEAKER_MAPPING_STEREO が指定されます。
一部エフェクト(ヘッドホンバーチャルサラウンド、マルチタップディレイ、サラウンダーなど)を使用する場合、スピーカーマッピングで CRIATOM_SPEAKER_MAPPING_5_1CRIATOM_SPEAKER_MAPPING_7_1 を設定する必要があります。
その為、スマートフォンで当該エフェクトを使用する場合はスピーカーマッピングに CRIATOM_SPEAKER_MAPPING_5_1CRIATOM_SPEAKER_MAPPING_7_1 を指定してご利用ください。
なお、出力チャンネルに対してレンダリングされた音声のチャンネル数が大きい場合はダウンミックスされます。
補足
ASRを初期化するとデフォルトラックとして1つ作成されます。