- Atomライブラリには、以下の3種類のパン設定方法が用意されています。
パン設定
| パン設定 | 説明 |
| パン3D | 音源の方向(角度と距離)を指定する方法 |
| 3Dポジショニング | リスナー情報と音源情報(位置)を指定する方法 |
| センドレベル | 原音を各スピーカーからどれだけのボリュームで出すか指定する方法 |
-
スピーカーの角度
サラウンドスピーカー
- ADXにおける各スピーカーのデフォルト角度はITU-R BS.775-1に則り、以下のように設定されています。
スピーカーの角度設定
| スピーカー設定 | L | R | C | LFE | Ls | Rs | Lb | Rb |
| 5.1ch | -30° | 30° | 0° | 0° | -120° | 120° | - | - |
| 7.1ch | -30° | 30° | 0° | 0° | -110° | 110° | -150° | 150° |
- なお、サラウンドスピーカーの角度は criAtomEx_SetSpeakerAngles 関数または criAtomEx_SetSpeakerAngleArray 関数を使用して変更することが可能です。
トップスピーカー
- 上方のスピーカー(トップスピーカー)の位置は以下のとおりです。
- トップレフトスピーカーとトップライトスピーカーの間隔は、フロントレフトスピーカーとフロントライトスピーカーの間隔に準拠します。
- トップフロントスピーカーの仰角は以下のとおりです。
- トップスピーカーが4chの場合、トップフロントスピーカーの仰角は45°、トップバックスピーカーの仰角は135°です。
- トップスピーカーが2chの場合、トップスピーカーの仰角は80°です。
- 例えば、7.1.4ch環境におけるトップ4chのスピーカーは、平面上では以下の位置に配置されます。
-
- 同環境を側面から見た場合の位置関係は以下のとおりです。
-
ボトムスピーカー
- ミキサーフォーマットには下方のスピーカー(ボトムスピーカー)を含む7.1.4.4ch構成を指定することが可能です。
この場合、ボトムスピーカーが以下に位置にあると想定してパンニングが行われます。
- ボトムレフトスピーカーとボトムライトスピーカーの間隔は、フロントレフトスピーカーとフロントライトスピーカーの間隔に準拠します。
- ボトムフロントスピーカーの俯角は45°、ボトムバックスピーカーの俯角は135°です。
- 注意
- 現時点では7.1.4.4chの信号を物理スピーカーにそのまま出力可能なプラットフォームは存在しません。
そのため、ミキサーフォーマットを7.1.4.4chに設定した場合でも、物理スピーカー出力する際には7.1.4ch等の信号にダウンミックスされます。
パン3D
- パン3Dは、音源の角度と距離を指定して音像の定位を決定するパンニング方式です。
パン3D方式でパンを操作する場合、以下のパラメーターを指定します。
-
角度について
- 角度は方位角と仰俯角をそれぞれ以下の関数で指定します。
角度指定関数
| 設定項目 | 使用する関数 |
| 方位角 | criAtomExPlayer_SetPan3dAngle |
| 仰俯角 | criAtomExPlayer_SetPan3dElevation |
- 角度の単位は度(degree)です。
方位角は前方を0度とし、右方向(時計回り)がプラス、左方向(反時計回り)がマイナスです。
仰俯角は水平面上を0度とし、上方向がプラス、下方向がマイナスです。
インテリア距離について
- インテリア距離とは、スピーカの内側に音像を移動させるときに使用します。
- 1.0で最外周になり1つまたは2つのスピーカーで再生されます。
- 0.0になるとすべてのスピーカーから同じ音量で聞こえるようになり、リスナーと同じ位置に音像があることになります。
- 0から1.0の間の値では、3つ以上のスピーカーから出力され、自然な音像の移動が実現できます。
- インテリア距離の指定には criAtomExPlayer_SetPan3dInteriorDistance 関数を使用します。
3Dポジショニング
3Dポジショニング機能とは
- 3Dポジショニング機能とは、音源とリスナーに対して位置や速度などの座標情報を設定するだけで、 それらの座標の位置関係に応じた音響効果を得ることができる機能です。
位置関係による音量やパンニング等の音像に関するパラメーターはライブラリ側で自動的に計算されるため、 ゲームプログラム側は音源とリスナーに対して位置や向きなどの情報を入力するだけで、 3次元的な音響演出を行うことができます。
使用方法
- 以下のような値をゲームプログラム側から指定します。
■リスナー情報
- 座標(x, y, z)
- 移動速度(x, y, z)
- 前方への姿勢ベクトル(x, y, z)
- 上方への姿勢ベクトル(x, y, z)
- ■音源情報
- 位置(x, y, z)
- 速度(x, y, z)
- コーンの向き(x, y, z)
- これらの値を指定すると以下の図のようになります。 この図では、以下の状況を想定するものとして値を設定します。
- リスナー(人)はz軸方向を向いてまっすぐ立っている。
- 犬は左方向を向いている。
- 鳥は右を向きながら飛行している。
-
各種設定値
-
- ※データ側にも設定可能な値です。ゲームプログラム側で指定すると、データ側の設定は上書き(無視)されます。
減衰
- 3Dポジショニング機能ではリスナーと音源の位置関係によって音量が減衰します。
減衰には距離によるものとサウンドコーンによるものがあります。
動作仕様については下記APIの解説をご参照ください。
- 距離: criAtomEx3dSource_SetMinMaxAttenuationDistance
- サウンドコーン: criAtomEx3dSource_SetConeParameter
インテリアパンニング
- 3Dポジショニング機能にはリスナーと音源の距離に応じてインテリア距離を設定する機能があります。
(パン3Dにおけるインテリア距離と同じパラメーター)
動作仕様については criAtomEx3dSource_SetInteriorPanField 関数の解説をご参照ください。
3Dポジショニング内の追加機能
- ADXの3Dポジショニングではより多彩な空間音響表現を行うための機能が存在します。
AISACを使用した減衰のカスタム
- 以下のパラメーターに応じてAISACコントロールを変化させることができます。
- リスナーと音源の距離(距離減衰AISAC)
- リスナーから見た音源の角度(リスナー基準方位角AISAC、リスナー基準仰俯角AISAC)
- 音源から見たリスナーの角度(音源基準方位角AISAC、音源基準仰俯角AISAC)
- デフォルトの距離減衰設定ではボリュームのみが変化しますが、AISACを使用することでボリューム以外のパラメーターを変化させることが可能となります。
AISACの詳細については「AISAC インタラクティブサウンド機能「AISAC」 」を参照してください。
- [注意]
- リスナー基準方位角AISACと音源基準方位角AISACでは、方位角を元にしたAISACコントロール値への変換ルールが異なります
発音数制御
- 3Dポジショニングに関する発音数制御は、大きく分けて2つ存在します。
- 距離によるボイスプライオリティ減衰
- カテゴリキュープライオリティにおける近距離プライオリティ
ここでは「距離によるボイスプライオリティ減衰」についてのみ説明します。
発音数制御および近距離プライオリティの詳細については、「 発音数制御 」を参照してください。
- CriAtomEx3dSourceConfig::enable_voice_priority_decay を有効にし、 criAtomEx3dSource_Create 関数の引数に指定して実行すると、距離によるボイスプライオリティ減衰が有効になります。
最小減衰距離のときを0、最大減衰距離のときを-255とし、リスナーと当該音源の距離に応じてボイスプライオリティが線形に変化します。
- [注意]
- 本機能で算出されるボイスプライオリティは加算適用されます
そのため、データ上やプレーヤの設定値と合算されます
- ボイスプライオリティの変動は各キューないし音源の減衰距離設定に依存します
リスナーと音源の距離のみで発音制御を行いたい場合は、カテゴリキュープライオリティにおける近距離プライオリティを使用してください
マルチポジショニング再生
- 複数の音源のパラメーターを考慮した「マルチポジショニング再生」が可能です。
複数の音源を管理する音源リストを単一のExプレーヤーに対して設定することで、 その音源リストに追加されている全ての音源のパラメーターが、定位や減衰等の計算に用いられます。
- [準備]
使用の際には以下の点に注意してください。
- 音源リストに追加可能な音源数に上限はありませんが、音源数と処理負荷は比例します。
- Exプレーヤーに対して音源リストが設定されている状態で音源をExプレーヤーに対して設定すると、先に設定されていた音源リストはExプレーヤーからクリアされ、新たに設定した音源がEXプレーヤーに設定されます。
- 既にExプレーヤーに設定されており、かつ音源リストに追加されている音源は、新たに別の音源リストに追加することは出来ません。
- 距離のボイスプライオリティ減衰は、常にリスナーとの距離が最小である音源の設定値が適用されます。
- ドップラーゲイン等によるピッチ変更は行われません。
関連API
-
ランダム位置再生
- 3D音源の位置を再生時にランダムに決定することが可能です。
-
- 上記の図のように、元となる音源を中心として各種形状におさまるように一様分布します。
現在対応している形状は以下の通りです。
- 矩形
- 直方体
- 円
- 円柱
- 球
- 自由(コールバック)
- リスト
-
- 位置のランダム化に関する設定は、ランタイムだけでなく、 CRI Atom Craft からも設定可能です。
CRI Atom Craft 上の設定方法については、「 3Dポジショニング 」の「3Dポジショニングの設定方法」を参照してください。
ランタイム上での設定について
- CriAtomEx3dSourceRandomPositionConfig 構造体にて、位置のランダム化に関する設定を行い、 criAtomEx3dSource_SetRandomPositionConfig 関数にて3D音源に設定を適用します。
設定を解除する場合は、当該関数の第二引数に対して NULL を指定してください。
- CriAtomEx3dSourceRandomPositionConfig 構造体では以下の設定が可能です。
- 3D音源の位置や向きに追従するかどうか
- 形状(座標の算出方法)
- 形状(座標の算出方法)に対する各種パラメーター配列
- 基本的な形状を使用する場合、パラメーター配列に対して形状に関する設定値を格納する必要があります。
形状とパラメーターの組み合わせは以下の表を参照してください。
-
- [備考]
- 「-」となっている欄は内部では参照しません
- 以下の形状(座標の算出方法)では、パラメーター配列は参照しません。それぞれ代わりに後述する対応が別途必要となります。
自由(コールバック)について
- 基本的な形状ではなく、ゲームエンジンなどの物理エンジンと連携して任意の形状内でランダム化を行いたい場合は、位置座標決定用のコールバック関数を使用することで対応可能です。
そのため、この設定を使用する場合はランタイム上で必ずコールバックを登録する必要があります。
- 以下の関数を使用することで、本コールバックの登録が可能です。
リストについて
- 事前に決めた座標をリストとして設定し、ランダム時に使用することが可能です。
そのため、この設定を使用する場合はランタイム上でリストに関する設定およびリストの登録する必要があります。
- CRI ADX 内部では、リストの領域を確保します。
そのため、3D音源ハンドルを作成する際に以下のコンフィグに対して、確保するリストの最大要素数を設定してください。
- また、以下の関数を使用することで、リストの登録が可能です。
ランダム化された座標の取得について
- デバック目的などでランダム化された位置座標を取得したい場合は、位置座標決定・更新時にそのボイスの座標位置を返却するコールバック関数をご利用ください。
以下の関数を使用することで、本コールバックの登録が可能です。
リスナーのオートマッチング機能
- 複数のリスナーから自動的に最短の距離にあるリスナーを割り当てる機能です。
画面分割マルチプレイなどで近いプレイヤー側で3Dポジショニングの計算を行いたい場合などに利用できます。
- [注意]
リスナーの選択を毎フレーム行うため、明示的にリスナーをセットする場合よりも負荷が上がります。
関連API
-
音源再生位置の振る舞い
- 音声再生中に3D音源の位置が更新された場合、その位置更新を再生位置に反映させるかどうかを設定することが出来ます。
- ランタイムでは再生単位で音源再生位置の振る舞いを設定できます。
CRI Atom Craft ではトラックや音声波形など、より細かい単位で設定可能です。
CRI Atom Craft 上の設定方法については、「 3Dポジショニング 」を参照してください。
ランタイム上での設定について
- criAtomExPlayer_Set3dSourcePlaybackPositionUpdateType 関数でExプレーヤに対し音源再生位置の振る舞いを設定します。
設定可能な振る舞いは以下の通りです。
音源再生位置の振る舞い
| 種類 | 説明 | 定義値 |
| デフォルト | データ側の設定値に準拠する | CRIATOMEX_3D_SOURCE_PLAYBACK_POSITION_UPDATE_TYPE_DEFAULT |
| 音源位置に追従 | 再生位置が3D音源の位置更新を反映する | CRIATOMEX_3D_SOURCE_PLAYBACK_POSITION_UPDATE_TYPE_FOLLOW |
| 再生時に固定 | 再生位置を再生開始時の3D音源位置に固定する | CRIATOMEX_3D_SOURCE_PLAYBACK_POSITION_UPDATE_TYPE_FIXED |
- [注意]
3D音源における位置以外のパラメータを更新した場合は、常に再生に反映されます。(姿勢や3Dリージョンなど)
マルチポジショニング再生では音源再生位置の振る舞いの設定は反映されず、再生位置は各3D音源の位置になります。
フォーカスポイント
- 「フォーカスポイント」 は、3Dポジショニング時にリスニングポイントを細かく制御するための機能です。
フォーカスポイントを使用することで、音源からリスナまでの「距離」と「方向」を分離して制御することが可能となります。
主な用途
- フォーカスポイントは、カメラとキャラクタが独立した三人称視点のゲームで主に使用します。
- 3Dポジショニング機能を使用して三人称視点のゲームを作成する場合、リスナをどこに配置すべきか検討する必要があります。
- カメラに配置した場合、距離に応じた音量の減衰が音源~カメラ間を基準に計算されるため、キャラクタが音源近くにいる場合でも、音量が小さくなってしまいます。
(ユーザがキャラクタと音源との距離感を把握し辛くなってしまいます。)
- また、カメラが音源に近づいた際には、画面上に表示されていない音源の音量が大きく聞こえてしまう恐れもあります。
- 上記の問題を回避する選択肢として、キャラクタにリスナを配置する方法がありますが、この方法も万全ではありません。
- キャラクタにリスナを配置した場合、キャラクタ~音源間の距離に応じて音量の減衰が決まるため、キャラクタと音源の位置関係に応じて音量が自然に減衰します。
- しかし、音源の位置が下図のようにキャラクタとカメラの間にある場合、音源がキャラクタの背後に存在するため、音がリアスピーカーから鳴る形になります。
この場合、ゲームを操作するプレーヤーにとっては、音源は前方に見える(モニタに表示される)にもかかわらず音が後ろから聞こえる形になるため、映像と音声に矛盾を感じてしまいます。
- 以上の問題は、フォーカスポイントを使用することで解消可能です。
- リスナに加えてフォーカスポイントを配置すると、音源の距離や方向を計算する起点をリスナ~フォーカスポイント間の任意の場所に設定することが可能となります。
例えば、キャラクタにフォーカスポイント、カメラにリスナをそれぞれ配置し、距離計算の起点をキャラクタ、角度計算の起点をカメラに設定すると、音量は音源~キャラクタ間の距離に応じて減衰し、音源の方向はカメラに対する角度で決定されることになります。
使用するAPI
- フォーカスポイントの制御には、以下のAPIを使用します。
-
- criAtomEx3dListener_SetFocusPoint 関数でフォーカスポイントを配置し、 criAtomEx3dListener_SetDistanceFocusLevel 関数と criAtomEx3dListener_SetDirectionFocusLevel 関数で距離と方向の起点を設定します。
- 備考:
- 距離・方向の起点となる位置は0.0f~1.0fの範囲で指定します。
0.0fがリスナ上、1.0fがフォーカスポイント上に該当します。
0.5f等を指定することで、リスナとフォーカスポイントの間の位置に起点を置くことも可能です。
空間音響接続機能「3Dトランシーバー」
- 3Dポジショニングの機能として空間音響接続機能「3Dトランシーバー」を提供しています。
本機能は3Dポジショニングの仮想空間上で音声をサブミックスし、一点から出力する機能です。
※サブミックスに関しては、実際に信号をミックスして処理しているわけではなく、ボリュームなどの パラメーターの演算によって処理を行っています。
そのため、処理負荷は通常の3Dポジショニングと同様となります。
- 本機能では、上記の図のように壁に囲まれた空間に存在する3D音源をグループ化し、 壁の外の空間の3Dリスナーに音声をサブミックスして伝えます。
- 3Dトランシーバーを用いない3Dポジショニングでは、仮に音源がゲーム上で部屋の中にあった場合でも、 音像の向きは壁を無視します。
本機能を利用することで、閉じられた空間内に存在する音を開口部からまとめて出力することが可能になります。
逆に、リスナーが閉じられた空間に侵入した場合には外の世界の音を入り口に集約して出力することができます。
- 本機能は従来の3D音源と3Dリスナーに新たに、空間によるグループ化を行う要素である3Dリージョンを付与し、 3Dトランシーバーを設定することで利用することができます。
3D音源と3Dリスナーは与えられた3Dリージョンに基づいて自動的にグループ化されます。
グループ化された音源は別の3Dリージョンを持つ3Dリスナーに対して3Dトランシーバーから音声を出力します。
- リスナーの3Dリージョンを切り替えた際、音像が急激に変化することを防ぐため、3Dトランシーバーにはクロスフェードをする機能があります。
3Dトランシーバーにはクロスフェード距離を指定でき、この範囲内ではリスナーからトランシーバーの入力位置までの距離に応じて、 トランシーバーの出力から聞こえる音と3D音源から聞こえる音がクロスフェードされます。
また、直接音領域では3D音源からの音のバランスが100になります。
よって、直接音領域内で3Dリスナーの3Dリージョンを切り替えることで、音像をシームレスに変化させることができます。
- 3D音源が3Dトランシーバーに近づいた場合も同様に、 クロスフェード領域の設定と音源とトランシーバーの入力位置の距離に応じて同様にクロスフェードが行われます。
この場合も、音源が直接音領域を通りすぎる際に3D音源の3Dリージョンを切り替えることで、 音像をシームレスに変化させることができます。
- さらに、上記の図のように3Dトランシーバーは音声の入力位置と出力位置を別に設定することが可能です。 これにより、遠隔地の音声をまとめて一点から出力するマイクとスピーカーのような演出や、 複数のキャラクター間での無線通信などを再現することが可能です。
マルチチャンネルの音声について
- 3Dポジショニングはマルチチャンネルの音声についても音源として扱うことが可能です。
但し、本来のスピーカー構成を維持したままポジショニングされます。
例えば5.1chの音声の場合、L・R・C・LFE・Ls・Rsの構成および配置を維持し、音源をどこに移動させてもそれぞれのチャンネルから再生されます。
なお、センターおよびLFEは音源のパラメーター変化に関する一切の影響を受けません。
それに対し、その他のチャンネルは全ての影響を受け、音源位置を移動させた場合はリスナーとの関係によってそれぞれの出力されるチャンネルが変化します。
リスナが正面(前方ベクトル(0.0, 0.0, 1.0)・上方ベクトル(0.0, 1.0, 0.0))を向いているときの音源位置による出力先一覧(5.1chの場合)
| リスナからみた音源位置 | Lの出力先 | Rの出力先 | Lsの出力先 | Rsの出力先 |
| 前方 | L | R | Ls | Rs |
| 右方 | R | Rs | L | Ls |
| 後方 | Rs | Ls | R | L |
| 左方 | Ls | L | Rs | R |
- 減衰距離の最小距離以下に音源を配置した場合、インテリア距離にしたがってパンされます。
インテリア距離についてはこちらを参照してください。
また、スピーカー角度はバーチャルスピーカー機能が有効になっている場合、その設定に依存します。
バーチャルスピーカーについてはこちらを参照してください。
直方体形状音源
- 3D音源に直方体形状設定を適用することで、直方体形状を持つ音源として扱われます。
従来の3D音源では一点を基準に定位されるのに対し、直方体音源では形状や範囲を考慮した、広がりのある定位が行われます。
形状内部と形状外部では、音量およびパンニングの適用方法が異なります。
音量
- 形状内部: 減衰なし
- 形状外部: 距離減衰が適用される
パンニング
- 形状内部:
- 形状外部:
- 音源方向から再生
- インテリアパンニングが適用される
使用方法
- CriAtomEx3dSourceCuboidExtent 構造体にて直方体形状パラメータを設定し、 criAtomEx3dSource_SetCuboidExtent 関数にて3D音源に設定を適用します。 設定を解除する場合は、当該関数の第二引数に対して NULL を指定してください。
- CriAtomEx3dSourceCuboidExtent 構造体では以下のパラメータを設定します。
- 以下の関数で設定される3D音源の位置および姿勢は、直方体形状の空間上の配置に影響を及ぼします。
形状外部における動作仕様
形状外部では、リスナーごとに仮想的な点音源が配置され、これに対して距離減衰およびパンニングが適用されます。
仮想的な点音源の座標は、形状表面上のリスナー最近傍点になります。
応用例
直方体形状パラメータの一部を0にすることで、厚みのない面形状や太さのない線形状とすることができます。
これを利用することで、平面音源や折れ線音源を表現できます。
詳しくは「 3Dポジショニング 直方体形状音源 」のサンプルを参照してください。
ワイドネス
- ワイドネスはマルチチャンネル音声のチャンネル間隔を操作するパラメーターです。
- ステレオ音声を再生した場合、0チャンネル目がレフトスピーカー、1チャンネル目がライトスピーカーから出力されます。
レフトスピーカーとライトスピーカーの間隔は60度であるため、ステレオ音声は60度の間隔で配置された2つの音源と考えることができます。
- ワイドネスは上記各チャンネルの音源の間隔を操作するパラメーターです。
ワイドネスのデフォルト値は1.0です。ワイドネスの値を変更することで場合、両チャンネルの音源の間隔を狭めることが可能です。
- 例えば、ステレオ音声のワイドネスの値を0.5に設定した場合は両チャンネルの間隔は30度、0に設定した場合は0度(2チャンネルの音が重なって再生される形)となります。
- 注意
- ワイドネスはマルチチャンネル音声に対してのみ効果を発揮します。
モノラル音声のワイドネス値を操作しても、聞こえ方は変わりません。
スプレッド
- スプレッドは音の広がり操作するパラメーターです。
- モノラル音声を再生した場合、デフォルト設定ではレフトスピーカーとライトスピーカーから音声が出力されます。
(設定によってはセンタースピーカーからのみ音声を出すことも可能ですが、デフォルトではレフトスピーカーとライトスピーカーを用いたファントムセンター出力となります。)
- 音声をフロントスピーカーだけでなく周囲のスピーカー(サラウンドやバック等)からも聞こえるよう調整したい場合にスプレッドを使用します。
スプレッドのデフォルト値は0です。スプレッドの値を変更することでモノラル音源が正面からだけでなく周囲のスピーカーからも出力されるようになります。
(スプレッドを1.0に設定した場合、センターとLFEを除く全てのスピーカーから同じ音量で音声が出力される形になります。)
これにより、モノラル音声の定位感を抑えることが可能です。
- 補足:
- マルチチャンネル音声に対してスプレッドを指定した場合、各チャンネルの音声に対して同様の処理が行われます。
(各チャンネルが本来の出力位置だけでなく、その周囲のスピーカーからも出力されるよう動作が変更されます。)
センドレベル
- センドレベル方式では、元波形のどのチャンネルをどのスピーカーからどれだけの音量で出力するかを指定します。