12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793 |
- /*******************************************************************\
- * *
- * EAX.H - Environmental Audio Extensions version 5.0 *
- * for OpenAL and DirectSound3D *
- * *
- * File revision 0.9.6 version a (July 14th 2004) *
- * EAX 5.0 API Spec version 1.5 *
- * *
- \*******************************************************************/
- #ifndef EAX_H_INCLUDED
- #define EAX_H_INCLUDED
- #ifdef __cplusplus
- extern "C" {
- #endif // __cplusplus
- #ifndef OPENAL
- #include <dsound.h>
- /*
- * EAX Unified Interface (using Direct X 7) {4FF53B81-1CE0-11d3-AAB8-00A0C95949D5}
- */
- DEFINE_GUID(CLSID_EAXDirectSound,
- 0x4ff53b81,
- 0x1ce0,
- 0x11d3,
- 0xaa, 0xb8, 0x0, 0xa0, 0xc9, 0x59, 0x49, 0xd5);
-
- /*
- * EAX Unified Interface (using Direct X 8) {CA503B60-B176-11d4-A094-D0C0BF3A560C}
- */
- DEFINE_GUID(CLSID_EAXDirectSound8,
- 0xca503b60,
- 0xb176,
- 0x11d4,
- 0xa0, 0x94, 0xd0, 0xc0, 0xbf, 0x3a, 0x56, 0xc);
-
- #ifdef DIRECTSOUND_VERSION
- #if DIRECTSOUND_VERSION >= 0x0800
- __declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate8(GUID*, LPDIRECTSOUND8*, IUnknown FAR *);
- typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE8)(GUID*, LPDIRECTSOUND8*, IUnknown FAR*);
- #endif
- #endif
-
- __declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate(GUID*, LPDIRECTSOUND*, IUnknown FAR *);
- typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE)(GUID*, LPDIRECTSOUND*, IUnknown FAR*);
- #else // OPENAL
- #include <al.h>
-
- #ifndef GUID_DEFINED
- #define GUID_DEFINED
- typedef struct _GUID
- {
- unsigned long Data1;
- unsigned short Data2;
- unsigned short Data3;
- unsigned char Data4[8];
- } GUID;
- #endif // GUID_DEFINED
- #ifndef DEFINE_GUID
- #ifndef INITGUID
- #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
- extern const GUID /*FAR*/ name
- #else
- #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
- extern const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
- #endif // INITGUID
- #endif // DEFINE_GUID
- /*
- * EAX OpenAL Extensions
- */
- typedef ALenum (*EAXSet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
- typedef ALenum (*EAXGet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
- typedef ALboolean (*EAXSetBufferMode)(ALsizei, ALuint*, ALint);
- typedef ALenum (*EAXGetBufferMode)(ALuint, ALint*);
- #endif
- #pragma pack(push, 4)
- ////////////////////////////////////////////////////////////////////////////
- // Constants
- #define EAX_MAX_FXSLOTS 4
- #define EAX_MAX_ACTIVE_FXSLOTS 4
- // The EAX_NULL_GUID is used by EAXFXSLOT_LOADEFFECT, EAXCONTEXT_PRIMARYFXSLOTID
- // and EAXSOURCE_ACTIVEFXSLOTID
- // {00000000-0000-0000-0000-000000000000}
- DEFINE_GUID(EAX_NULL_GUID,
- 0x00000000,
- 0x0000,
- 0x0000,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
- // The EAX_PrimaryFXSlotID GUID is used by EAXSOURCE_ACTIVEFXSLOTID
- // {F317866D-924C-450C-861B-E6DAA25E7C20}
- DEFINE_GUID(EAX_PrimaryFXSlotID,
- 0xf317866d,
- 0x924c,
- 0x450c,
- 0x86, 0x1b, 0xe6, 0xda, 0xa2, 0x5e, 0x7c, 0x20);
- ////////////////////////////////////////////////////////////////////////////
-
-
- ////////////////////////////////////////////////////////////////////////////
- // Structures
- // Use this structure for EAXCONTEXT_EAXSESSION property
- #ifndef EAXSESSIONPROPERTIES_DEFINED
- #define EAXSESSIONPROPERTIES_DEFINED
- typedef struct _EAXSESSIONPROPERTIES
- {
- unsigned long ulEAXVersion;
- unsigned long ulMaxActiveSends;
- } EAXSESSIONPROPERTIES, *LPEAXSESSIONPROPERTIES;
- #endif
- // Use this structure for EAXCONTEXT_ALL property.
- #ifndef EAXCONTEXTPROPERTIES_DEFINED
- #define EAXCONTEXTPROPERTIES_DEFINED
- typedef struct _EAXCONTEXTPROPERTIES
- {
- GUID guidPrimaryFXSlotID;
- float flDistanceFactor;
- float flAirAbsorptionHF;
- float flHFReference;
- float flMacroFXFactor;
- } EAXCONTEXTPROPERTIES, *LPEAXCONTEXTPROPERTIES;
- #endif
- // Use this structure for EAXSOURCE_ALLPARAMETERS
- // - all levels are hundredths of decibels
- // - all delays are in seconds
- //
- // NOTE: This structure may change in future EAX versions.
- // It is recommended to initialize fields by name:
- // myBuffer.lDirect = 0;
- // myBuffer.lDirectHF = -200;
- // ...
- // myBuffer.dwFlags = myFlags /* see EAXSOURCEFLAGS below */ ;
- // instead of:
- // myBuffer = { 0, -200, ... , 0x00000003 };
- //
- #ifndef EAXSOURCEPROPERTIES_DEFINED
- #define EAXSOURCEPROPERTIES_DEFINED
- typedef struct _EAXSOURCEPROPERTIES
- {
- long lDirect; // direct path level (at low and mid frequencies)
- long lDirectHF; // relative direct path level at high frequencies
- long lRoom; // room effect level (at low and mid frequencies)
- long lRoomHF; // relative room effect level at high frequencies
- long lObstruction; // main obstruction control (attenuation at high frequencies)
- float flObstructionLFRatio; // obstruction low-frequency level re. main control
- long lOcclusion; // main occlusion control (attenuation at high frequencies)
- float flOcclusionLFRatio; // occlusion low-frequency level re. main control
- float flOcclusionRoomRatio; // relative occlusion control for room effect
- float flOcclusionDirectRatio; // relative occlusion control for direct path
- long lExclusion; // main exlusion control (attenuation at high frequencies)
- float flExclusionLFRatio; // exclusion low-frequency level re. main control
- long lOutsideVolumeHF; // outside sound cone level at high frequencies
- float flDopplerFactor; // like DS3D flDopplerFactor but per source
- float flRolloffFactor; // like DS3D flRolloffFactor but per source
- float flRoomRolloffFactor; // like DS3D flRolloffFactor but for room effect
- float flAirAbsorptionFactor; // multiplies EAXREVERB_AIRABSORPTIONHF
- unsigned long ulFlags; // modifies the behavior of properties
- float flMacroFXFactor; //###TODO### add comment here
- } EAXSOURCEPROPERTIES, *LPEAXSOURCEPROPERTIES;
- #endif
- // Use this structure for EAXSOURCE_ALL2DPARAMETERS
- // - all levels are hundredths of decibels
- // - all delays are in seconds
- //
- // NOTE: This structure may change in future EAX versions.
- // It is recommended to initialize fields by name:
- // myBuffer.lDirect = 0;
- // myBuffer.lDirectHF = -200;
- // ...
- // myBuffer.dwFlags = myFlags /* see EAXSOURCEFLAGS below */ ;
- // instead of:
- // myBuffer = { 0, -200, ... , 0x00000003 };
- //
- #ifndef EAXSOURCE2DPROPERTIES_DEFINED
- #define EAXSOURCE2DPROPERTIES_DEFINED
- typedef struct _EAXSOURCE2DPROPERTIES
- {
- long lDirect; // direct path level (at low and mid frequencies)
- long lDirectHF; // relative direct path level at high frequencies
- long lRoom; // room effect level (at low and mid frequencies)
- long lRoomHF; // relative room effect level at high frequencies
- unsigned long ulFlags; // modifies the behavior of properties
- } EAXSOURCE2DPROPERTIES, *LPEAXSOURCE2DPROPERTIES;
- #endif
- // Use this structure for EAXSOURCE_ALLSENDPARAMETERS
- // - all levels are hundredths of decibels
- //
- #ifndef EAXSOURCEALLSENDPROPERTIES_DEFINED
- #define EAXSOURCEALLSENDPROPERTIES_DEFINED
- typedef struct _EAXSOURCEALLSENDPROPERTIES
- {
- GUID guidReceivingFXSlotID;
- long lSend; // send level (at low and mid frequencies)
- long lSendHF; // relative send level at high frequencies
- long lOcclusion;
- float flOcclusionLFRatio;
- float flOcclusionRoomRatio;
- float flOcclusionDirectRatio;
- long lExclusion;
- float flExclusionLFRatio;
- } EAXSOURCEALLSENDPROPERTIES, *LPEAXSOURCEALLSENDPROPERTIES;
- #endif
- // Use this structure for EAXSOURCE_SPEAKERLEVELS
- // - level is in hundredths of decibels
- //
- #ifndef EAXSPEAKERLEVELPROPERTIES_DEFINED
- #define EAXSPEAKERLEVELPROPERTIES_DEFINED
- typedef struct _EAXSPEAKERLEVELPROPERTIES
- {
- long lSpeakerID;
- long lLevel;
- } EAXSPEAKERLEVELPROPERTIES, *LPEAXSPEAKERLEVELPROPERTIES;
- #endif
- // Use this structure for EAXSOURCE_ACTIVEFXSLOTID
- #ifndef EAXACTIVEFXSLOTS_DEFINED
- #define EAXACTIVEFXSLOTS_DEFINED
- typedef struct _EAXACTIVEFXSLOTS
- {
- GUID guidActiveFXSlots[EAX_MAX_ACTIVE_FXSLOTS];
- } EAXACTIVEFXSLOTS, *LPEAXACTIVEFXSLOTS;
- #endif
- // Use this structure for EAXSOURCE_OBSTRUCTIONPARAMETERS property.
- #ifndef EAXOBSTRUCTIONPROPERTIES_DEFINED
- #define EAXOBSTRUCTIONPROPERTIES_DEFINED
- typedef struct _EAXOBSTRUCTIONPROPERTIES
- {
- long lObstruction;
- float flObstructionLFRatio;
- } EAXOBSTRUCTIONPROPERTIES, *LPEAXOBSTRUCTIONPROPERTIES;
- #endif
- // Use this structure for EAXSOURCE_OCCLUSIONPARAMETERS property.
- #ifndef EAXOCCLUSIONPROPERTIES_DEFINED
- #define EAXOCCLUSIONPROPERTIES_DEFINED
- typedef struct _EAXOCCLUSIONPROPERTIES
- {
- long lOcclusion;
- float flOcclusionLFRatio;
- float flOcclusionRoomRatio;
- float flOcclusionDirectRatio;
- } EAXOCCLUSIONPROPERTIES, *LPEAXOCCLUSIONPROPERTIES;
- #endif
- // Use this structure for EAXSOURCE_EXCLUSIONPARAMETERS property.
- #ifndef EAXEXCLUSIONPROPERTIES_DEFINED
- #define EAXEXCLUSIONPROPERTIES_DEFINED
- typedef struct _EAXEXCLUSIONPROPERTIES
- {
- long lExclusion;
- float flExclusionLFRatio;
- } EAXEXCLUSIONPROPERTIES, *LPEAXEXCLUSIONPROPERTIES;
- #endif
- // Use this structure for EAXSOURCE_SENDPARAMETERS properties.
- #ifndef EAXSOURCESENDPROPERTIES_DEFINED
- #define EAXSOURCESENDPROPERTIES_DEFINED
- typedef struct _EAXSOURCESENDPROPERTIES
- {
- GUID guidReceivingFXSlotID;
- long lSend;
- long lSendHF;
- } EAXSOURCESENDPROPERTIES, *LPEAXSOURCESENDPROPERTIES;
- #endif
- // Use this structure for EAXSOURCE_OCCLUSIONSENDPARAMETERS
- #ifndef EAXSOURCEOCCLUSIONSENDPROPERTIES_DEFINED
- #define EAXSOURCEOCCLUSIONSENDPROPERTIES_DEFINED
- typedef struct _EAXSOURCEOCCLUSIONSENDPROPERTIES
- {
- GUID guidReceivingFXSlotID;
- long lOcclusion;
- float flOcclusionLFRatio;
- float flOcclusionRoomRatio;
- float flOcclusionDirectRatio;
- } EAXSOURCEOCCLUSIONSENDPROPERTIES, *LPEAXSOURCEOCCLUSIONSENDPROPERTIES;
- #endif
- // Use this structure for EAXSOURCE_EXCLUSIONSENDPARAMETERS
- #ifndef EAXSOURCEEXCLUSIONSENDPROPERTIES_DEFINED
- #define EAXSOURCEEXCLUSIONSENDPROPERTIES_DEFINED
- typedef struct _EAXSOURCEEXCLUSIONSENDPROPERTIES
- {
- GUID guidReceivingFXSlotID;
- long lExclusion;
- float flExclusionLFRatio;
- } EAXSOURCEEXCLUSIONSENDPROPERTIES, *LPEAXSOURCEEXCLUSIONSENDPROPERTIES;
- #endif
- // Use this structure for EAXFXSLOT_ALLPARAMETERS
- // - all levels are hundredths of decibels
- //
- // NOTE: This structure may change in future EAX versions.
- // It is recommended to initialize fields by name:
- // myFXSlot.guidLoadEffect = EAX_REVERB_EFFECT;
- // myFXSlot.lVolume = 0;
- // myFXSlot.lLock = 1;
- // myFXSlot.ulFlags = myFlags /* see EAXFXSLOTFLAGS below */ ;
- // instead of:
- // myFXSlot = { EAX_REVERB_EFFECT, 0, 1, 0x00000001 };
- //
- #ifndef EAXFXSLOTPROPERTIES_DEFINED
- #define EAXFXSLOTPROPERTIES_DEFINED
- typedef struct _EAXFXSLOTPROPERTIES
- {
- GUID guidLoadEffect;
- long lVolume;
- long lLock;
- unsigned long ulFlags;
- long lOcclusion;
- float flOcclusionLFRatio;
- } EAXFXSLOTPROPERTIES, *LPEAXFXSLOTPROPERTIES;
- #endif
- // Use this structure for EAXREVERB_REFLECTIONSPAN and EAXREVERB_REVERBPAN properties.
- #ifndef EAXVECTOR_DEFINED
- #define EAXVECTOR_DEFINED
- typedef struct _EAXVECTOR {
- float x;
- float y;
- float z;
- } EAXVECTOR;
- #endif
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // Error Codes
- #define EAX_OK 0
- #define EAXERR_INVALID_OPERATION (-1)
- #define EAXERR_INVALID_VALUE (-2)
- #define EAXERR_NO_EFFECT_LOADED (-3)
- #define EAXERR_UNKNOWN_EFFECT (-4)
- #define EAXERR_INCOMPATIBLE_SOURCE_TYPE (-5)
- #define EAXERR_INCOMPATIBLE_EAX_VERSION (-6)
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // Context Object
- // {57E13437-B932-4ab2-B8BD-5266C1A887EE}
- DEFINE_GUID(EAXPROPERTYID_EAX50_Context,
- 0x57e13437,
- 0xb932,
- 0x4ab2,
- 0xb8, 0xbd, 0x52, 0x66, 0xc1, 0xa8, 0x87, 0xee);
- // For compatibility with future EAX versions:
- #define EAXPROPERTYID_EAX_Context EAXPROPERTYID_EAX50_Context
- typedef enum
- {
- EAXCONTEXT_NONE = 0,
- EAXCONTEXT_ALLPARAMETERS,
- EAXCONTEXT_PRIMARYFXSLOTID,
- EAXCONTEXT_DISTANCEFACTOR,
- EAXCONTEXT_AIRABSORPTIONHF,
- EAXCONTEXT_HFREFERENCE,
- EAXCONTEXT_LASTERROR,
- EAXCONTEXT_SPEAKERCONFIG,
- EAXCONTEXT_EAXSESSION,
- EAXCONTEXT_MACROFXFACTOR
- } EAXCONTEXT_PROPERTY;
- // OR these flags with property id
- #define EAXCONTEXT_PARAMETER_IMMEDIATE 0x00000000 // changes take effect immediately
- #define EAXCONTEXT_PARAMETER_DEFER 0x80000000 // changes take effect later
- #define EAXCONTEXT_PARAMETER_COMMITDEFERREDSETTINGS (EAXCONTEXT_NONE | \
- EAXCONTEXT_PARAMETER_IMMEDIATE)
- // EAX Context property ranges and defaults:
- #define EAXCONTEXT_DEFAULTPRIMARYFXSLOTID EAXPROPERTYID_EAX50_FXSlot0
- #define EAXCONTEXT_MINDISTANCEFACTOR FLT_MIN //minimum positive value
- #define EAXCONTEXT_MAXDISTANCEFACTOR FLT_MAX
- #define EAXCONTEXT_DEFAULTDISTANCEFACTOR 1.0f
- #define EAXCONTEXT_MINAIRABSORPTIONHF (-100.0f)
- #define EAXCONTEXT_MAXAIRABSORPTIONHF 0.0f
- #define EAXCONTEXT_DEFAULTAIRABSORPTIONHF (-5.0f)
- #define EAXCONTEXT_MINHFREFERENCE 1000.0f
- #define EAXCONTEXT_MAXHFREFERENCE 20000.0f
- #define EAXCONTEXT_DEFAULTHFREFERENCE 5000.0f
- #define EAXCONTEXT_DEFAULTLASTERROR EAX_OK
- enum {
- HEADPHONES = 0,
- SPEAKERS_2,
- SPEAKERS_4,
- SPEAKERS_5, // 5.1 speakers
- SPEAKERS_6, // 6.1 speakers
- SPEAKERS_7, // 7.1 speakers
- };
- enum {
- EAX_40 = 5, // EAX 4.0
- EAX_50 = 6, // EAX 5.0
- };
- // min,max, default values for ulEAXVersion in struct EAXSESSIONPROPERTIES
- #define EAXCONTEXT_MINEAXSESSION EAX_40
- #define EAXCONTEXT_MAXEAXSESSION EAX_50
- #define EAXCONTEXT_DEFAULTEAXSESSION EAX_40
- // min,max, default values for ulMaxActiveSends in struct EAXSESSIONPROPERTIES
- #define EAXCONTEXT_MINMAXACTIVESENDS 2
- #define EAXCONTEXT_MAXMAXACTIVESENDS 4
- #define EAXCONTEXT_DEFAULTMAXACTIVESENDS 2
- #define EAXCONTEXT_MINMACROFXFACTOR 0.0f
- #define EAXCONTEXT_MAXMACROFXFACTOR 1.0f
- #define EAXCONTEXT_DEFAULTMACROFXFACTOR 0.0f
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // Effect Slot Objects
- // {91F9590F-C388-407a-84B0-1BAE0EF71ABC}
- DEFINE_GUID(EAXPROPERTYID_EAX50_FXSlot0,
- 0x91f9590f,
- 0xc388,
- 0x407a,
- 0x84, 0xb0, 0x1b, 0xae, 0xe, 0xf7, 0x1a, 0xbc);
- // {8F5F7ACA-9608-4965-8137-8213C7B9D9DE}
- DEFINE_GUID(EAXPROPERTYID_EAX50_FXSlot1,
- 0x8f5f7aca,
- 0x9608,
- 0x4965,
- 0x81, 0x37, 0x82, 0x13, 0xc7, 0xb9, 0xd9, 0xde);
- // {3C0F5252-9834-46f0-A1D8-5B95C4A00A30}
- DEFINE_GUID(EAXPROPERTYID_EAX50_FXSlot2,
- 0x3c0f5252,
- 0x9834,
- 0x46f0,
- 0xa1, 0xd8, 0x5b, 0x95, 0xc4, 0xa0, 0xa, 0x30);
- // {E2EB0EAA-E806-45e7-9F86-06C1571A6FA3}
- DEFINE_GUID(EAXPROPERTYID_EAX50_FXSlot3,
- 0xe2eb0eaa,
- 0xe806,
- 0x45e7,
- 0x9f, 0x86, 0x6, 0xc1, 0x57, 0x1a, 0x6f, 0xa3);
- // For compatibility with future EAX versions:
- #define EAXPROPERTYID_EAX_FXSlot0 EAXPROPERTYID_EAX50_FXSlot0
- #define EAXPROPERTYID_EAX_FXSlot1 EAXPROPERTYID_EAX50_FXSlot1
- #define EAXPROPERTYID_EAX_FXSlot2 EAXPROPERTYID_EAX50_FXSlot2
- #define EAXPROPERTYID_EAX_FXSlot3 EAXPROPERTYID_EAX50_FXSlot3
- // FXSlot object properties
- typedef enum
- {
- EAXFXSLOT_PARAMETER = 0, // range 0-0x40 reserved for loaded effect parameters
- EAXFXSLOT_NONE = 0x10000,
- EAXFXSLOT_ALLPARAMETERS,
- EAXFXSLOT_LOADEFFECT,
- EAXFXSLOT_VOLUME,
- EAXFXSLOT_LOCK,
- EAXFXSLOT_FLAGS,
- EAXFXSLOT_OCCLUSION,
- EAXFXSLOT_OCCLUSIONLFRATIO
- } EAXFXSLOT_PROPERTY;
- // Note: The number and order of flags may change in future EAX versions.
- // To insure future compatibility, use flag defines as follows:
- // myFlags = EAXFXSLOTFLAGS_ENVIRONMENT;
- // instead of:
- // myFlags = 0x00000001;
- //
- #define EAXFXSLOTFLAGS_ENVIRONMENT 0x00000001
- #define EAXFXSLOTFLAGS_UPMIX 0x00000002
- #define EAXFXSLOTFLAGS_RESERVED 0xFFFFFFFC // reserved future use
- // EAX Effect Slot property ranges and defaults:
- #define EAXFXSLOT_MINVOLUME (-10000)
- #define EAXFXSLOT_MAXVOLUME 0
- #define EAXFXSLOT_DEFAULTVOLUME 0
- enum
- {
- EAXFXSLOT_UNLOCKED = 0,
- EAXFXSLOT_LOCKED = 1
- };
- #define EAXFXSLOT_MINLOCK 0
- #define EAXFXSLOT_MAXLOCK 1
- #define EAXFXSLOT_MINOCCLUSION (-10000)
- #define EAXFXSLOT_MAXOCCLUSION 0
- #define EAXFXSLOT_DEFAULTOCCLUSION 0
- #define EAXFXSLOT_MINOCCLUSIONLFRATIO 0.0f
- #define EAXFXSLOT_MAXOCCLUSIONLFRATIO 1.0f
- #define EAXFXSLOT_DEFAULTOCCLUSIONLFRATIO 0.25f
- #define EAXFXSLOT_DEFAULTFLAGS (EAXFXSLOTFLAGS_ENVIRONMENT | \
- EAXFXSLOTFLAGS_UPMIX ) // ignored for reverb
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // Source Object
- // {5EDF82F0-24A7-4f38-8E64-2F09CA05DEE1}
- DEFINE_GUID(EAXPROPERTYID_EAX50_Source,
- 0x5edf82f0,
- 0x24a7,
- 0x4f38,
- 0x8e, 0x64, 0x2f, 0x9, 0xca, 0x5, 0xde, 0xe1);
- // For compatibility with future EAX versions:
- #define EAXPROPERTYID_EAX_Source EAXPROPERTYID_EAX50_Source
- // Source object properties
- typedef enum
- {
- EAXSOURCE_NONE,
- EAXSOURCE_ALLPARAMETERS,
- EAXSOURCE_OBSTRUCTIONPARAMETERS,
- EAXSOURCE_OCCLUSIONPARAMETERS,
- EAXSOURCE_EXCLUSIONPARAMETERS,
- EAXSOURCE_DIRECT,
- EAXSOURCE_DIRECTHF,
- EAXSOURCE_ROOM,
- EAXSOURCE_ROOMHF,
- EAXSOURCE_OBSTRUCTION,
- EAXSOURCE_OBSTRUCTIONLFRATIO,
- EAXSOURCE_OCCLUSION,
- EAXSOURCE_OCCLUSIONLFRATIO,
- EAXSOURCE_OCCLUSIONROOMRATIO,
- EAXSOURCE_OCCLUSIONDIRECTRATIO,
- EAXSOURCE_EXCLUSION,
- EAXSOURCE_EXCLUSIONLFRATIO,
- EAXSOURCE_OUTSIDEVOLUMEHF,
- EAXSOURCE_DOPPLERFACTOR,
- EAXSOURCE_ROLLOFFFACTOR,
- EAXSOURCE_ROOMROLLOFFFACTOR,
- EAXSOURCE_AIRABSORPTIONFACTOR,
- EAXSOURCE_FLAGS,
- EAXSOURCE_SENDPARAMETERS,
- EAXSOURCE_ALLSENDPARAMETERS,
- EAXSOURCE_OCCLUSIONSENDPARAMETERS,
- EAXSOURCE_EXCLUSIONSENDPARAMETERS,
- EAXSOURCE_ACTIVEFXSLOTID,
- EAXSOURCE_MACROFXFACTOR,
- EAXSOURCE_SPEAKERLEVELS,
- EAXSOURCE_ALL2DPARAMETERS,
- } EAXSOURCE_PROPERTY;
- // OR these flags with property id
- #define EAXSOURCE_PARAMETER_IMMEDIATE 0x00000000 // changes take effect immediately
- #define EAXSOURCE_PARAMETER_DEFERRED 0x80000000 // changes take effect later
- #define EAXSOURCE_PARAMETER_COMMITDEFERREDSETTINGS (EAXSOURCE_NONE | \
- EAXSOURCE_PARAMETER_IMMEDIATE)
- // Used by EAXSOURCE_FLAGS for EAXSOURCEFLAGS_xxxAUTO
- // TRUE: value is computed automatically - property is an offset
- // FALSE: value is used directly
- //
- // Note: The number and order of flags may change in future EAX versions.
- // To insure future compatibility, use flag defines as follows:
- // myFlags = EAXSOURCE_DIRECTHFAUTO | EAXSOURCE_ROOMAUTO;
- // instead of:
- // myFlags = 0x00000003;
- //
- #define EAXSOURCEFLAGS_DIRECTHFAUTO 0x00000001 // relates to EAXSOURCE_DIRECTHF
- #define EAXSOURCEFLAGS_ROOMAUTO 0x00000002 // relates to EAXSOURCE_ROOM
- #define EAXSOURCEFLAGS_ROOMHFAUTO 0x00000004 // relates to EAXSOURCE_ROOMHF
- #define EAXSOURCEFLAGS_3DELEVATIONFILTER 0x00000008
- #define EAXSOURCEFLAGS_UPMIX 0x00000010
- #define EAXSOURCEFLAGS_APPLYSPEAKERLEVELS 0x00000020
- #define EAXSOURCEFLAGS_RESERVED 0xFFFFFFC0 // reserved future use
- // EAX Source property ranges and defaults:
- #define EAXSOURCE_MINSEND (-10000)
- #define EAXSOURCE_MAXSEND 0
- #define EAXSOURCE_DEFAULTSEND 0
- #define EAXSOURCE_MINSENDHF (-10000)
- #define EAXSOURCE_MAXSENDHF 0
- #define EAXSOURCE_DEFAULTSENDHF 0
- #define EAXSOURCE_MINDIRECT (-10000)
- #define EAXSOURCE_MAXDIRECT 1000
- #define EAXSOURCE_DEFAULTDIRECT 0
- #define EAXSOURCE_MINDIRECTHF (-10000)
- #define EAXSOURCE_MAXDIRECTHF 0
- #define EAXSOURCE_DEFAULTDIRECTHF 0
- #define EAXSOURCE_MINROOM (-10000)
- #define EAXSOURCE_MAXROOM 1000
- #define EAXSOURCE_DEFAULTROOM 0
- #define EAXSOURCE_MINROOMHF (-10000)
- #define EAXSOURCE_MAXROOMHF 0
- #define EAXSOURCE_DEFAULTROOMHF 0
- #define EAXSOURCE_MINOBSTRUCTION (-10000)
- #define EAXSOURCE_MAXOBSTRUCTION 0
- #define EAXSOURCE_DEFAULTOBSTRUCTION 0
- #define EAXSOURCE_MINOBSTRUCTIONLFRATIO 0.0f
- #define EAXSOURCE_MAXOBSTRUCTIONLFRATIO 1.0f
- #define EAXSOURCE_DEFAULTOBSTRUCTIONLFRATIO 0.0f
- #define EAXSOURCE_MINOCCLUSION (-10000)
- #define EAXSOURCE_MAXOCCLUSION 0
- #define EAXSOURCE_DEFAULTOCCLUSION 0
- #define EAXSOURCE_MINOCCLUSIONLFRATIO 0.0f
- #define EAXSOURCE_MAXOCCLUSIONLFRATIO 1.0f
- #define EAXSOURCE_DEFAULTOCCLUSIONLFRATIO 0.25f
- #define EAXSOURCE_MINOCCLUSIONROOMRATIO 0.0f
- #define EAXSOURCE_MAXOCCLUSIONROOMRATIO 10.0f
- #define EAXSOURCE_DEFAULTOCCLUSIONROOMRATIO 1.5f
- #define EAXSOURCE_MINOCCLUSIONDIRECTRATIO 0.0f
- #define EAXSOURCE_MAXOCCLUSIONDIRECTRATIO 10.0f
- #define EAXSOURCE_DEFAULTOCCLUSIONDIRECTRATIO 1.0f
- #define EAXSOURCE_MINEXCLUSION (-10000)
- #define EAXSOURCE_MAXEXCLUSION 0
- #define EAXSOURCE_DEFAULTEXCLUSION 0
- #define EAXSOURCE_MINEXCLUSIONLFRATIO 0.0f
- #define EAXSOURCE_MAXEXCLUSIONLFRATIO 1.0f
- #define EAXSOURCE_DEFAULTEXCLUSIONLFRATIO 1.0f
- #define EAXSOURCE_MINOUTSIDEVOLUMEHF (-10000)
- #define EAXSOURCE_MAXOUTSIDEVOLUMEHF 0
- #define EAXSOURCE_DEFAULTOUTSIDEVOLUMEHF 0
- #define EAXSOURCE_MINDOPPLERFACTOR 0.0f
- #define EAXSOURCE_MAXDOPPLERFACTOR 10.f
- #define EAXSOURCE_DEFAULTDOPPLERFACTOR 1.0f
- #define EAXSOURCE_MINROLLOFFFACTOR 0.0f
- #define EAXSOURCE_MAXROLLOFFFACTOR 10.f
- #define EAXSOURCE_DEFAULTROLLOFFFACTOR 0.0f
- #define EAXSOURCE_MINROOMROLLOFFFACTOR 0.0f
- #define EAXSOURCE_MAXROOMROLLOFFFACTOR 10.f
- #define EAXSOURCE_DEFAULTROOMROLLOFFFACTOR 0.0f
- #define EAXSOURCE_MINAIRABSORPTIONFACTOR 0.0f
- #define EAXSOURCE_MAXAIRABSORPTIONFACTOR 10.0f
- #define EAXSOURCE_DEFAULTAIRABSORPTIONFACTOR 0.0f
- #define EAXSOURCE_MINMACROFXFACTOR 0.0f
- #define EAXSOURCE_MAXMACROFXFACTOR 1.0f
- #define EAXSOURCE_DEFAULTMACROFXFACTOR 1.0f
- #define EAXSOURCE_MINSPEAKERLEVEL (-10000)
- #define EAXSOURCE_MAXSPEAKERLEVEL 0
- #define EAXSOURCE_DEFAULTSPEAKERLEVEL (-10000)
- enum
- {
- EAXSPEAKER_FRONT_LEFT = 1,
- EAXSPEAKER_FRONT_CENTER = 2,
- EAXSPEAKER_FRONT_RIGHT = 3,
- EAXSPEAKER_SIDE_RIGHT = 4,
- EAXSPEAKER_REAR_RIGHT = 5,
- EAXSPEAKER_REAR_CENTER = 6,
- EAXSPEAKER_REAR_LEFT = 7,
- EAXSPEAKER_SIDE_LEFT = 8,
- EAXSPEAKER_LOW_FREQUENCY = 9
- };
- // EAXSOURCEFLAGS_DIRECTHFAUTO, EAXSOURCEFLAGS_ROOMAUTO and EAXSOURCEFLAGS_ROOMHFAUTO are ignored for 2D sources
- // EAXSOURCEFLAGS_UPMIX is ignored for 3D sources
- #define EAXSOURCE_DEFAULTFLAGS (EAXSOURCEFLAGS_DIRECTHFAUTO | \
- EAXSOURCEFLAGS_ROOMAUTO | \
- EAXSOURCEFLAGS_ROOMHFAUTO | \
- EAXSOURCEFLAGS_UPMIX )
- // A 3D Source's default ACTIVEFXSLOTID is { EAX_NULL_GUID, EAX_PrimaryFXSlotID, EAX_NULL_GUID, EAX_NULL_GUID }
- #define EAXSOURCE_3DDEFAULTACTIVEFXSLOTID {{ EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
- EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
- EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
- EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] }, \
- { EAX_PrimaryFXSlotID.Data1, EAX_PrimaryFXSlotID.Data2, \
- EAX_PrimaryFXSlotID.Data3, EAX_PrimaryFXSlotID.Data4[0], \
- EAX_PrimaryFXSlotID.Data4[1],EAX_PrimaryFXSlotID.Data4[2], \
- EAX_PrimaryFXSlotID.Data4[3],EAX_PrimaryFXSlotID.Data4[4], \
- EAX_PrimaryFXSlotID.Data4[5],EAX_PrimaryFXSlotID.Data4[6], \
- EAX_PrimaryFXSlotID.Data4[7] }, \
- { EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
- EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
- EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
- EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] }, \
- { EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
- EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
- EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
- EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] } }
- // A 2D Source's default ACTIVEFXSLOTID is { EAX_NULL_GUID, EAX_NULL_GUID, EAX_NULL_GUID, EAX_NULL_GUID }
- #define EAXSOURCE_2DDEFAULTACTIVEFXSLOTID {{ EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
- EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
- EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
- EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] }, \
- { EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
- EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
- EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
- EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] }, \
- { EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
- EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
- EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
- EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] }, \
- { EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
- EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
- EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
- EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] } }
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // Reverb Effect
- // EAX REVERB {0CF95C8F-A3CC-4849-B0B6-832ECC1822DF}
- DEFINE_GUID(EAX_REVERB_EFFECT,
- 0xcf95c8f,
- 0xa3cc,
- 0x4849,
- 0xb0, 0xb6, 0x83, 0x2e, 0xcc, 0x18, 0x22, 0xdf);
- // Reverb effect properties
- typedef enum
- {
- EAXREVERB_NONE,
- EAXREVERB_ALLPARAMETERS,
- EAXREVERB_ENVIRONMENT,
- EAXREVERB_ENVIRONMENTSIZE,
- EAXREVERB_ENVIRONMENTDIFFUSION,
- EAXREVERB_ROOM,
- EAXREVERB_ROOMHF,
- EAXREVERB_ROOMLF,
- EAXREVERB_DECAYTIME,
- EAXREVERB_DECAYHFRATIO,
- EAXREVERB_DECAYLFRATIO,
- EAXREVERB_REFLECTIONS,
- EAXREVERB_REFLECTIONSDELAY,
- EAXREVERB_REFLECTIONSPAN,
- EAXREVERB_REVERB,
- EAXREVERB_REVERBDELAY,
- EAXREVERB_REVERBPAN,
- EAXREVERB_ECHOTIME,
- EAXREVERB_ECHODEPTH,
- EAXREVERB_MODULATIONTIME,
- EAXREVERB_MODULATIONDEPTH,
- EAXREVERB_AIRABSORPTIONHF,
- EAXREVERB_HFREFERENCE,
- EAXREVERB_LFREFERENCE,
- EAXREVERB_ROOMROLLOFFFACTOR,
- EAXREVERB_FLAGS,
- } EAXREVERB_PROPERTY;
- // OR these flags with property id
- #define EAXREVERB_IMMEDIATE 0x00000000 // changes take effect immediately
- #define EAXREVERB_DEFERRED 0x80000000 // changes take effect later
- #define EAXREVERB_COMMITDEFERREDSETTINGS (EAXREVERB_NONE | \
- EAXREVERB_IMMEDIATE)
- // used by EAXREVERB_ENVIRONMENT
- enum
- {
- EAX_ENVIRONMENT_GENERIC,
- EAX_ENVIRONMENT_PADDEDCELL,
- EAX_ENVIRONMENT_ROOM,
- EAX_ENVIRONMENT_BATHROOM,
- EAX_ENVIRONMENT_LIVINGROOM,
- EAX_ENVIRONMENT_STONEROOM,
- EAX_ENVIRONMENT_AUDITORIUM,
- EAX_ENVIRONMENT_CONCERTHALL,
- EAX_ENVIRONMENT_CAVE,
- EAX_ENVIRONMENT_ARENA,
- EAX_ENVIRONMENT_HANGAR,
- EAX_ENVIRONMENT_CARPETEDHALLWAY,
- EAX_ENVIRONMENT_HALLWAY,
- EAX_ENVIRONMENT_STONECORRIDOR,
- EAX_ENVIRONMENT_ALLEY,
- EAX_ENVIRONMENT_FOREST,
- EAX_ENVIRONMENT_CITY,
- EAX_ENVIRONMENT_MOUNTAINS,
- EAX_ENVIRONMENT_QUARRY,
- EAX_ENVIRONMENT_PLAIN,
- EAX_ENVIRONMENT_PARKINGLOT,
- EAX_ENVIRONMENT_SEWERPIPE,
- EAX_ENVIRONMENT_UNDERWATER,
- EAX_ENVIRONMENT_DRUGGED,
- EAX_ENVIRONMENT_DIZZY,
- EAX_ENVIRONMENT_PSYCHOTIC,
- EAX_ENVIRONMENT_UNDEFINED,
- EAX_ENVIRONMENT_COUNT
- };
- // Used by EAXREVERB_FLAGS
- //
- // Note: The number and order of flags may change in future EAX versions.
- // It is recommended to use the flag defines as follows:
- // myFlags = EAXREVERBFLAGS_DECAYTIMESCALE | EAXREVERBFLAGS_REVERBSCALE;
- // instead of:
- // myFlags = 0x00000009;
- //
- // These flags determine what properties are affected by environment size.
- #define EAXREVERBFLAGS_DECAYTIMESCALE 0x00000001 // reverberation decay time
- #define EAXREVERBFLAGS_REFLECTIONSSCALE 0x00000002 // reflection level
- #define EAXREVERBFLAGS_REFLECTIONSDELAYSCALE 0x00000004 // initial reflection delay time
- #define EAXREVERBFLAGS_REVERBSCALE 0x00000008 // reflections level
- #define EAXREVERBFLAGS_REVERBDELAYSCALE 0x00000010 // late reverberation delay time
- #define EAXREVERBFLAGS_ECHOTIMESCALE 0x00000040 // echo time
- #define EAXREVERBFLAGS_MODULATIONTIMESCALE 0x00000080 // modulation time
- // This flag limits high-frequency decay time according to air absorption.
- #define EAXREVERBFLAGS_DECAYHFLIMIT 0x00000020
- #define EAXREVERBFLAGS_RESERVED 0xFFFFFF00 // reserved future use
- // Use this structure for EAXREVERB_ALLPARAMETERS
- // - all levels are hundredths of decibels
- // - all times and delays are in seconds
- //
- // NOTE: This structure may change in future EAX versions.
- // It is recommended to initialize fields by name:
- // myReverb.lRoom = -1000;
- // myReverb.lRoomHF = -100;
- // ...
- // myReverb.dwFlags = myFlags /* see EAXREVERBFLAGS below */ ;
- // instead of:
- // myReverb = { -1000, -100, ... , 0x00000009 };
- // If you want to save and load presets in binary form, you
- // should define your own structure to insure future compatibility.
- //
- #ifndef EAXREVERBPROPERTIES_DEFINED
- #define EAXREVERBPROPERTIES_DEFINED
- typedef struct _EAXREVERBPROPERTIES
- {
- unsigned long ulEnvironment; // sets all reverb properties
- float flEnvironmentSize; // environment size in meters
- float flEnvironmentDiffusion; // environment diffusion
- long lRoom; // room effect level (at mid frequencies)
- long lRoomHF; // relative room effect level at high frequencies
- long lRoomLF; // relative room effect level at low frequencies
- float flDecayTime; // reverberation decay time at mid frequencies
- float flDecayHFRatio; // high-frequency to mid-frequency decay time ratio
- float flDecayLFRatio; // low-frequency to mid-frequency decay time ratio
- long lReflections; // early reflections level relative to room effect
- float flReflectionsDelay; // initial reflection delay time
- EAXVECTOR vReflectionsPan; // early reflections panning vector
- long lReverb; // late reverberation level relative to room effect
- float flReverbDelay; // late reverberation delay time relative to initial reflection
- EAXVECTOR vReverbPan; // late reverberation panning vector
- float flEchoTime; // echo time
- float flEchoDepth; // echo depth
- float flModulationTime; // modulation time
- float flModulationDepth; // modulation depth
- float flAirAbsorptionHF; // change in level per meter at high frequencies
- float flHFReference; // reference high frequency
- float flLFReference; // reference low frequency
- float flRoomRolloffFactor; // like DS3D flRolloffFactor but for room effect
- unsigned long ulFlags; // modifies the behavior of properties
- } EAXREVERBPROPERTIES, *LPEAXREVERBPROPERTIES;
- #endif
- // Property ranges and defaults:
- #define EAXREVERB_MINENVIRONMENT 0
- #define EAXREVERB_MAXENVIRONMENT (EAX_ENVIRONMENT_COUNT-1)
- #define EAXREVERB_DEFAULTENVIRONMENT EAX_ENVIRONMENT_GENERIC
- #define EAXREVERB_MINENVIRONMENTSIZE 1.0f
- #define EAXREVERB_MAXENVIRONMENTSIZE 100.0f
- #define EAXREVERB_DEFAULTENVIRONMENTSIZE 7.5f
- #define EAXREVERB_MINENVIRONMENTDIFFUSION 0.0f
- #define EAXREVERB_MAXENVIRONMENTDIFFUSION 1.0f
- #define EAXREVERB_DEFAULTENVIRONMENTDIFFUSION 1.0f
- #define EAXREVERB_MINROOM (-10000)
- #define EAXREVERB_MAXROOM 0
- #define EAXREVERB_DEFAULTROOM (-1000)
- #define EAXREVERB_MINROOMHF (-10000)
- #define EAXREVERB_MAXROOMHF 0
- #define EAXREVERB_DEFAULTROOMHF (-100)
- #define EAXREVERB_MINROOMLF (-10000)
- #define EAXREVERB_MAXROOMLF 0
- #define EAXREVERB_DEFAULTROOMLF 0
- #define EAXREVERB_MINDECAYTIME 0.1f
- #define EAXREVERB_MAXDECAYTIME 20.0f
- #define EAXREVERB_DEFAULTDECAYTIME 1.49f
- #define EAXREVERB_MINDECAYHFRATIO 0.1f
- #define EAXREVERB_MAXDECAYHFRATIO 2.0f
- #define EAXREVERB_DEFAULTDECAYHFRATIO 0.83f
- #define EAXREVERB_MINDECAYLFRATIO 0.1f
- #define EAXREVERB_MAXDECAYLFRATIO 2.0f
- #define EAXREVERB_DEFAULTDECAYLFRATIO 1.00f
- #define EAXREVERB_MINREFLECTIONS (-10000)
- #define EAXREVERB_MAXREFLECTIONS 1000
- #define EAXREVERB_DEFAULTREFLECTIONS (-2602)
- #define EAXREVERB_MINREFLECTIONSDELAY 0.0f
- #define EAXREVERB_MAXREFLECTIONSDELAY 0.3f
- #define EAXREVERB_DEFAULTREFLECTIONSDELAY 0.007f
- #define EAXREVERB_DEFAULTREFLECTIONSPAN {0.0f, 0.0f, 0.0f}
- #define EAXREVERB_MINREVERB (-10000)
- #define EAXREVERB_MAXREVERB 2000
- #define EAXREVERB_DEFAULTREVERB 200
- #define EAXREVERB_MINREVERBDELAY 0.0f
- #define EAXREVERB_MAXREVERBDELAY 0.1f
- #define EAXREVERB_DEFAULTREVERBDELAY 0.011f
- #define EAXREVERB_DEFAULTREVERBPAN {0.0f, 0.0f, 0.0f}
- #define EAXREVERB_MINECHOTIME 0.075f
- #define EAXREVERB_MAXECHOTIME 0.25f
- #define EAXREVERB_DEFAULTECHOTIME 0.25f
- #define EAXREVERB_MINECHODEPTH 0.0f
- #define EAXREVERB_MAXECHODEPTH 1.0f
- #define EAXREVERB_DEFAULTECHODEPTH 0.0f
- #define EAXREVERB_MINMODULATIONTIME 0.04f
- #define EAXREVERB_MAXMODULATIONTIME 4.0f
- #define EAXREVERB_DEFAULTMODULATIONTIME 0.25f
- #define EAXREVERB_MINMODULATIONDEPTH 0.0f
- #define EAXREVERB_MAXMODULATIONDEPTH 1.0f
- #define EAXREVERB_DEFAULTMODULATIONDEPTH 0.0f
- #define EAXREVERB_MINAIRABSORPTIONHF (-100.0f)
- #define EAXREVERB_MAXAIRABSORPTIONHF 0.0f
- #define EAXREVERB_DEFAULTAIRABSORPTIONHF (-5.0f)
- #define EAXREVERB_MINHFREFERENCE 1000.0f
- #define EAXREVERB_MAXHFREFERENCE 20000.0f
- #define EAXREVERB_DEFAULTHFREFERENCE 5000.0f
- #define EAXREVERB_MINLFREFERENCE 20.0f
- #define EAXREVERB_MAXLFREFERENCE 1000.0f
- #define EAXREVERB_DEFAULTLFREFERENCE 250.0f
- #define EAXREVERB_MINROOMROLLOFFFACTOR 0.0f
- #define EAXREVERB_MAXROOMROLLOFFFACTOR 10.0f
- #define EAXREVERB_DEFAULTROOMROLLOFFFACTOR 0.0f
- #define EAXREVERB_DEFAULTFLAGS (EAXREVERBFLAGS_DECAYTIMESCALE | \
- EAXREVERBFLAGS_REFLECTIONSSCALE | \
- EAXREVERBFLAGS_REFLECTIONSDELAYSCALE | \
- EAXREVERBFLAGS_REVERBSCALE | \
- EAXREVERBFLAGS_REVERBDELAYSCALE | \
- EAXREVERBFLAGS_DECAYHFLIMIT)
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // New Effect Types
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // AGC Compressor Effect
- // EAX AGC COMPRESSOR {BFB7A01E-7825-4039-927F-3AABDA0C560}
- DEFINE_GUID(EAX_AGCCOMPRESSOR_EFFECT,
- 0xbfb7a01e,
- 0x7825,
- 0x4039,
- 0x92, 0x7f, 0x3, 0xaa, 0xbd, 0xa0, 0xc5, 0x60);
- // AGC Compressor properties
- typedef enum
- {
- EAXAGCCOMPRESSOR_NONE,
- EAXAGCCOMPRESSOR_ALLPARAMETERS,
- EAXAGCCOMPRESSOR_ONOFF
- } EAXAGCCOMPRESSOR_PROPERTY;
- // OR these flags with property id
- #define EAXAGCCOMPRESSOR_IMMEDIATE 0x00000000 // changes take effect immediately
- #define EAXAGCCOMPRESSOR_DEFERRED 0x80000000 // changes take effect later
- #define EAXAGCCOMPRESSOR_COMMITDEFERREDSETTINGS (EAXAGCCOMPRESSOR_NONE | \
- EAXAGCCOMPRESSOR_IMMEDIATE)
- // Use this structure for EAXAGCCOMPRESSOR_ALLPARAMETERS
- #ifndef EAXAGCCOMPRESSORPROPERTIES_DEFINED
- #define EAXAGCCOMPRESSORPROPERTIES_DEFINED
- typedef struct _EAXAGCCOMPRESSORPROPERTIES
- {
- unsigned long ulOnOff; // Switch Compressor on or off
- } EAXAGCCOMPRESSORPROPERTIES, *LPEAXAGCCOMPRESSORPROPERTIES;
- #endif
- // Property ranges and defaults:
- #define EAXAGCCOMPRESSOR_MINONOFF 0
- #define EAXAGCCOMPRESSOR_MAXONOFF 1
- #define EAXAGCCOMPRESSOR_DEFAULTONOFF 1
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // Autowah Effect
- // EAX AUTOWAH {EC3130C0-AC7A-11D2-88DD-A024D13CE1}
- DEFINE_GUID(EAX_AUTOWAH_EFFECT,
- 0xec3130c0,
- 0xac7a,
- 0x11d2,
- 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
- // Autowah properties
- typedef enum
- {
- EAXAUTOWAH_NONE,
- EAXAUTOWAH_ALLPARAMETERS,
- EAXAUTOWAH_ATTACKTIME,
- EAXAUTOWAH_RELEASETIME,
- EAXAUTOWAH_RESONANCE,
- EAXAUTOWAH_PEAKLEVEL
- } EAXAUTOWAH_PROPERTY;
- // OR these flags with property id
- #define EAXAUTOWAH_IMMEDIATE 0x00000000 // changes take effect immediately
- #define EAXAUTOWAH_DEFERRED 0x80000000 // changes take effect later
- #define EAXAUTOWAH_COMMITDEFERREDSETTINGS (EAXAUTOWAH_NONE | \
- EAXAUTOWAH_IMMEDIATE)
- // Use this structure for EAXAUTOWAH_ALLPARAMETERS
- #ifndef EAXAUTOWAHPROPERTIES_DEFINED
- #define EAXAUTOWAHPROPERTIES_DEFINED
- typedef struct _EAXAUTOWAHPROPERTIES
- {
- float flAttackTime; // Attack time (seconds)
- float flReleaseTime; // Release time (seconds)
- long lResonance; // Resonance (mB)
- long lPeakLevel; // Peak level (mB)
- } EAXAUTOWAHPROPERTIES, *LPEAXAUTOWAHPROPERTIES;
- #endif
- // Property ranges and defaults:
- #define EAXAUTOWAH_MINATTACKTIME 0.0001f
- #define EAXAUTOWAH_MAXATTACKTIME 1.0f
- #define EAXAUTOWAH_DEFAULTATTACKTIME 0.06f
- #define EAXAUTOWAH_MINRELEASETIME 0.0001f
- #define EAXAUTOWAH_MAXRELEASETIME 1.0f
- #define EAXAUTOWAH_DEFAULTRELEASETIME 0.06f
- #define EAXAUTOWAH_MINRESONANCE 600
- #define EAXAUTOWAH_MAXRESONANCE 6000
- #define EAXAUTOWAH_DEFAULTRESONANCE 6000
- #define EAXAUTOWAH_MINPEAKLEVEL (-9000)
- #define EAXAUTOWAH_MAXPEAKLEVEL 9000
- #define EAXAUTOWAH_DEFAULTPEAKLEVEL 2100
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // Chorus Effect
- // EAX CHORUS {DE6D6FE0-AC79-11D2-88DD-A024D13CE1}
- DEFINE_GUID(EAX_CHORUS_EFFECT,
- 0xde6d6fe0,
- 0xac79,
- 0x11d2,
- 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
- // Chorus properties
- typedef enum
- {
- EAXCHORUS_NONE,
- EAXCHORUS_ALLPARAMETERS,
- EAXCHORUS_WAVEFORM,
- EAXCHORUS_PHASE,
- EAXCHORUS_RATE,
- EAXCHORUS_DEPTH,
- EAXCHORUS_FEEDBACK,
- EAXCHORUS_DELAY
- } EAXCHORUS_PROPERTY;
- // OR these flags with property id
- #define EAXCHORUS_IMMEDIATE 0x00000000 // changes take effect immediately
- #define EAXCHORUS_DEFERRED 0x80000000 // changes take effect later
- #define EAXCHORUS_COMMITDEFERREDSETTINGS (EAXCHORUS_NONE | \
- EAXCHORUS_IMMEDIATE)
- // used by EAXCHORUS_WAVEFORM
- enum
- {
- EAX_CHORUS_SINUSOID,
- EAX_CHORUS_TRIANGLE
- };
- // Use this structure for EAXCHORUS_ALLPARAMETERS
- #ifndef EAXCHORUSPROPERTIES_DEFINED
- #define EAXCHORUSPROPERTIES_DEFINED
- typedef struct _EAXCHORUSPROPERTIES
- {
- unsigned long ulWaveform; // Waveform selector - see enum above
- long lPhase; // Phase (Degrees)
- float flRate; // Rate (Hz)
- float flDepth; // Depth (0 to 1)
- float flFeedback; // Feedback (-1 to 1)
- float flDelay; // Delay (seconds)
- } EAXCHORUSPROPERTIES, *LPEAXCHORUSPROPERTIES;
- #endif
- // Property ranges and defaults:
- #define EAXCHORUS_MINWAVEFORM 0
- #define EAXCHORUS_MAXWAVEFORM 1
- #define EAXCHORUS_DEFAULTWAVEFORM 1
- #define EAXCHORUS_MINPHASE (-180)
- #define EAXCHORUS_MAXPHASE 180
- #define EAXCHORUS_DEFAULTPHASE 90
- #define EAXCHORUS_MINRATE 0.0f
- #define EAXCHORUS_MAXRATE 10.0f
- #define EAXCHORUS_DEFAULTRATE 1.1f
- #define EAXCHORUS_MINDEPTH 0.0f
- #define EAXCHORUS_MAXDEPTH 1.0f
- #define EAXCHORUS_DEFAULTDEPTH 0.1f
- #define EAXCHORUS_MINFEEDBACK (-1.0f)
- #define EAXCHORUS_MAXFEEDBACK 1.0f
- #define EAXCHORUS_DEFAULTFEEDBACK 0.25f
- #define EAXCHORUS_MINDELAY 0.0002f
- #define EAXCHORUS_MAXDELAY 0.016f
- #define EAXCHORUS_DEFAULTDELAY 0.016f
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // Distortion Effect
- // EAX DISTORTION {975A4CE0-AC7E-11D2-88DD-A024D13CE1}
- DEFINE_GUID(EAX_DISTORTION_EFFECT,
- 0x975a4ce0,
- 0xac7e,
- 0x11d2,
- 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
- // Distortion properties
- typedef enum
- {
- EAXDISTORTION_NONE,
- EAXDISTORTION_ALLPARAMETERS,
- EAXDISTORTION_EDGE,
- EAXDISTORTION_GAIN,
- EAXDISTORTION_LOWPASSCUTOFF,
- EAXDISTORTION_EQCENTER,
- EAXDISTORTION_EQBANDWIDTH
- } EAXDISTORTION_PROPERTY;
- // OR these flags with property id
- #define EAXDISTORTION_IMMEDIATE 0x00000000 // changes take effect immediately
- #define EAXDISTORTION_DEFERRED 0x80000000 // changes take effect later
- #define EAXDISTORTION_COMMITDEFERREDSETTINGS (EAXDISTORTION_NONE | \
- EAXDISTORTION_IMMEDIATE)
- // Use this structure for EAXDISTORTION_ALLPARAMETERS
- #ifndef EAXDISTORTIONPROPERTIES_DEFINED
- #define EAXDISTORTIONPROPERTIES_DEFINED
- typedef struct _EAXDISTORTIONPROPERTIES
- {
- float flEdge; // Controls the shape of the distortion (0 to 1)
- long lGain; // Controls the post distortion gain (mB)
- float flLowPassCutOff; // Controls the cut-off of the filter pre-distortion (Hz)
- float flEQCenter; // Controls the center frequency of the EQ post-distortion (Hz)
- float flEQBandwidth; // Controls the bandwidth of the EQ post-distortion (Hz)
- } EAXDISTORTIONPROPERTIES, *LPEAXDISTORTIONPROPERTIES;
- #endif
- // Property ranges and defaults:
- #define EAXDISTORTION_MINEDGE 0.0f
- #define EAXDISTORTION_MAXEDGE 1.0f
- #define EAXDISTORTION_DEFAULTEDGE 0.2f
- #define EAXDISTORTION_MINGAIN (-6000)
- #define EAXDISTORTION_MAXGAIN 0
- #define EAXDISTORTION_DEFAULTGAIN (-2600)
- #define EAXDISTORTION_MINLOWPASSCUTOFF 80.0f
- #define EAXDISTORTION_MAXLOWPASSCUTOFF 24000.0f
- #define EAXDISTORTION_DEFAULTLOWPASSCUTOFF 8000.0f
- #define EAXDISTORTION_MINEQCENTER 80.0f
- #define EAXDISTORTION_MAXEQCENTER 24000.0f
- #define EAXDISTORTION_DEFAULTEQCENTER 3600.0f
- #define EAXDISTORTION_MINEQBANDWIDTH 80.0f
- #define EAXDISTORTION_MAXEQBANDWIDTH 24000.0f
- #define EAXDISTORTION_DEFAULTEQBANDWIDTH 3600.0f
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // Echo Effect
- // EAX ECHO {E9F1BC0-AC82-11D2-88DD-A024D13CE1}
- DEFINE_GUID(EAX_ECHO_EFFECT,
- 0xe9f1bc0,
- 0xac82,
- 0x11d2,
- 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
- // Echo properties
- typedef enum
- {
- EAXECHO_NONE,
- EAXECHO_ALLPARAMETERS,
- EAXECHO_DELAY,
- EAXECHO_LRDELAY,
- EAXECHO_DAMPING,
- EAXECHO_FEEDBACK,
- EAXECHO_SPREAD
- } EAXECHO_PROPERTY;
- // OR these flags with property id
- #define EAXECHO_IMMEDIATE 0x00000000 // changes take effect immediately
- #define EAXECHO_DEFERRED 0x80000000 // changes take effect later
- #define EAXECHO_COMMITDEFERREDSETTINGS (EAXECHO_NONE | \
- EAXECHO_IMMEDIATE)
- // Use this structure for EAXECHO_ALLPARAMETERS
- #ifndef EAXECHOPROPERTIES_DEFINED
- #define EAXECHOPROPERTIES_DEFINED
- typedef struct _EAXECHOPROPERTIES
- {
- float flDelay; // Controls the initial delay time (seconds)
- float flLRDelay; // Controls the delay time between the first and second taps (seconds)
- float flDamping; // Controls a low-pass filter that dampens the echoes (0 to 1)
- float flFeedback; // Controls the duration of echo repetition (0 to 1)
- float flSpread; // Controls the left-right spread of the echoes
- } EAXECHOPROPERTIES, *LPEAXECHOPROPERTIES;
- #endif
- // Property ranges and defaults:
-
- #define EAXECHO_MINDAMPING 0.0f
- #define EAXECHO_MAXDAMPING 0.99f
- #define EAXECHO_DEFAULTDAMPING 0.5f
- #define EAXECHO_MINDELAY 0.002f
- #define EAXECHO_MAXDELAY 0.207f
- #define EAXECHO_DEFAULTDELAY 0.1f
- #define EAXECHO_MINLRDELAY 0.0f
- #define EAXECHO_MAXLRDELAY 0.404f
- #define EAXECHO_DEFAULTLRDELAY 0.1f
- #define EAXECHO_MINFEEDBACK 0.0f
- #define EAXECHO_MAXFEEDBACK 1.0f
- #define EAXECHO_DEFAULTFEEDBACK 0.5f
- #define EAXECHO_MINSPREAD (-1.0f)
- #define EAXECHO_MAXSPREAD 1.0f
- #define EAXECHO_DEFAULTSPREAD (-1.0f)
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // Equalizer Effect
- // EAX EQUALIZER {65F94CE0-9793-11D3-939D-C0F02DD6F0}
- DEFINE_GUID(EAX_EQUALIZER_EFFECT,
- 0x65f94ce0,
- 0x9793,
- 0x11d3,
- 0x93, 0x9d, 0x0, 0xc0, 0xf0, 0x2d, 0xd6, 0xf0);
- // Equalizer properties
- typedef enum
- {
- EAXEQUALIZER_NONE,
- EAXEQUALIZER_ALLPARAMETERS,
- EAXEQUALIZER_LOWGAIN,
- EAXEQUALIZER_LOWCUTOFF,
- EAXEQUALIZER_MID1GAIN,
- EAXEQUALIZER_MID1CENTER,
- EAXEQUALIZER_MID1WIDTH,
- EAXEQUALIZER_MID2GAIN,
- EAXEQUALIZER_MID2CENTER,
- EAXEQUALIZER_MID2WIDTH,
- EAXEQUALIZER_HIGHGAIN,
- EAXEQUALIZER_HIGHCUTOFF
- } EAXEQUALIZER_PROPERTY;
- // OR these flags with property id
- #define EAXEQUALIZER_IMMEDIATE 0x00000000 // changes take effect immediately
- #define EAXEQUALIZER_DEFERRED 0x80000000 // changes take effect later
- #define EAXEQUALIZER_COMMITDEFERREDSETTINGS (EAXEQUALIZER_NONE | \
- EAXEQUALIZER_IMMEDIATE)
- // Use this structure for EAXEQUALIZER_ALLPARAMETERS
- #ifndef EAXEQUALIZERPROPERTIES_DEFINED
- #define EAXEQUALIZERPROPERTIES_DEFINED
- typedef struct _EAXEQUALIZERPROPERTIES
- {
- long lLowGain; // (mB)
- float flLowCutOff; // (Hz)
- long lMid1Gain; // (mB)
- float flMid1Center; // (Hz)
- float flMid1Width; // (octaves)
- long lMid2Gain; // (mB)
- float flMid2Center; // (Hz)
- float flMid2Width; // (octaves)
- long lHighGain; // (mB)
- float flHighCutOff; // (Hz)
- } EAXEQUALIZERPROPERTIES, *LPEAXEQUALIZERPROPERTIES;
- #endif
- // Property ranges and defaults:
- #define EAXEQUALIZER_MINLOWGAIN (-1800)
- #define EAXEQUALIZER_MAXLOWGAIN 1800
- #define EAXEQUALIZER_DEFAULTLOWGAIN 0
- #define EAXEQUALIZER_MINLOWCUTOFF 50.0f
- #define EAXEQUALIZER_MAXLOWCUTOFF 800.0f
- #define EAXEQUALIZER_DEFAULTLOWCUTOFF 200.0f
- #define EAXEQUALIZER_MINMID1GAIN (-1800)
- #define EAXEQUALIZER_MAXMID1GAIN 1800
- #define EAXEQUALIZER_DEFAULTMID1GAIN 0
- #define EAXEQUALIZER_MINMID1CENTER 200.0f
- #define EAXEQUALIZER_MAXMID1CENTER 3000.0f
- #define EAXEQUALIZER_DEFAULTMID1CENTER 500.0f
- #define EAXEQUALIZER_MINMID1WIDTH 0.01f
- #define EAXEQUALIZER_MAXMID1WIDTH 1.0f
- #define EAXEQUALIZER_DEFAULTMID1WIDTH 1.0f
- #define EAXEQUALIZER_MINMID2GAIN (-1800)
- #define EAXEQUALIZER_MAXMID2GAIN 1800
- #define EAXEQUALIZER_DEFAULTMID2GAIN 0
- #define EAXEQUALIZER_MINMID2CENTER 1000.0f
- #define EAXEQUALIZER_MAXMID2CENTER 8000.0f
- #define EAXEQUALIZER_DEFAULTMID2CENTER 3000.0f
- #define EAXEQUALIZER_MINMID2WIDTH 0.01f
- #define EAXEQUALIZER_MAXMID2WIDTH 1.0f
- #define EAXEQUALIZER_DEFAULTMID2WIDTH 1.0f
- #define EAXEQUALIZER_MINHIGHGAIN (-1800)
- #define EAXEQUALIZER_MAXHIGHGAIN 1800
- #define EAXEQUALIZER_DEFAULTHIGHGAIN 0
- #define EAXEQUALIZER_MINHIGHCUTOFF 4000.0f
- #define EAXEQUALIZER_MAXHIGHCUTOFF 16000.0f
- #define EAXEQUALIZER_DEFAULTHIGHCUTOFF 6000.0f
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // Flanger Effect
- // EAX FLANGER {A70007C0-7D2-11D3-9B1E-A024D13CE1}
- DEFINE_GUID(EAX_FLANGER_EFFECT,
- 0xa70007c0,
- 0x7d2,
- 0x11d3,
- 0x9b, 0x1e, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
- // Flanger properties
- typedef enum
- {
- EAXFLANGER_NONE,
- EAXFLANGER_ALLPARAMETERS,
- EAXFLANGER_WAVEFORM,
- EAXFLANGER_PHASE,
- EAXFLANGER_RATE,
- EAXFLANGER_DEPTH,
- EAXFLANGER_FEEDBACK,
- EAXFLANGER_DELAY
- } EAXFLANGER_PROPERTY;
- // OR these flags with property id
- #define EAXFLANGER_IMMEDIATE 0x00000000 // changes take effect immediately
- #define EAXFLANGER_DEFERRED 0x80000000 // changes take effect later
- #define EAXFLANGER_COMMITDEFERREDSETTINGS (EAXFLANGER_NONE | \
- EAXFLANGER_IMMEDIATE)
- // used by EAXFLANGER_WAVEFORM
- enum
- {
- EAX_FLANGER_SINUSOID,
- EAX_FLANGER_TRIANGLE
- };
- // Use this structure for EAXFLANGER_ALLPARAMETERS
- #ifndef EAXFLANGERPROPERTIES_DEFINED
- #define EAXFLANGERPROPERTIES_DEFINED
- typedef struct _EAXFLANGERPROPERTIES
- {
- unsigned long ulWaveform; // Waveform selector - see enum above
- long lPhase; // Phase (Degrees)
- float flRate; // Rate (Hz)
- float flDepth; // Depth (0 to 1)
- float flFeedback; // Feedback (0 to 1)
- float flDelay; // Delay (seconds)
- } EAXFLANGERPROPERTIES, *LPEAXFLANGERPROPERTIES;
- #endif
- // Property ranges and defaults:
- #define EAXFLANGER_MINWAVEFORM 0
- #define EAXFLANGER_MAXWAVEFORM 1
- #define EAXFLANGER_DEFAULTWAVEFORM 1
- #define EAXFLANGER_MINPHASE (-180)
- #define EAXFLANGER_MAXPHASE 180
- #define EAXFLANGER_DEFAULTPHASE 0
- #define EAXFLANGER_MINRATE 0.0f
- #define EAXFLANGER_MAXRATE 10.0f
- #define EAXFLANGER_DEFAULTRATE 0.27f
- #define EAXFLANGER_MINDEPTH 0.0f
- #define EAXFLANGER_MAXDEPTH 1.0f
- #define EAXFLANGER_DEFAULTDEPTH 1.0f
- #define EAXFLANGER_MINFEEDBACK (-1.0f)
- #define EAXFLANGER_MAXFEEDBACK 1.0f
- #define EAXFLANGER_DEFAULTFEEDBACK (-0.5f)
- #define EAXFLANGER_MINDELAY 0.0002f
- #define EAXFLANGER_MAXDELAY 0.004f
- #define EAXFLANGER_DEFAULTDELAY 0.002f
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // Frequency Shifter Effect
- // EAX FREQUENCY SHIFTER {DC3E1880-9212-11D3-939D-C0F02DD6F0}
- DEFINE_GUID(EAX_FREQUENCYSHIFTER_EFFECT,
- 0xdc3e1880,
- 0x9212,
- 0x11d3,
- 0x93, 0x9d, 0x0, 0xc0, 0xf0, 0x2d, 0xd6, 0xf0);
- // Frequency Shifter properties
- typedef enum
- {
- EAXFREQUENCYSHIFTER_NONE,
- EAXFREQUENCYSHIFTER_ALLPARAMETERS,
- EAXFREQUENCYSHIFTER_FREQUENCY,
- EAXFREQUENCYSHIFTER_LEFTDIRECTION,
- EAXFREQUENCYSHIFTER_RIGHTDIRECTION
- } EAXFREQUENCYSHIFTER_PROPERTY;
- // OR these flags with property id
- #define EAXFREQUENCYSHIFTER_IMMEDIATE 0x00000000 // changes take effect immediately
- #define EAXFREQUENCYSHIFTER_DEFERRED 0x80000000 // changes take effect later
- #define EAXFREQUENCYSHIFTER_COMMITDEFERREDSETTINGS (EAXFREQUENCYSHIFTER_NONE | \
- EAXFREQUENCYSHIFTER_IMMEDIATE)
- // used by EAXFREQUENCYSHIFTER_LEFTDIRECTION and EAXFREQUENCYSHIFTER_RIGHTDIRECTION
- enum
- {
- EAX_FREQUENCYSHIFTER_DOWN,
- EAX_FREQUENCYSHIFTER_UP,
- EAX_FREQUENCYSHIFTER_OFF
- };
- // Use this structure for EAXFREQUENCYSHIFTER_ALLPARAMETERS
- #ifndef EAXFREQUENCYSHIFTERPROPERTIES_DEFINED
- #define EAXFREQUENCYSHIFTERPROPERTIES_DEFINED
- typedef struct _EAXFREQUENCYSHIFTERPROPERTIES
- {
- float flFrequency; // (Hz)
- unsigned long ulLeftDirection; // see enum above
- unsigned long ulRightDirection; // see enum above
- } EAXFREQUENCYSHIFTERPROPERTIES, *LPEAXFREQUENCYSHIFTERPROPERTIES;
- #endif
- // Property ranges and defaults:
- #define EAXFREQUENCYSHIFTER_MINFREQUENCY 0.0f
- #define EAXFREQUENCYSHIFTER_MAXFREQUENCY 24000.0f
- #define EAXFREQUENCYSHIFTER_DEFAULTFREQUENCY 0.0f
- #define EAXFREQUENCYSHIFTER_MINLEFTDIRECTION 0
- #define EAXFREQUENCYSHIFTER_MAXLEFTDIRECTION 2
- #define EAXFREQUENCYSHIFTER_DEFAULTLEFTDIRECTION 0
- #define EAXFREQUENCYSHIFTER_MINRIGHTDIRECTION 0
- #define EAXFREQUENCYSHIFTER_MAXRIGHTDIRECTION 2
- #define EAXFREQUENCYSHIFTER_DEFAULTRIGHTDIRECTION 0
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // Vocal Morpher Effect
- // EAX VOCAL MORPHER {E41CF10C-3383-11D2-88DD-A024D13CE1}
- DEFINE_GUID(EAX_VOCALMORPHER_EFFECT,
- 0xe41cf10c,
- 0x3383,
- 0x11d2,
- 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
- // Vocal Morpher properties
- typedef enum
- {
- EAXVOCALMORPHER_NONE,
- EAXVOCALMORPHER_ALLPARAMETERS,
- EAXVOCALMORPHER_PHONEMEA,
- EAXVOCALMORPHER_PHONEMEACOARSETUNING,
- EAXVOCALMORPHER_PHONEMEB,
- EAXVOCALMORPHER_PHONEMEBCOARSETUNING,
- EAXVOCALMORPHER_WAVEFORM,
- EAXVOCALMORPHER_RATE
- } EAXVOCALMORPHER_PROPERTY;
- // OR these flags with property id
- #define EAXVOCALMORPHER_IMMEDIATE 0x00000000 // changes take effect immediately
- #define EAXVOCALMORPHER_DEFERRED 0x80000000 // changes take effect later
- #define EAXVOCALMORPHER_COMMITDEFERREDSETTINGS (EAXVOCALMORPHER_NONE | \
- EAXVOCALMORPHER_IMMEDIATE)
- // used by EAXVOCALMORPHER_PHONEMEA and EAXVOCALMORPHER_PHONEMEB
- enum
- {
- A, E, I, O, U, AA, AE, AH, AO, EH, ER, IH, IY, UH, UW, B, D, F, G,
- J, K, L, M, N, P, R, S, T, V, Z
- };
- // used by EAXVOCALMORPHER_WAVEFORM
- enum
- {
- EAX_VOCALMORPHER_SINUSOID,
- EAX_VOCALMORPHER_TRIANGLE,
- EAX_VOCALMORPHER_SAWTOOTH
- };
- // Use this structure for EAXVOCALMORPHER_ALLPARAMETERS
- #ifndef EAXVOCALMORPHERPROPERTIES_DEFINED
- #define EAXVOCALMORPHERPROPERTIES_DEFINED
- typedef struct _EAXVOCALMORPHERPROPERTIES
- {
- unsigned long ulPhonemeA; // see enum above
- long lPhonemeACoarseTuning; // (semitones)
- unsigned long ulPhonemeB; // see enum above
- long lPhonemeBCoarseTuning; // (semitones)
- unsigned long ulWaveform; // Waveform selector - see enum above
- float flRate; // (Hz)
- } EAXVOCALMORPHERPROPERTIES, *LPEAXVOCALMORPHERPROPERTIES;
- #endif
- // Property ranges and defaults:
- #define EAXVOCALMORPHER_MINPHONEMEA 0
- #define EAXVOCALMORPHER_MAXPHONEMEA 29
- #define EAXVOCALMORPHER_DEFAULTPHONEMEA 0
- #define EAXVOCALMORPHER_MINPHONEMEACOARSETUNING (-24)
- #define EAXVOCALMORPHER_MAXPHONEMEACOARSETUNING 24
- #define EAXVOCALMORPHER_DEFAULTPHONEMEACOARSETUNING 0
- #define EAXVOCALMORPHER_MINPHONEMEB 0
- #define EAXVOCALMORPHER_MAXPHONEMEB 29
- #define EAXVOCALMORPHER_DEFAULTPHONEMEB 10
- #define EAXVOCALMORPHER_MINPHONEMEBCOARSETUNING (-24)
- #define EAXVOCALMORPHER_MAXPHONEMEBCOARSETUNING 24
- #define EAXVOCALMORPHER_DEFAULTPHONEMEBCOARSETUNING 0
- #define EAXVOCALMORPHER_MINWAVEFORM 0
- #define EAXVOCALMORPHER_MAXWAVEFORM 2
- #define EAXVOCALMORPHER_DEFAULTWAVEFORM 0
- #define EAXVOCALMORPHER_MINRATE 0.0f
- #define EAXVOCALMORPHER_MAXRATE 10.0f
- #define EAXVOCALMORPHER_DEFAULTRATE 1.41f
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // Pitch Shifter Effect
- // EAX PITCH SHIFTER {E7905100-AFB2-11D2-88DD-A024D13CE1}
- DEFINE_GUID(EAX_PITCHSHIFTER_EFFECT,
- 0xe7905100,
- 0xafb2,
- 0x11d2,
- 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
- // Pitch Shifter properties
- typedef enum
- {
- EAXPITCHSHIFTER_NONE,
- EAXPITCHSHIFTER_ALLPARAMETERS,
- EAXPITCHSHIFTER_COARSETUNE,
- EAXPITCHSHIFTER_FINETUNE
- } EAXPITCHSHIFTER_PROPERTY;
- // OR these flags with property id
- #define EAXPITCHSHIFTER_IMMEDIATE 0x00000000 // changes take effect immediately
- #define EAXPITCHSHIFTER_DEFERRED 0x80000000 // changes take effect later
- #define EAXPITCHSHIFTER_COMMITDEFERREDSETTINGS (EAXPITCHSHIFTER_NONE | \
- EAXPITCHSHIFTER_IMMEDIATE)
- // Use this structure for EAXPITCHSHIFTER_ALLPARAMETERS
- #ifndef EAXPITCHSHIFTERPROPERTIES_DEFINED
- #define EAXPITCHSHIFTERPROPERTIES_DEFINED
- typedef struct _EAXPITCHSHIFTERPROPERTIES
- {
- long lCoarseTune; // Amount of pitch shift (semitones)
- long lFineTune; // Amount of pitch shift (cents)
- } EAXPITCHSHIFTERPROPERTIES, *LPEAXPITCHSHIFTERPROPERTIES;
- #endif
- // Property ranges and defaults:
- #define EAXPITCHSHIFTER_MINCOARSETUNE (-12)
- #define EAXPITCHSHIFTER_MAXCOARSETUNE 12
- #define EAXPITCHSHIFTER_DEFAULTCOARSETUNE 12
- #define EAXPITCHSHIFTER_MINFINETUNE (-50)
- #define EAXPITCHSHIFTER_MAXFINETUNE 50
- #define EAXPITCHSHIFTER_DEFAULTFINETUNE 0
- ////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////
- // Ring Modulator Effect
- // EAX RING MODULATOR {B89FE60-AFB5-11D2-88DD-A024D13CE1}
- DEFINE_GUID(EAX_RINGMODULATOR_EFFECT,
- 0xb89fe60,
- 0xafb5,
- 0x11d2,
- 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
- // Ring Modulator properties
- typedef enum
- {
- EAXRINGMODULATOR_NONE,
- EAXRINGMODULATOR_ALLPARAMETERS,
- EAXRINGMODULATOR_FREQUENCY,
- EAXRINGMODULATOR_HIGHPASSCUTOFF,
- EAXRINGMODULATOR_WAVEFORM
- } EAXRINGMODULATOR_PROPERTY;
- // OR these flags with property id
- #define EAXRINGMODULATOR_IMMEDIATE 0x00000000 // changes take effect immediately
- #define EAXRINGMODULATOR_DEFERRED 0x80000000 // changes take effect later
- #define EAXRINGMODULATOR_COMMITDEFERREDSETTINGS (EAXRINGMODULATOR_NONE | \
- EAXRINGMODULATOR_IMMEDIATE)
- // used by EAXRINGMODULATOR_WAVEFORM
- enum
- {
- EAX_RINGMODULATOR_SINUSOID,
- EAX_RINGMODULATOR_SAWTOOTH,
- EAX_RINGMODULATOR_SQUARE
- };
- // Use this structure for EAXRINGMODULATOR_ALLPARAMETERS
- #ifndef EAXRINGMODULATORPROPERTIES_DEFINED
- #define EAXRINGMODULATORPROPERTIES_DEFINED
- typedef struct _EAXRINGMODULATORPROPERTIES
- {
- float flFrequency; // Frequency of modulation (Hz)
- float flHighPassCutOff; // Cut-off frequency of high-pass filter (Hz)
- unsigned long ulWaveform; // Waveform selector - see enum above
- } EAXRINGMODULATORPROPERTIES, *LPEAXRINGMODULATORPROPERTIES;
- #endif
- // Property ranges and defaults:
- #define EAXRINGMODULATOR_MINFREQUENCY 0.0f
- #define EAXRINGMODULATOR_MAXFREQUENCY 8000.0f
- #define EAXRINGMODULATOR_DEFAULTFREQUENCY 440.0f
- #define EAXRINGMODULATOR_MINHIGHPASSCUTOFF 0.0f
- #define EAXRINGMODULATOR_MAXHIGHPASSCUTOFF 24000.0f
- #define EAXRINGMODULATOR_DEFAULTHIGHPASSCUTOFF 800.0f
- #define EAXRINGMODULATOR_MINWAVEFORM 0
- #define EAXRINGMODULATOR_MAXWAVEFORM 2
- #define EAXRINGMODULATOR_DEFAULTWAVEFORM 0
- ////////////////////////////////////////////////////////////////////////////
- #pragma pack(pop)
- #ifdef __cplusplus
- }
- #endif // __cplusplus
- #endif
|