Atom サウンドレンダラ (ASR) とは
- Atom サウンドレンダラ (ASR) は、以下の3つの役割を持つモジュールです。
- 1. 複数のボイスのミキシング
- 2. エフェクトの信号処理
- 3. 出力先への音声出力
- 覚え書き
- マニュアル・ライブラリー内で「ASRラック」という表現を使用する箇所がありますが、「ASR」と「ASRラック」は基本的に同義語です。
- CRI Atom ライブラリは、初期化時にメイン出力となるASRを自動で作成します。このメイン出力のASR は CriAtomExAsrConfig 構造体で指定された設定(デフォルトでは criAtomExAsr_SetDefaultConfig マクロで設定される)に基づき、内部構成を決定します。
- Atomライブラリのボイスの発音は、特に指定が無い限りライブラリが作成したメイン出力のASRに送られます。ASRに送られた音声はPCM信号がミックスされるため、1音単位の制御ができなくなります。
ボイスのミキシング
- ASRラックは内部のレンダリングに使用する独自のスピーカー構成を持っています。ボイスがASRに送られる時、ボイスのデータのチャンネル構成からASRのスピーカー構成への変換が行われます。
スピーカーマッピング
- スピーカーマッピング( CriAtomSpeakerMapping )は、音声のミキシング・レンダリングに使用されるスピーカー構成を示す値です。
- Atomライブラリは、入力された音声データをASRでミックスする際に、指定されたスピーカーマッピングに合致する形式に変換します。
音声に パンニング が設定されている場合、パンスピーカータイプ を使用したパンニングにて変換が行われます。
- また、Atom サウンドレンダラ内の信号処理( エフェクトの信号処理 )も指定されたスピーカー構成に基づいてに行われます。
- Atomライブラリーのメイン出力ASRのスピーカーマッピングは、Atomライブラリを初期化する際 CriAtomExAsrConfig::speaker_mapping で指定します。 新しいASRラックを作成する際は、 CriAtomExAsrRackConfig::speaker_mapping に作成するミキサーのスピーカー構成を指定します。
- 覚え書き
- デフォルト値は CRIATOM_SPEAKER_MAPPING_AUTO で、 CriAtomAsrConfig::output_channels の値に基づき自動的に決められます。
CriAtomExAsrConfig::speaker_mapping と CriAtomAsrConfig::output_channels の関係については、 スピーカーマッピングと出力チャンネル数の関係 を参照してください。
- 音声データのチャンネルコンフィグとミキサーのスピーカーマッピングが一致している場合、音声データの変換を行われません。
一致しない場合、Atomライブラリは入力された音声がミキサーの形式に合致するよう、適宜ダウンミックス(又はアップミックス)します。
パンスピーカータイプ
- パンスピーカータイプ( CriAtomExPanSpeakerType )は、パンニングされた音声データのレンダリング先を決定するパラメーターです。
音声をパンニングした際、当該音声がどのスピーカーから出力されるかはパンスピーカータイプによって決まります。
- 例えば、 criAtomExPlayer_SetPan3dAngle 関数でモノラル音声を背後(180°)に定位させた際、パンスピーカータイプが CRIATOMEX_PAN_SPEAKER_TYPE_4CH であれば、音声はLs・Rsチャンネルにパンニングされます。
これに対し、パンスピーカータイプを CRIATOMEX_PAN_SPEAKER_TYPE_6CH に設定して同様の操作を行った場合、音声はLb・Rbチャンネルにパンニングされます。
- パンスピーカータイプはデフォルト状態では、 CRIATOMEX_PAN_SPEAKER_TYPE_AUTO に設定されています。
そのため、パンニングした音声がどのスピーカーから出力されるかは、その音声の出力先に指定したスピーカーマッピングに応じて変化します。
スピーカーマッピングに応じた具体的なパンスピーカータイプは以下のとおりです。
スピーカーマッピング | パンスピーカータイプ |
CRIATOM_SPEAKER_MAPPING_STEREO | CRIATOMEX_PAN_SPEAKER_TYPE_4CH |
CRIATOM_SPEAKER_MAPPING_5_1 | CRIATOMEX_PAN_SPEAKER_TYPE_4CH |
CRIATOM_SPEAKER_MAPPING_7_1 | CRIATOMEX_PAN_SPEAKER_TYPE_6CH |
CRIATOM_SPEAKER_MAPPING_5_1_2 | CRIATOMEX_PAN_SPEAKER_TYPE_4_0_2CH |
CRIATOM_SPEAKER_MAPPING_7_1_2 | CRIATOMEX_PAN_SPEAKER_TYPE_6_0_4CH |
CRIATOM_SPEAKER_MAPPING_7_1_4 | CRIATOMEX_PAN_SPEAKER_TYPE_6_0_4CH |
パンスピーカータイプとASRのスピーカーマッピング
- 例えば、モノラル音声を CRIATOM_SPEAKER_MAPPING_5_1 を指定して作成したASRに出力すると、デフォルトの CRIATOMEX_PAN_SPEAKER_TYPE_AUTO は CRIATOMEX_PAN_SPEAKER_TYPE_4CH と解釈され、L・R・Ls・Rsを使用したパンニングが行われます。
- 一方、ASRのスピーカーマッピングよりパンスピーカータイプが大きい場合、一度パンニングしたあとASRのスピーカーマッピングに合わせてダウンミックスされます。以下の図は、 CRIATOMEX_PAN_SPEAKER_TYPE_4CH を指定した音声を CRIATOM_SPEAKER_MAPPING_STEREO のASRに入力する時の流れです。
- この時適用されるダウンミックス計算式は ダウンミックス計算式 を参照してください。
@ CRIATOMEX_PAN_SPEAKER_TYPE_AUTO_WITH_CENTER
パンニング自動設定(センタースピーカーあり)
Definition: cri_atom_ex.h:2153
void criAtomExPlayer_ChangeDefaultPanSpeakerType(CriAtomExPanSpeakerType pan_speaker_type)
パンニング時の出力スピーカータイプ設定のデフォルト値変更
エフェクトの信号処理
- ASRにはAtom Craftで作成したDSPバス設定をアタッチすることが可能です。
DSPバス設定にはASRバスの構成やバス名、バス同士のセンド情報、各バスにあるバスエフェクトの情報が含まれています。
- 覚え書き
- ASRラックを作成した直後などDSPバス設定がアタッチされていない場合、ASRラックには8本のバスが設定されています。
- ASRに出力するボイスは指定されたバスセンドによってバスに送られ、最終的に0番目のバスであるMasterOutから出力されます。
DSPバスとエフェクト
- ADX2では、DSPバス設定によりミキサーや様々なエフェクターを自由に組み合わせて高度なサウンド処理を行うことができます。
DSPバス設定の使用方法
CRI Atom CraftでDSPバス設定を作成
- DSPバス設定の作成の仕方は DSPバス を参照してください。
作成したDSPバス設定をプログラム側でアタッチ
- 作成したDSPバス設定をアタッチするコードを下記に示します。
:
:
criAtomExPlayer_SetBusSendLevelOffset(player, 1, 0.5f);
void criAtomEx_AttachDspBusSetting(const CriChar8 *setting, void *work, CriSint32 work_size)
DSPバス設定のアタッチ
CriAtomExPlaybackId criAtomExPlayer_Start(CriAtomExPlayerHn player)
再生の開始
void criAtomExPlayer_SetCueId(CriAtomExPlayerHn player, CriAtomExAcbHn acb_hn, CriAtomExCueId id)
音声データのセット(キューID指定)
- 基本的に1度にアタッチできるDSPバス設定は1つだけですが、
ASRラックが使用できる環境では、ASRラックにもアタッチすることができます。
:
:
criAtomExPlayer_SetBusSendLevelOffset(player, 1, 0.5f);
void criAtomExAsrRack_AttachDspBusSetting(CriAtomExAsrRackId rack_id, const CriChar8 *setting, void *work, CriSint32 work_size)
DSPバス設定のアタッチ
CriBool criAtomEx_RegisterAcfFile(CriFsBinderHn binder, const CriChar8 *path, void *work, CriSint32 work_size)
ACFファイルの登録
void criAtomExPlayer_SetAsrRackId(CriAtomExPlayerHn player, CriSint32 rack_id)
ASRラックIDの指定
カスタムエフェクトプラグイン
- ADX2のオーディオエフェクトとしてCRI標準のエフェクトとは別に、ユーザーが作成したエフェクトやサードパーティー製のエフェクトをプラグインとして利用することができます。
- CRI ADX2 Audio Effect Plugin SDKで作成されたエフェクトプラグインをVSTとして作成することで、ツール上でのパラメーター調整が行いやすくなります。
CRI ADX2 Audio Effect Plugin SDK詳しくは カスタムエフェクトプラグイン を参照ください。
ミキサーAISAC
- ミキサーAISACは、 DSPバス設定 に対して設定することができるAISACです。
通常のAISACと同じように、AISACコントロール値によってDSPバスのパラメーターを変化させることができます。
ミキサーAISACを介して、以下のバスパラメーターを操作できます。
- ボリューム
- パン角度
- バスセンドレベル
- パンスプレッド
- ミキサーAISACは、通常のAISACと比べて以下の仕様が異なります。
- CRI Atom Craft上での設定方法などは、CRI Atom CraftマニュアルのミキサーAISAC を参照してください。
3rd Party製エフェクト
- ADX2には、ADX2組み込みのエフェクトだけでなく、3rd Party製のエフェクトと連携して動作する機能があります。
McDSP社の各種エフェクト
- McDSP社のエフェクトをADX2に組み込み可能にしたADX2の機能拡張 CRI ADX2 Audio Effect McDSP Expansion をハンドルしています。
CRI Atom Craftに組み込み可能なMcDSPエフェクトプラグインを1ヶ月無償評価可能です。
-
- McDSPプラグインの組み込み方法については、ADX2 SDKの以下のディレクトリに配置されているドキュメントをご参照下さい。
/cri/expansion/cri_audio_effect/
出力先への音声出力
ASRのサウンド出力方式
- ASRのMasterOutの出力は、ASRの作成時に指定した出力先に送られます。 ASRの出力先は CriAtomExAsrConfig::sound_renderer_type に以下の値を設定することで指定することができます。
- CRIATOM_SOUND_RENDERER_ASR を指定した場合、 CriAtomExAsrRackConfig::output_rack_id に指定した他の ASR へサウンドを出力します。
そのため、Atom ライブラリ初期化時に作成される ASR に対しては指定できません。
CRIATOM_SOUND_RENDERER_SPATIAL を指定した場合は Atom 内部で立体音響の機能が有効化されます。
立体音響機能の詳細については「 立体音響機能 」を参照してください。
ASRの出力チャンネル数
- ASR 作成時、 スピーカーマッピングと出力チャンネルをそれぞれ指定することができます。この2つのパラメータは、それぞれ以下の意味合いを持ちます。
スピーカーマッピングと出力チャンネル数の関係
- スピーカーマッピングのデフォルトは CRIATOM_SPEAKER_MAPPING_AUTO で、出力チャンネル数の値に基づき自動的に決められます。 そのため多くのの場合 CriAtomExAsrConfig::output_channels のみを指定するだけでも正しい結果が得られます。
以下の図は、7.1 ch の音声素材を CriAtomExAsrConfig::output_channels に 8 を設定したASRで再生したときの流れです。
CriAtomExAsrConfig::speaker_mapping は自動的に CRIATOM_SPEAKER_MAPPING_7_1 に設定され、ASRは8chで動作し、プラットフォームにそのまま出力します。
出力チャンネル数とプラットフォーム
- ASRの出力チャンネル数には、プラットフォームが対応している出力チャンネル数を超えた値を指定することも可能です。
その時、Atomライブラリはプラットフォームが対応している最大のチャンネル数を把握し、ASRの出力に対して更にダウンミックスを行います。
以下の図は最大5.1chに対応したプラットフォームに対して CriAtomExAsrConfig::output_channels に 8 を設定したときの流れです。
ASRは8chで動作しますが、その出力をAtomのプラットフォーム固有モジュールが 6ch にダウンミックスしてプラットフォームに出力します。
- 注意
- CriAtomExAsrConfig::output_channels の値がプラットフォームの最大チャンネル数以上の時、ASRはその最大チャンネル数の信号をプラットフォームに送ります。
この時一部のプラットフォームは受け取った最大のチャンネル数の信号から、実際のデバイスのチャンネル数に合わせて更に変換を行うことがあります。この処理はプラットフォーム固有のものであり、Atom内のダウンミックスとは関係ありません。
- 覚え書き
- スマートフォン向けAtomライブラリのASRは、 CriAtomExAsrConfig::output_channels のデフォルト値が 2 です。
PC 環境で同じ出力を確認したい場合、PCの CriAtomExAsrConfig::output_channels に 2 を指定することで、各種プラットフォーム間で一致したステレオサウンド出力が得られます。
ダウンミックス計算式
- 以下の値が異なる時、Atomの中でダウンミックスが発生することがあります。
- Atom の中のダウンミックスは、下表の計算式に従います。
入力ch数 | 出力ch数 | 計算式 (出力スピーカ) = (入力スピーカ) |
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)
立体音響機能
- ASRに特定のパラメーターを指定することで、立体音響のレンダリングを行うことができます。
CRI ADXの立体音響機能について
- CRI ADXで再生・レンダリングできる立体音響は、下記の3種類に分けられます。
- 最大 7.1.4ch のマルチチャンネル(チャンネルベース)
- Ambisonics(シーンベース)
- 位置情報を持つモノラル音源(オブジェクトベース)
- また、各立体音響の再生方式に対し、バイノーライザーによるヘッドフォン向けバーチャルサラウンド出力を行うことができます。
下記の図は、それぞれの立体音響の再生の大まかな流れをまとめたものです。
- 本ページでは立体音響機能を使用する際に必要になる設定についてプラットフォームで共通しているものを記載しています。
そのため、各プラットフォームで固有の情報などは「 立体音響機能に関する特記事項 」を参照してください。
最大 7.1.4ch のマルチチャンネル(チャンネルベース)
- CRI ADXでは、トップスピーカーを含む構成のマルチチャンネル再生について、以下のように対応しています。
- 最大 7.1.4ch の音声素材の再生
- 最大 7.1.4ch のパンニングを使用したミキシング
最大 7.1.4ch の音声素材の再生
- CRI Atom Craftを使用し、最大 7.1.4ch の音声素材を使用することができます。 詳しくは、CRI Atom Craft マニュアルの 7.1.4ch を参照してください。
最大 7.1.4ch のパンニングを使用したミキシング
- この機能は、従来の 5.1ch や 7.1ch などのマルチチャンネルと同じ感覚で使用することができます。
ASRのスピーカー構成を以下の値に指定される場合、それに応じたASRが作成されます。
- ASRのスピーカーマッピングは直接指定するか、出力チャンネル数から自動的に指定する方法があります。詳しくは以下を参照してください。
- 注意
- 5.1.2ch は 7.1ch と同じ 8ch のため、デフォルトではASRの出力チャンネル数からの自動設定ができません。 5.1.2ch の再生を行うためには、次のうちいずれかを設定してください。
- プラットフォームが 7.1.4ch など指定した出力チャンネル数に対応していない場合、出力チャンネル数とプラットフォーム の通りプラットフォームの対応チャンネル数への変換が行われます。 各プラットフォームの対応チャンネル数に関しては、「 機能一覧と実装状況 」を参照してください。
- チャンネルベースの立体音響のASRの作成は、必ずしも CriAtomExAsrConfig::sound_renderer_type や CriAtomExAsrRackConfig::sound_renderer_type に CRIATOM_SOUND_RENDERER_SPATIAL を指定する必要はありません。
ただし CRIATOM_SOUND_RENDERER_SPATIAL を指定すると、バーチャルサラウンドのバイノーラル再生が可能になります。
バイノーラル再生については「 バイノーラル再生 」を参照してください。
Ambisonics(シーンベース)
- Ambisonics はサラウンド音声フォーマットの一種で、一点を中心にした球面上の音をまとめて収録・再生することができます。
CRI ADXでは、Ambisonics再生について、以下のように対応しています。
- ADX2では、最大3次のFuMa maxN フォーマットおよび ACN SN3D (AmbiX)フォーマットの音声素材に対応しています。
Ambisonics 音声素材の再生については CRI Atom Craft を用いた ADX2 用データファイル化を推奨しています。
設定方法などの詳細は 「 Ambisonics 」を参照してください。
Ambisonics 音声の再生にも3Dポジショニングの機能を利用してリスナーの向きを変更することで音声素材を回転させるといった音響表現が可能です。
3Dポジショニングに関する設定について詳しくは 「 3Dポジショニング 」を参照してください。
プラットフォームのサウンドハードウェアが Ambisonics 音声素材の再生に対応している場合、再生に関する処理をプラットフォームに任せることで負荷を軽減することが可能です。
当該プラットフォームのサウンドハードウェアが Ambisonics 音声素材の再生に対応しているかどうかは「 機能一覧と実装状況 」を参照してください。
位置情報を持つモノラル音源(オブジェクトベース)
- 対応プラットフォームでは音声素材に座標情報などのメタデータを持たせ、OSの機能を使用した再生を行うことができます。 当該プラットフォームが対応しているかどうかは「 機能一覧と実装状況 」を参照してください。
- 注意
- 本機能は再生方法や対応プラットフォームなど、一部仕様が今後のアップデートで変更される予定です。 当該機能についての詳細については、別途お問い合わせください。
バイノーラル再生
- この機能は既存のDSPバスエフェクトの ヘッドフォンバーチャルサラウンド を拡張したものです。 チャンネルベース、シーンベース、オブジェクトベースの再生に頭部伝達関数(HRTF)を適用し、バーチャルサラウンドのバイノーラル音声として再生します。
- 注意
- 一部プラットフォームはOSからバイノーラル再生をサポートしています。
その場合、ADXのバイノーラル再生はOSのバイノーラル処理が2重でかからないように設定して再生を行います。
- 覚え書き
- プラットフォーム固有のバイノーラル再生に比べ、ADX のバイノーラル再生はプラットフォーム間で同じ出音を維持することができます。
各プラットフォームの詳細は「 機能一覧と実装状況 」を参照してください。
- メイン出力のASRを含むチャンネルベースの再生でバイノーラル再生を行いたい場合、ライブラリ初期化に CriAtomExAsrConfig::sound_renderer_type に CRIATOM_SOUND_RENDERER_SPATIAL を指定する必要があります。
一方、CRI Atom Craft で専用のミキサーを作成するように設定したデータを再生する場合、この操作は不要です。
(サウンドレンダラタイプに CRIATOM_SOUND_RENDERER_SPATIAL を指定した専用ミキサーが自動的に作成されます。)
- バイノーラル処理は criAtomExAsr_EnableBinauralizer 関数を実行することで有効・無効を切り替えます。この切り替えは音声再生中にも適用されます。
アプリケーションで再生環境の情報を取得する、アプリケーションの設定項目でユーザーにバイノーラル処理の有効・無効を指定させるといった方法で、切り替えを行ってください。