X3DAUDIO_EMITTER構造体 (x3daudio.h)

任意の数のサウンド チャネルで使用される単一ポイントまたは複数ポイントの 3D オーディオ ソースを定義します。

構文

typedef struct X3DAUDIO_EMITTER {
  X3DAUDIO_CONE           *pCone;
  X3DAUDIO_VECTOR         OrientFront;
  X3DAUDIO_VECTOR         OrientTop;
  X3DAUDIO_VECTOR         Position;
  X3DAUDIO_VECTOR         Velocity;
  FLOAT32                 InnerRadius;
  FLOAT32                 InnerRadiusAngle;
  UINT32                  ChannelCount;
  FLOAT32                 ChannelRadius;
  FLOAT32                 *pChannelAzimuths;
  X3DAUDIO_DISTANCE_CURVE *pVolumeCurve;
  X3DAUDIO_DISTANCE_CURVE *pLFECurve;
  X3DAUDIO_DISTANCE_CURVE *pLPFDirectCurve;
  X3DAUDIO_DISTANCE_CURVE *pLPFReverbCurve;
  X3DAUDIO_DISTANCE_CURVE *pReverbCurve;
  FLOAT32                 CurveDistanceScaler;
  FLOAT32                 DopplerScaler;
} X3DAUDIO_EMITTER, *LPX3DAUDIO_EMITTER;

メンバー

pCone

サウンド コーンへのポインター。 マトリックス、LPF(ダイレクトパスとリバーブパスの両方)、およびリバーブ計算用のシングルチャネルエミッタでのみ使用されます。 NULL は、エミッタが全方向であることを指定します。

OrientFront

正面方向の向き。 OrientTop では、この値は正正規である必要があります。 OrientFront は、使用時に正規化する必要があります。 コーンのない単一チャネル エミッタの場合 、OrientFront はエミッタ角度の計算にのみ使用されます。 マルチチャンネルエミッターまたはコーン付きシングルチャネルの場合、 OrientFront はマトリックス、LPF(ダイレクトパスとリバーブパスの両方)、およびリバーブ計算に使用されます。

OrientTop

上方向の向き。 この値は OrientFront では正正規である必要があります。 OrientTop は、マトリックス計算用のマルチチャネル エミッタでのみ使用されます。

Position

ユーザー定義のワールド単位での位置。 この値は ベロシティには影響しません。

Velocity

ユーザー定義のワールド単位/秒の速度ベクトル。 この値は、ドップラー計算にのみ使用されます。 Position には影響しません。

InnerRadius

内部半径の計算に使用する値。 InnerRadius が 0 の場合、内部半径は使用されませんが、InnerRadiusAngle は引き続き使用できます。 この値は、0.0f から MAX_FLT の間である必要があります。

InnerRadiusAngle

内部半径角度の計算に使用する値。 この値は、0.0f ~ X3DAUDIO_PI/4.0 の間である必要があります。

ChannelCount

X3DAUDIO_EMITTER構造体によって定義されるエミッタの数。 1 以上であることが必要です。

ChannelRadius

ChannelCount が 1 より大きい場合にチャネルが配置される位置からの距離。 ChannelRadius は、マトリックス計算用のマルチチャネル エミッタでのみ使用されます。 0.0f 以上である必要があります。

pChannelAzimuths

チャネル位置の表。トップ方向ベクトルに直交する平面内の正面方位ベクトルに対して、チャネル半径に沿ったラジアンで方位角として表されます。 X3DAUDIO_2PIの方位角は、チャネルが低周波数効果 (LFE) チャネルであることを指定します。 LFE チャネルはエミッタ ベースに配置され、 pLFECurve のみに対して計算され、 pVolumeCurve は計算されません。 pChannelAzimuths には少なくとも ChannelCount 要素が必要ですが、ChannelCount = 1 の場合は NULL にすることができます。 X3DAUDIO_2PIするには、テーブルの値が 0.0f 以内である必要があります。 pChannelAzimuths は、マトリックス計算にマルチチャネル エミッタと共に使用されます。

pVolumeCurve

ボリューム レベルの距離曲線。マトリックス計算にのみ使用されます。 NULL は、逆二乗則に準拠する特殊な既定の曲線を指定します。距離が 0.0f と CurveDistanceScaler × 1.0f の間にある場合、減衰は適用されません。 distance が CurveDistanceScaler × 1.0f より大きい場合、増幅係数は (CurveDistanceScaler × 1.0f)/distance です。 CurveDistanceScaler × 2.0f の距離では、サウンドは半分のボリュームまたは -6 dB、CurveDistanceScaler × 4.0f の距離では、サウンドは 1/4 ボリュームまたは -12 dB になります。

pVolumeCurve と pLFECurve は互いに独立しています。 pVolumeCurveLFE チャネル ボリュームには影響しません。

pLFECurve

既定の曲線を使用する場合は LFE ロールオフ距離曲線、または NULL: [0.0f, CurveDistanceScaler ×1.0f], [CurveDistanceScaler ×1.0f, 0.0f]。 pLFECurve の NULL 値は、距離 <= CurveDistanceScaler を減衰なしでクランプした逆平方則に準拠する既定の曲線を指定します。 pVolumeCurvepLFECurve は互いに独立しています。 pLFECurve は、LFE 以外のチャネル ボリュームには影響しません。

pLPFDirectCurve

ローパス フィルター (LPF) ダイレクトパス係数距離曲線、または既定の曲線を使用する場合は NULL:[0.0f, 1.0f], [1.0f, 0.75f]。 pLPFDirectCurve は、LPF 直接パス計算にのみ使用されます。

pLPFReverbCurve

LPF リバーブ パス係数距離曲線、または既定の曲線を使用する場合は NULL:[0.0f, 0.75f], [1.0f, 0.75f]。 pLPFReverbCurve は、LPF リバーブ パスの計算にのみ使用されます。

pReverbCurve

デフォルトカーブを使用するリバーブ送信レベル距離曲線、またはNULL: [0.0f, 1.0f], [1.0f, 0.0f]。

CurveDistanceScaler

正規化された距離曲線をユーザー定義のワールド単位にスケーリングしたり、効果を誇張したりするために使用される曲線距離スケーラー。 これは、他の計算には影響しません。 値は、FLT_MAX FLT_MIN範囲内である必要があります。 CurveDistanceScaler は、マトリックス、LPF (直接パスとリバーブ パスの両方)、およびリバーブの計算にのみ使用されます。

DopplerScaler

ドップラーシフト効果を誇張するために使用されるドップラーシフトスケーラー。 DopplerScaler は、ドップラー計算にのみ使用され、他の計算には影響しません。 値は、0.0f ~ FLT_MAXの範囲内である必要があります。

注釈

X3DAUDIO_EMITTER は、単一点エミッタの円錐のみをサポートします。 マルチポイントエミッタは、関連する音源グループを管理するための便利で効率的な方法です。 多くのプロパティは、ドップラーなど、すべてのチャネル ポイント間で共有されます。エミッタ内のすべてのチャネルに同じドップラー シフトが適用されます。 したがって、ドップラー値は 1 回だけ計算する必要があり、複数の個別の単一点エミッタで必要とされるようにポイント単位で計算する必要はありません。 X3DAUDIO_EMITTERは 1 つの方向ベクトルしか持たないため、マルチポイント エミッタ コーンは限られた有用性を持ち、すべてのチャネルが同じ方向に向いているかのように動作するように強制されます。 複数の独立したコーンが必要な場合は、それぞれ独自の向きを持つ複数の単一点エミッタを使用する必要があります。

パラメーター型X3DAUDIO_VECTORは DirectX::XMFLOAT3 に型指定され、x、y、および z の浮動小数点値を指定します。

X3DAudio では左利きのデカルト座標系が使用され、x 軸の値は左から右、y 軸は下から上、z 軸は近くから遠方に増加します。 方位角は、特定の基準方向から時計回りに測定されます。

右辺座標で X3DAudio を使用するには、 OrientFrontOrientTopPositionVelocity の .z 要素を否定する必要があります。

ユーザー定義の距離曲線の場合、最初のポイントの距離フィールドは 0.0f、最後のポイントの距離フィールドは 1.0f である必要があります。

エミッタが の距離 (CurveDistanceScaler × 1.0f) を超えて移動する場合、曲線の最後のポイントを使用してボリューム出力レベルが計算されます。 最後のポイントは、次によって決定されます。

X3DAUDIO_DISTANCE_CURVE.pPoints[PointCount-1].DSPSetting)

内側の半径と内側の半径の角度

InnerRadius は、サウンドがリスナーの上または下を直接移動する際に、原点周辺のスムーズな遷移領域を指定するために使用されます。 昇格は 、InnerRadiusAngle を指定することによって考慮されます。その結果、昇格が増減するサウンドは、最終的に 2 つ以上のスピーカーに音のブリードを開始します。

内部半径と内部半径角度を使用しない場合、エミッタは、現在の位置/向きに最も近い 2 つのスピーカーで可聴になります (または、1 つのスピーカーの角度が定義されたライン上にある場合は、その 1 つのスピーカーからのみ)。

内側半径と内側半径角度は、それらが記述する円錐の外側に配置されたエミッタには影響しません。 コーンの内部では、エミッタがリスナーと同じ位置(または真上または下)にあるとき、サウンドがすべてのスピーカーで均等に聞こえるまで、徐々に音が反対側のスピーカーに流れ込みます。

内側半径と内側半径の角度

プラットフォームの要件

Windows 10 (XAudio2.9);Windows 8、Windows Phone 8 (XAudio 2.8);DirectX SDK (XAudio 2.7)

要件

要件
Header x3daudio.h

関連項目

構造体