Atom サウンドレンダラ (ASR) とは
- Atom サウンドレンダラ (ASR) は、以下の3つの役割を持つモジュールです。
- 1. 複数の ボイスのミキシング
- 2. エフェクトの信号処理
- 3. 出力先への音声出力
- 覚え書き
- マニュアル・プラグインファイル内で「ASRラック」という表現を使用する箇所がありますが、「ASR」と「ASRラック」は基本的に同義語です。
- ADXランタイムは、初期化時にメイン出力となるASRを自動で作成します。このメイン出力のASR は CriWareInitializerコンポーネント -> 「ASR Rendering Mode」 で指定された設定に基づき、内部構成を決定します。
- ボイスの発音は、特に指定が無い限りADXランタイムが作成したメイン出力のASRに送られます。ASRに送られた音声はPCM信号がミックスされるため、1音単位の制御ができなくなります。
ボイスのミキシング
- ASRラックは内部のレンダリングに使用する独自のスピーカー構成を持っています。ボイスがASRに送られる時、ボイスのデータのチャンネル構成からASRのスピーカー構成への変換が行われます。
スピーカーマッピング
- スピーカーマッピング( CriWare.CriAtom.SpeakerMapping )は、音声のミキシング・レンダリングに使用されるスピーカー構成を示す値です。
- ADXランタイムは、入力された音声データをASRでミックスする際に、指定されたスピーカーマッピングに合致する形式に変換します。
音声に パンニング が設定されている場合、パンスピーカータイプ を使用したパンニングにて変換が行われます。
- また、Atom サウンドレンダラ内の信号処理( エフェクトの信号処理 )も指定されたスピーカー構成に基づいてに行われます。
- メイン出力ASRのスピーカーマッピングは、プラグインライブラリを初期化する際CriWareInitializerコンポーネントの「ASR Rendering Mode」項目で指定します。 新しいASRラックを作成する際は、 CriWare.CriAtomExAsrRack.Config.speakerMapping に作成するミキサーのスピーカー構成を指定します。
- 覚え書き
- デフォルト値は CriWare.CriAtom.SpeakerMapping.Auto で、 CriWare.CriAtomExAsrRack.Config.outputChannels の値に基づき自動的に決められます。
CriWare.CriAtomExAsrRack.Config.speakerMapping と CriWare.CriAtomExAsrRack.Config.outputChannels の関係については、 スピーカーマッピングと出力チャンネル数の関係 を参照してください。
- 音声データのチャンネルコンフィグとミキサーのスピーカーマッピングが一致している場合、音声データの変換を行われません。
一致しない場合、ADXランタイムは入力された音声がミキサーの形式に合致するよう、適宜ダウンミックス(又はアップミックス)します。
パンスピーカータイプ
- パンスピーカータイプは、パンニングされた音声データのレンダリング先を決定するパラメーターです。
音声をパンニングした際、当該音声がどのスピーカーから出力されるかはパンスピーカータイプによって決まります。
- 例えば、 CriWare.CriAtomExPlayer.SetPan3dAngle 関数でモノラル音声を背後(180°)に定位させた際、パンスピーカータイプが 4Ch であれば、音声はLs・Rsチャンネルにパンニングされます。
パンスピーカータイプが 6Ch の場合、同様の操作を行うと、音声はLb・Rbチャンネルにパンニングされます。
- パンスピーカータイプはデフォルト状態では自動的に設定されています。
その結果パンニングした音声がどのスピーカーから出力されるかは、その音声の出力先に指定したスピーカーマッピングに応じて変化します。
スピーカーマッピングに応じた具体的なパンスピーカータイプは以下のとおりです。
- 例えば、モノラル音声を CriWare.CriAtom.SpeakerMapping.Ch5_1 を指定して作成したASRに出力すると、パンスピーカータイプは 自動的に 4Ch と解釈され、L・R・Ls・Rsを使用したパンニングが行われます。
エフェクトの信号処理
- ASRにはAtom Craftで作成したDSPバス設定をアタッチすることが可能です。
DSPバス設定にはASRバスの構成やバス名、バス同士のセンド情報、各バスにあるバスエフェクトの情報が含まれています。
- 覚え書き
- ASRラックを作成した直後などDSPバス設定がアタッチされていない場合、ASRラックには8本のバスが設定されています。
- ASRに出力するボイスは指定されたバスセンドによってバスに送られ、最終的に0番目のバスであるMasterOutから出力されます。
DSPバスとエフェクト
- ADXでは、DSPバス設定によりミキサーや様々なエフェクターを自由に組み合わせて高度なサウンド処理を行うことができます。
DSPバス設定の使用方法
CRI Atom CraftでDSPバス設定を作成
- DSPバス設定の作成の仕方は CRI Atom Craft ツールマニュアルを参照してください。
作成したDSPバス設定をプログラム側でアタッチ
- 作成したDSPバス設定をアタッチするコードを下記に示します。
CriAtomEx.AttachDspBusSetting("DspBusSetting_0");
:
:
criAtomSource.SetBusSendLevelOffset("BUS1", 0.5f);
criAtomSource.Play();
- 基本的に1度にアタッチできるDSPバス設定は1つだけですが、
ASRラックが使用できる環境では、ASRラックにもアタッチすることができます。
CriAtomEx.RegisterAcf(null, "proj.acf");
criAtomExAsrRack.AttachDspBusSetting("DspBusSetting_0");
:
:
criAtomSource.player.SetAsrRackId(rackId);
criAtomSource.SetBusSendLevelOffset("BUS1", 0.5f);
criAtomSource.Play();
カスタムエフェクトプラグイン
- ADXのオーディオエフェクトとしてCRI標準のエフェクトとは別に、ユーザーが作成したエフェクトやサードパーティー製のエフェクトをプラグインとして利用することができます。
- CRI ADX Audio Effect Plugin SDKで作成されたエフェクトプラグインをVSTとして作成することで、ツール上でのパラメーター調整が行いやすくなります。
CRI ADX Audio Effect Plugin SDK詳しくは CRI Atom Craft ツールマニュアルの関連項目を参照ください。
ミキサーAISAC
- ミキサーAISACは、 DSPバス設定 に対して設定することができるAISACです。
通常のAISACと同じように、AISACコントロール値によってDSPバスのパラメーターを変化させることができます。
ミキサーAISACを介して、以下のバスパラメーターを操作できます。
- ボリューム
- パン角度
- バスセンドレベル
- パンスプレッド
- ミキサーAISACは、通常のAISACと比べて以下の仕様が異なります。
- CRI Atom Craft上での設定方法などは、CRI Atom Craft ツールマニュアルを参照してください。
3rd Party製エフェクト
- ADXには、ADX組み込みのエフェクトだけでなく、3rd Party製のエフェクトと連携して動作する機能があります。
McDSP社の各種エフェクト
- McDSP社のエフェクトをADXに組み込み可能にしたADXの機能拡張 CRI ADX Audio Effect McDSP Expansion をハンドルしています。
CRI Atom Craftに組み込み可能なMcDSPエフェクトプラグインを1ヶ月無償評価可能です。
-
- McDSPプラグインの組み込み方法については、SDKの以下のディレクトリに配置されているドキュメントをご参照下さい。
/cri/expansion/cri_audio_effect/
出力先への音声出力
ASRのサウンド出力方式
- ASRのMasterOutの出力は、ASRの作成時に指定した出力先に送られます。 ASRの出力先は CriWare.CriAtomExAsrRack.Config.soundRendererType に以下の値を設定することで指定することができます。
- CriWare.CriAtomEx.SoundRendererType.Asr を指定した場合、 CriWare.CriAtomExAsrRack.Config.outputRackId に指定した他の ASR へサウンドを出力します。
そのため、プラグインライブラリ初期化時に作成される ASR に対しては指定できません。
CriWare.CriAtomEx.SoundRendererType.Spatial を指定した場合は ADX 内部で立体音響の機能が有効化されます。
立体音響機能の詳細については「 立体音響 」を参照してください。
ASRの出力チャンネル数
- ASR 作成時、 スピーカーマッピングと出力チャンネルをそれぞれ指定することができます。この2つのパラメータは、それぞれ以下の意味合いを持ちます。
スピーカーマッピングと出力チャンネル数の関係
- スピーカーマッピングのデフォルトは CriWare.CriAtom.SpeakerMapping.Auto で、出力チャンネル数の値に基づき自動的に決められます。 そのため多くの場合 CriWare.CriAtomExAsrRack.Config.outputChannels のみを指定するだけでも正しい結果が得られます。
以下の図は、7.1 ch の音声素材を CriWare.CriAtomExAsrRack.Config.outputChannels に 8 を設定したASRで再生したときの流れです。
CriWare.CriAtomExAsrRack.Config.speakerMapping は自動的に CriWare.CriAtom.SpeakerMapping.Ch7_1 に設定され、ASRは8chで動作し、プラットフォームにそのまま出力します。
出力チャンネル数とプラットフォーム
- ASRの出力チャンネル数には、プラットフォームが対応している出力チャンネル数を超えた値を指定することも可能です。
その時、ADXランタイムはプラットフォームが対応している最大のチャンネル数を把握し、ASRの出力に対して更にダウンミックスを行います。
以下の図は最大5.1chに対応したプラットフォームに対して CriWare.CriAtomExAsrRack.Config.outputChannels に 8 を設定したときの流れです。
ASRは8chで動作しますが、その出力をAtomのプラットフォーム固有モジュールが 6ch にダウンミックスしてプラットフォームに出力します。
- 注意
- CriWare.CriAtomExAsrRack.Config.outputChannels の値がプラットフォームの最大チャンネル数以上の時、ASRはその最大チャンネル数の信号をプラットフォームに送ります。
この時一部のプラットフォームは受け取った最大のチャンネル数の信号から、実際のデバイスのチャンネル数に合わせて更に変換を行うことがあります。この処理はプラットフォーム固有のものであり、Atom内のダウンミックスとは関係ありません。
- 覚え書き
- スマートフォン向けADXランタイムのASRは、 CriWare.CriAtomExAsrRack.Config.outputChannels のデフォルト値が 2 です。
PC 環境で同じ出力を確認したい場合、PCの CriWare.CriAtomExAsrRack.Config.outputChannels に 2 を指定することで、各種プラットフォーム間で一致したステレオサウンド出力が得られます。
ダウンミックス計算式
- 以下の値が異なる時、Atomの中でダウンミックスが発生することがあります。
- Atom の中のダウンミックスは、下表の計算式に従います。
入力ch数 | 出力ch数 | 計算式 (出力スピーカ) = (入力スピーカ) |
7.1.4.4ch | 7.1.4ch | L(mix) = L + Lbf * (-3dB)
R(mix) = R + Rbf * (-3dB)
C(mix) = C
LFE(mix) = LFE
Ls(mix) = Ls
Rs(mix) = Rs
Lb(mix) = Lb + Lbb * (-3dB)
Rb(mix) = Rb + Rbb * (-3dB)
Ltf(mix) = Ltf
Rtf(mix) = Rtf
Ltb(mix) = Ltb
Rtb(mix) = Rtb
|
7.1.4ch | 7.1ch | L(mix) = L + Ltf * (-3dB)
R(mix) = R + Rtf * (-3dB)
C(mix) = C
LFE(mix) = LFE
Ls(mix) = Ls
Rs(mix) = Rs
Lb(mix) = Lb + Ltb * (-3dB)
Rb(mix) = Rb + Rtb * (-3dB)
|
7.1ch | 5.1ch | L(mix) = L
R(mix) = R
C(mix) = C
LFE(mix) = LFE
Ls(mix) = Ls + Lb * (-3dB)
Rs(mix) = Rs + Rb * (-3dB) |
5.1ch | 4ch(L,R,Ls,Rs) | L(mix) = L + C * (-3dB)
R(mix) = R + C * (-3dB)
Ls(mix) = Ls
Rs(mix) = Rs |
4ch(L,R,Ls,Rs) | 2ch | L(mix) = L + Ls * (-3dB)
R(mix) = R + Rs * (-3dB) |
2ch | 1ch | MONO(mix) = L * (-3dB) + R * (-3dB) |
- 上記の表にない組み合わせの場合、段階的にダウンミックスします。
例えば、入力7.1ch->出力2chの場合、7.1ch->5.1ch->4ch->2chの順にダウンミックスします。
結果として、ダウンミックス計算式は以下のようになります。
L(mix) = L + C * (-3dB) + Ls * (-3dB) + Lb * (-6dB)
R(mix) = R + C * (-3dB) + Rs * (-3dB) + Rb * (-6dB)