123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316 |
- #pragma once
- #include <windef.h> // general windows types
- #if defined(_XBOX)
- #include <vectorintrinsics.h>
- #endif
- #include <d3d9types.h> // for D3DVECTOR
- #if !defined(_SPEAKER_POSITIONS_)
- #define _SPEAKER_POSITIONS_
- #define SPEAKER_FRONT_LEFT 0x00000001
- #define SPEAKER_FRONT_RIGHT 0x00000002
- #define SPEAKER_FRONT_CENTER 0x00000004
- #define SPEAKER_LOW_FREQUENCY 0x00000008
- #define SPEAKER_BACK_LEFT 0x00000010
- #define SPEAKER_BACK_RIGHT 0x00000020
- #define SPEAKER_FRONT_LEFT_OF_CENTER 0x00000040
- #define SPEAKER_FRONT_RIGHT_OF_CENTER 0x00000080
- #define SPEAKER_BACK_CENTER 0x00000100
- #define SPEAKER_SIDE_LEFT 0x00000200
- #define SPEAKER_SIDE_RIGHT 0x00000400
- #define SPEAKER_TOP_CENTER 0x00000800
- #define SPEAKER_TOP_FRONT_LEFT 0x00001000
- #define SPEAKER_TOP_FRONT_CENTER 0x00002000
- #define SPEAKER_TOP_FRONT_RIGHT 0x00004000
- #define SPEAKER_TOP_BACK_LEFT 0x00008000
- #define SPEAKER_TOP_BACK_CENTER 0x00010000
- #define SPEAKER_TOP_BACK_RIGHT 0x00020000
- #define SPEAKER_RESERVED 0x7FFC0000
- #define SPEAKER_ALL 0x80000000
- #endif
- #if !defined(SPEAKER_MONO)
- #define SPEAKER_MONO SPEAKER_FRONT_CENTER
- #define SPEAKER_STEREO (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT)
- #define SPEAKER_2POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_LOW_FREQUENCY)
- #define SPEAKER_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_BACK_CENTER)
- #define SPEAKER_QUAD (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
- #define SPEAKER_4POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
- #define SPEAKER_5POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
- #define SPEAKER_7POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER)
- #define SPEAKER_5POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
- #define SPEAKER_7POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
- #endif
- #if defined(_XBOX)
- #define SPEAKER_XBOX SPEAKER_5POINT1
- #endif
- #define X3DAUDIO_HANDLE_BYTESIZE 20
- #define X3DAUDIO_PI 3.141592654f
- #define X3DAUDIO_2PI 6.283185307f
- #define X3DAUDIO_SPEED_OF_SOUND 343.5f
- #define X3DAUDIO_CALCULATE_MATRIX 0x00000001
- #define X3DAUDIO_CALCULATE_DELAY 0x00000002
- #define X3DAUDIO_CALCULATE_LPF_DIRECT 0x00000004
- #define X3DAUDIO_CALCULATE_LPF_REVERB 0x00000008
- #define X3DAUDIO_CALCULATE_REVERB 0x00000010
- #define X3DAUDIO_CALCULATE_DOPPLER 0x00000020
- #define X3DAUDIO_CALCULATE_EMITTER_ANGLE 0x00000040
- #define X3DAUDIO_CALCULATE_ZEROCENTER 0x00010000
- #define X3DAUDIO_CALCULATE_REDIRECT_TO_LFE 0x00020000
- #pragma pack(push, 1)
- typedef float FLOAT32;
- typedef D3DVECTOR X3DAUDIO_VECTOR;
- typedef BYTE X3DAUDIO_HANDLE[X3DAUDIO_HANDLE_BYTESIZE];
- typedef struct X3DAUDIO_DISTANCE_CURVE_POINT
- {
- FLOAT32 Distance;
- FLOAT32 DSPSetting;
- } X3DAUDIO_DISTANCE_CURVE_POINT, *LPX3DAUDIO_DISTANCE_CURVE_POINT;
- typedef struct X3DAUDIO_DISTANCE_CURVE
- {
- X3DAUDIO_DISTANCE_CURVE_POINT* pPoints;
- UINT32 PointCount;
- } X3DAUDIO_DISTANCE_CURVE, *LPX3DAUDIO_DISTANCE_CURVE;
- static const X3DAUDIO_DISTANCE_CURVE_POINT X3DAudioDefault_LinearCurvePoints[2] = { 0.0f, 1.0f, 1.0f, 0.0f };
- static const X3DAUDIO_DISTANCE_CURVE X3DAudioDefault_LinearCurve = { (X3DAUDIO_DISTANCE_CURVE_POINT*)&X3DAudioDefault_LinearCurvePoints[0], 2 };
- typedef struct X3DAUDIO_CONE
- {
- FLOAT32 InnerAngle;
- FLOAT32 OuterAngle;
- FLOAT32 InnerVolume;
- FLOAT32 OuterVolume;
- FLOAT32 InnerLPF;
- FLOAT32 OuterLPF;
- FLOAT32 InnerReverb;
- FLOAT32 OuterReverb;
- } X3DAUDIO_CONE, *LPX3DAUDIO_CONE;
- static const X3DAUDIO_CONE X3DAudioDefault_DirectionalCone = { X3DAUDIO_PI/2, X3DAUDIO_PI, 1.0f, 0.708f, 0.0f, 0.25f, 0.708f, 1.0f };
- typedef struct X3DAUDIO_LISTENER
- {
- X3DAUDIO_VECTOR OrientFront;
- X3DAUDIO_VECTOR OrientTop;
- X3DAUDIO_VECTOR Position;
- X3DAUDIO_VECTOR Velocity;
- X3DAUDIO_CONE* pCone;
- } X3DAUDIO_LISTENER, *LPX3DAUDIO_LISTENER;
- 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;
- typedef struct X3DAUDIO_DSP_SETTINGS
- {
- FLOAT32* pMatrixCoefficients;
- FLOAT32* pDelayTimes;
- UINT32 SrcChannelCount;
- UINT32 DstChannelCount;
- FLOAT32 LPFDirectCoefficient;
- FLOAT32 LPFReverbCoefficient;
- FLOAT32 ReverbLevel;
- FLOAT32 DopplerFactor;
- FLOAT32 EmitterToListenerAngle;
- FLOAT32 EmitterToListenerDistance;
- FLOAT32 EmitterVelocityComponent;
- FLOAT32 ListenerVelocityComponent;
- } X3DAUDIO_DSP_SETTINGS, *LPX3DAUDIO_DSP_SETTINGS;
- #if defined(_XBOX) || defined(X3DAUDIOSTATIC)
- #define X3DAUDIO_API_(type) EXTERN_C type STDAPIVCALLTYPE
- #else
- #if defined(X3DEXPORT)
- #define X3DAUDIO_API_(type) EXTERN_C __declspec(dllexport) type STDAPIVCALLTYPE
- #else
- #define X3DAUDIO_API_(type) EXTERN_C __declspec(dllimport) type STDAPIVCALLTYPE
- #endif
- #endif
- #define X3DAUDIO_IMP_(type) type STDMETHODVCALLTYPE
- X3DAUDIO_API_(void) X3DAudioInitialize (UINT32 SpeakerChannelMask, FLOAT32 SpeedOfSound, __out X3DAUDIO_HANDLE Instance);
- X3DAUDIO_API_(void) X3DAudioCalculate (__in const X3DAUDIO_HANDLE Instance, __in const X3DAUDIO_LISTENER* pListener, __in const X3DAUDIO_EMITTER* pEmitter, UINT32 Flags, __inout X3DAUDIO_DSP_SETTINGS* pDSPSettings);
- #pragma pack(pop)
|