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
사용자 정의 월드 단위/초의 속도 벡터입니다. 이 값은 도플러 계산에만 사용됩니다. 위치는 영향을 주지 않습니다.
InnerRadius
내부 반지름 계산에 사용할 값입니다. InnerRadius가 0이면 내부 반경이 사용되지 않지만 InnerRadiusAngle은 여전히 사용될 수 있습니다. 이 값은 0.0f에서 MAX_FLT 사이여야 합니다.
InnerRadiusAngle
내부 반지름 각도 계산에 사용할 값입니다. 이 값은 0.0f에서 X3DAUDIO_PI/4.0 사이여야 합니다.
ChannelCount
X3DAUDIO_EMITTER 구조체에서 정의한 내보내기 수입니다. 0보다 커야 합니다.
ChannelRadius
ChannelCount가 1보다 큰 경우 채널이 배치되는 위치와의 거리입니다. ChannelRadius 는 행렬 계산을 위해 다중 채널 내보내기와 함께만 사용됩니다. 0.0f보다 크거나 같아야 합니다.
pChannelAzimuths
위쪽 방향 벡터에 대한 평면 직교의 전면 방향 벡터와 관련하여 채널 반경을 따라 라디안으로 azimuth로 표현되는 채널 위치의 테이블입니다. X3DAUDIO_2PI azimuth는 채널이 LFE(저주파 효과) 채널임을 지정합니다. LFE 채널은 방출기 베이스에 배치되며 pLFECurve 만을 기준으로 계산되며 pVolumeCurve는 계산되지 않습니다. pChannelAzimuths에는 적어도 ChannelCount 요소가 있어야 하지만 ChannelCount = 1인 경우 NULL일 수 있습니다. X3DAUDIO_2PI 테이블 값은 0.0f 이내여야 합니다. pChannelAzimuths 는 행렬 계산을 위해 다중 채널 내보내기와 함께 사용됩니다.
pVolumeCurve
행렬 계산에만 사용되는 볼륨 수준 거리 곡선입니다. NULL은 역제곱법을 준수하는 특수한 기본 곡선을 지정합니다. 따라서 거리가 0.0f와 CurveDistanceScaler × 1.0f 사이일 때 감쇠가 적용되지 않습니다. 거리가 CurveDistanceScaler × 1.0f보다 크면 증폭 계수는 (CurveDistanceScaler × 1.0f)/distance입니다. CurveDistanceScaler × 2.0f의 거리에서 소리는 반 볼륨 또는 -6 dB, CurveDistanceScaler × 4.0f의 거리에서, 소리는 1 분기 볼륨 또는 -12 dB 등입니다.
pVolumeCurve 및 pLFECurve는 서로 독립적입니다. pVolumeCurve 는 LFE 채널 볼륨에 영향을 주지 않습니다.
pLFECurve
기본 곡선을 사용하는 LFE 롤오프 거리 곡선 또는 NULL: [0.0f, CurveDistanceScaler ×1.0f], [CurveDistanceScaler ×1.0f, 0.0f]. pLFECurve의 NULL 값은 거리 <= CurveDistanceScaler가 감쇠 없이 고정된 역 제곱법을 준수하는 기본 곡선을 지정합니다. pVolumeCurve 및 pLFECurve 는 서로 독립적입니다. 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
Doppler 시프트 효과를 과장하는 데 사용되는 도플러 시프트 스케일러입니다. DopplerScaler 는 Doppler 계산에만 사용되며 다른 계산에는 영향을 주지 않습니다. 값은 FLT_MAX 0.0f 범위 내에 있어야 합니다.
설명
X3DAUDIO_EMITTER 단일 점 방출기에서 원뿔만 지원합니다. 다중 지점 방출기는 관련 사운드 소스 그룹을 관리하는 편리하고 효율적인 방법입니다. Doppler와 같은 모든 채널 지점 간에 많은 속성이 공유됩니다. 동일한 Doppler 시프트가 방출기의 모든 채널에 적용됩니다. 따라서 Doppler 값은 여러 개의 개별 단일 지점 내보내기에서 필요하므로 점당 계산이 아닌 한 번만 계산해야 합니다. X3DAUDIO_EMITTER 방향 벡터가 하나뿐이므로 다중 점 방출기 원뿔은 유용성이 제한적이므로 모든 채널이 동일한 방향을 향하고 있는 것처럼 동작하도록 합니다. 여러 개의 독립적인 원뿔이 필요한 경우 각각 고유한 방향으로 여러 개의 단일 지점 방출기를 사용해야 합니다.
X3DAUDIO_VECTOR 매개 변수 형식은 directX::XMFLOAT3 입력되어 x, y 및 z 부동 소수점 값을 제공합니다.
X3DAudio는 왼손 카티전 좌표계를 사용하며, x축의 값은 왼쪽에서 오른쪽으로, y축은 아래쪽에서 위쪽으로, z축은 근거리에서 먼 좌표로 증가합니다. Azimuths는 지정된 참조 방향에서 시계 방향으로 측정됩니다.
오른손 좌표와 함께 X3DAudio를 사용하려면 OrientFront, OrientTop, Position 및 Velocity의 .z 요소를 부정해야 합니다.
사용자 정의 거리 곡선의 경우 첫 번째 점의 거리 필드는 0.0f여야 하고 마지막 점의 거리 필드는 1.0f여야 합니다.
방출기가 거리를 벗어나면(CurveDistanceScaler × 1.0f) 곡선의 마지막 점이 볼륨 출력 수준을 계산하는 데 사용됩니다. 마지막 점은 다음을 통해 결정됩니다.
X3DAUDIO_DISTANCE_CURVE.pPoints[PointCount-1].DSPSetting)
내부 반지름 및 내부 반지름 각도
InnerRadius 는 소리가 수신기를 통해, 위 또는 아래를 직접 이동할 때 원점 주위의 부드러운 전환 영역을 지정하는 데 사용됩니다. 권한 상승은 InnerRadiusAngle을 지정하여 설명합니다. 이 경우 상승이 증가하거나 감소하는 소리가 결국 두 개 이상의 스피커로 소리를 출혈하기 시작합니다.내부 반경 및 내부 반경 각도를 사용하지 않으면 현재 위치/방향에 가장 가까운 두 스피커에서 발광기가 들립니다(또는 한 스피커의 정의된 각도가 있는 줄에서 직접 한 스피커에서만).
내부 반경 및 내부 반경 각도는 설명하는 원뿔 바깥쪽에 위치한 발광자에 영향을 주지 않습니다. 원뿔 내부에서는 방사체가 수신기와 (또는 바로 위 또는 아래) 위치에 있을 때 모든 스피커에서 소리가 동일하게 들릴 때까지 소리가 점차 반대쪽 스피커로 흘러 들어옵니다.
플랫폼 요구 사항
Windows 10(XAudio2.9); Windows 8, Windows Phone 8(XAudio 2.8); DirectX SDK(XAudio 2.7)요구 사항
요구 사항 | 값 |
---|---|
헤더 | x3daudio.h |