1 /*******************************************************************\
3 * EAX.H - Environmental Audio Extensions version 5.0 *
4 * for OpenAL and DirectSound3D *
6 * File revision 0.9.6 version a (July 14th 2004) *
7 * EAX 5.0 API Spec version 1.5 *
9 \*******************************************************************/
11 #ifndef EAX_H_INCLUDED
12 #define EAX_H_INCLUDED
22 * EAX Unified Interface (using Direct X 7) {4FF53B81-1CE0-11d3-AAB8-00A0C95949D5}
24 DEFINE_GUID(CLSID_EAXDirectSound,
28 0xaa, 0xb8, 0x0, 0xa0, 0xc9, 0x59, 0x49, 0xd5);
31 * EAX Unified Interface (using Direct X 8) {CA503B60-B176-11d4-A094-D0C0BF3A560C}
33 DEFINE_GUID(CLSID_EAXDirectSound8,
37 0xa0, 0x94, 0xd0, 0xc0, 0xbf, 0x3a, 0x56, 0xc);
41 #ifdef DIRECTSOUND_VERSION
42 #if DIRECTSOUND_VERSION >= 0x0800
43 __declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate8(GUID*, LPDIRECTSOUND8*, IUnknown FAR *);
44 typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE8)(GUID*, LPDIRECTSOUND8*, IUnknown FAR*);
48 __declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate(GUID*, LPDIRECTSOUND*, IUnknown FAR *);
49 typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE)(GUID*, LPDIRECTSOUND*, IUnknown FAR*);
61 unsigned char Data4[8];
63 #endif // GUID_DEFINED
67 #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
68 extern const GUID /*FAR*/ name
70 #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
71 extern const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
76 * EAX OpenAL Extensions
78 typedef ALenum (*EAXSet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
79 typedef ALenum (*EAXGet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
80 typedef ALboolean (*EAXSetBufferMode)(ALsizei, ALuint*, ALint);
81 typedef ALenum (*EAXGetBufferMode)(ALuint, ALint*);
89 ////////////////////////////////////////////////////////////////////////////
92 #define EAX_MAX_FXSLOTS 4
93 #define EAX_MAX_ACTIVE_FXSLOTS 4
95 // The EAX_NULL_GUID is used by EAXFXSLOT_LOADEFFECT, EAXCONTEXT_PRIMARYFXSLOTID
96 // and EAXSOURCE_ACTIVEFXSLOTID
98 // {00000000-0000-0000-0000-000000000000}
99 DEFINE_GUID(EAX_NULL_GUID,
103 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
105 // The EAX_PrimaryFXSlotID GUID is used by EAXSOURCE_ACTIVEFXSLOTID
106 // {F317866D-924C-450C-861B-E6DAA25E7C20}
107 DEFINE_GUID(EAX_PrimaryFXSlotID,
111 0x86, 0x1b, 0xe6, 0xda, 0xa2, 0x5e, 0x7c, 0x20);
115 ////////////////////////////////////////////////////////////////////////////
120 ////////////////////////////////////////////////////////////////////////////
123 // Use this structure for EAXCONTEXT_EAXSESSION property
124 #ifndef EAXSESSIONPROPERTIES_DEFINED
125 #define EAXSESSIONPROPERTIES_DEFINED
126 typedef struct _EAXSESSIONPROPERTIES
128 unsigned long ulEAXVersion;
129 unsigned long ulMaxActiveSends;
130 } EAXSESSIONPROPERTIES, *LPEAXSESSIONPROPERTIES;
133 // Use this structure for EAXCONTEXT_ALL property.
134 #ifndef EAXCONTEXTPROPERTIES_DEFINED
135 #define EAXCONTEXTPROPERTIES_DEFINED
136 typedef struct _EAXCONTEXTPROPERTIES
138 GUID guidPrimaryFXSlotID;
139 float flDistanceFactor;
140 float flAirAbsorptionHF;
142 float flMacroFXFactor;
143 } EAXCONTEXTPROPERTIES, *LPEAXCONTEXTPROPERTIES;
146 // Use this structure for EAXSOURCE_ALLPARAMETERS
147 // - all levels are hundredths of decibels
148 // - all delays are in seconds
150 // NOTE: This structure may change in future EAX versions.
151 // It is recommended to initialize fields by name:
152 // myBuffer.lDirect = 0;
153 // myBuffer.lDirectHF = -200;
155 // myBuffer.dwFlags = myFlags /* see EAXSOURCEFLAGS below */ ;
157 // myBuffer = { 0, -200, ... , 0x00000003 };
159 #ifndef EAXSOURCEPROPERTIES_DEFINED
160 #define EAXSOURCEPROPERTIES_DEFINED
161 typedef struct _EAXSOURCEPROPERTIES
163 long lDirect; // direct path level (at low and mid frequencies)
164 long lDirectHF; // relative direct path level at high frequencies
165 long lRoom; // room effect level (at low and mid frequencies)
166 long lRoomHF; // relative room effect level at high frequencies
167 long lObstruction; // main obstruction control (attenuation at high frequencies)
168 float flObstructionLFRatio; // obstruction low-frequency level re. main control
169 long lOcclusion; // main occlusion control (attenuation at high frequencies)
170 float flOcclusionLFRatio; // occlusion low-frequency level re. main control
171 float flOcclusionRoomRatio; // relative occlusion control for room effect
172 float flOcclusionDirectRatio; // relative occlusion control for direct path
173 long lExclusion; // main exlusion control (attenuation at high frequencies)
174 float flExclusionLFRatio; // exclusion low-frequency level re. main control
175 long lOutsideVolumeHF; // outside sound cone level at high frequencies
176 float flDopplerFactor; // like DS3D flDopplerFactor but per source
177 float flRolloffFactor; // like DS3D flRolloffFactor but per source
178 float flRoomRolloffFactor; // like DS3D flRolloffFactor but for room effect
179 float flAirAbsorptionFactor; // multiplies EAXREVERB_AIRABSORPTIONHF
180 unsigned long ulFlags; // modifies the behavior of properties
181 float flMacroFXFactor; //###TODO### add comment here
182 } EAXSOURCEPROPERTIES, *LPEAXSOURCEPROPERTIES;
186 // Use this structure for EAXSOURCE_ALL2DPARAMETERS
187 // - all levels are hundredths of decibels
188 // - all delays are in seconds
190 // NOTE: This structure may change in future EAX versions.
191 // It is recommended to initialize fields by name:
192 // myBuffer.lDirect = 0;
193 // myBuffer.lDirectHF = -200;
195 // myBuffer.dwFlags = myFlags /* see EAXSOURCEFLAGS below */ ;
197 // myBuffer = { 0, -200, ... , 0x00000003 };
199 #ifndef EAXSOURCE2DPROPERTIES_DEFINED
200 #define EAXSOURCE2DPROPERTIES_DEFINED
201 typedef struct _EAXSOURCE2DPROPERTIES
203 long lDirect; // direct path level (at low and mid frequencies)
204 long lDirectHF; // relative direct path level at high frequencies
205 long lRoom; // room effect level (at low and mid frequencies)
206 long lRoomHF; // relative room effect level at high frequencies
207 unsigned long ulFlags; // modifies the behavior of properties
208 } EAXSOURCE2DPROPERTIES, *LPEAXSOURCE2DPROPERTIES;
212 // Use this structure for EAXSOURCE_ALLSENDPARAMETERS
213 // - all levels are hundredths of decibels
215 #ifndef EAXSOURCEALLSENDPROPERTIES_DEFINED
216 #define EAXSOURCEALLSENDPROPERTIES_DEFINED
217 typedef struct _EAXSOURCEALLSENDPROPERTIES
219 GUID guidReceivingFXSlotID;
220 long lSend; // send level (at low and mid frequencies)
221 long lSendHF; // relative send level at high frequencies
223 float flOcclusionLFRatio;
224 float flOcclusionRoomRatio;
225 float flOcclusionDirectRatio;
227 float flExclusionLFRatio;
228 } EAXSOURCEALLSENDPROPERTIES, *LPEAXSOURCEALLSENDPROPERTIES;
231 // Use this structure for EAXSOURCE_SPEAKERLEVELS
232 // - level is in hundredths of decibels
234 #ifndef EAXSPEAKERLEVELPROPERTIES_DEFINED
235 #define EAXSPEAKERLEVELPROPERTIES_DEFINED
236 typedef struct _EAXSPEAKERLEVELPROPERTIES
240 } EAXSPEAKERLEVELPROPERTIES, *LPEAXSPEAKERLEVELPROPERTIES;
243 // Use this structure for EAXSOURCE_ACTIVEFXSLOTID
244 #ifndef EAXACTIVEFXSLOTS_DEFINED
245 #define EAXACTIVEFXSLOTS_DEFINED
246 typedef struct _EAXACTIVEFXSLOTS
248 GUID guidActiveFXSlots[EAX_MAX_ACTIVE_FXSLOTS];
249 } EAXACTIVEFXSLOTS, *LPEAXACTIVEFXSLOTS;
252 // Use this structure for EAXSOURCE_OBSTRUCTIONPARAMETERS property.
253 #ifndef EAXOBSTRUCTIONPROPERTIES_DEFINED
254 #define EAXOBSTRUCTIONPROPERTIES_DEFINED
255 typedef struct _EAXOBSTRUCTIONPROPERTIES
258 float flObstructionLFRatio;
259 } EAXOBSTRUCTIONPROPERTIES, *LPEAXOBSTRUCTIONPROPERTIES;
262 // Use this structure for EAXSOURCE_OCCLUSIONPARAMETERS property.
263 #ifndef EAXOCCLUSIONPROPERTIES_DEFINED
264 #define EAXOCCLUSIONPROPERTIES_DEFINED
265 typedef struct _EAXOCCLUSIONPROPERTIES
268 float flOcclusionLFRatio;
269 float flOcclusionRoomRatio;
270 float flOcclusionDirectRatio;
271 } EAXOCCLUSIONPROPERTIES, *LPEAXOCCLUSIONPROPERTIES;
274 // Use this structure for EAXSOURCE_EXCLUSIONPARAMETERS property.
275 #ifndef EAXEXCLUSIONPROPERTIES_DEFINED
276 #define EAXEXCLUSIONPROPERTIES_DEFINED
277 typedef struct _EAXEXCLUSIONPROPERTIES
280 float flExclusionLFRatio;
281 } EAXEXCLUSIONPROPERTIES, *LPEAXEXCLUSIONPROPERTIES;
284 // Use this structure for EAXSOURCE_SENDPARAMETERS properties.
285 #ifndef EAXSOURCESENDPROPERTIES_DEFINED
286 #define EAXSOURCESENDPROPERTIES_DEFINED
287 typedef struct _EAXSOURCESENDPROPERTIES
289 GUID guidReceivingFXSlotID;
292 } EAXSOURCESENDPROPERTIES, *LPEAXSOURCESENDPROPERTIES;
295 // Use this structure for EAXSOURCE_OCCLUSIONSENDPARAMETERS
296 #ifndef EAXSOURCEOCCLUSIONSENDPROPERTIES_DEFINED
297 #define EAXSOURCEOCCLUSIONSENDPROPERTIES_DEFINED
298 typedef struct _EAXSOURCEOCCLUSIONSENDPROPERTIES
300 GUID guidReceivingFXSlotID;
302 float flOcclusionLFRatio;
303 float flOcclusionRoomRatio;
304 float flOcclusionDirectRatio;
305 } EAXSOURCEOCCLUSIONSENDPROPERTIES, *LPEAXSOURCEOCCLUSIONSENDPROPERTIES;
308 // Use this structure for EAXSOURCE_EXCLUSIONSENDPARAMETERS
309 #ifndef EAXSOURCEEXCLUSIONSENDPROPERTIES_DEFINED
310 #define EAXSOURCEEXCLUSIONSENDPROPERTIES_DEFINED
311 typedef struct _EAXSOURCEEXCLUSIONSENDPROPERTIES
313 GUID guidReceivingFXSlotID;
315 float flExclusionLFRatio;
316 } EAXSOURCEEXCLUSIONSENDPROPERTIES, *LPEAXSOURCEEXCLUSIONSENDPROPERTIES;
319 // Use this structure for EAXFXSLOT_ALLPARAMETERS
320 // - all levels are hundredths of decibels
322 // NOTE: This structure may change in future EAX versions.
323 // It is recommended to initialize fields by name:
324 // myFXSlot.guidLoadEffect = EAX_REVERB_EFFECT;
325 // myFXSlot.lVolume = 0;
326 // myFXSlot.lLock = 1;
327 // myFXSlot.ulFlags = myFlags /* see EAXFXSLOTFLAGS below */ ;
329 // myFXSlot = { EAX_REVERB_EFFECT, 0, 1, 0x00000001 };
331 #ifndef EAXFXSLOTPROPERTIES_DEFINED
332 #define EAXFXSLOTPROPERTIES_DEFINED
333 typedef struct _EAXFXSLOTPROPERTIES
338 unsigned long ulFlags;
340 float flOcclusionLFRatio;
341 } EAXFXSLOTPROPERTIES, *LPEAXFXSLOTPROPERTIES;
345 // Use this structure for EAXREVERB_REFLECTIONSPAN and EAXREVERB_REVERBPAN properties.
346 #ifndef EAXVECTOR_DEFINED
347 #define EAXVECTOR_DEFINED
348 typedef struct _EAXVECTOR {
356 ////////////////////////////////////////////////////////////////////////////
361 ////////////////////////////////////////////////////////////////////////////
365 #define EAXERR_INVALID_OPERATION (-1)
366 #define EAXERR_INVALID_VALUE (-2)
367 #define EAXERR_NO_EFFECT_LOADED (-3)
368 #define EAXERR_UNKNOWN_EFFECT (-4)
369 #define EAXERR_INCOMPATIBLE_SOURCE_TYPE (-5)
370 #define EAXERR_INCOMPATIBLE_EAX_VERSION (-6)
371 ////////////////////////////////////////////////////////////////////////////
376 ////////////////////////////////////////////////////////////////////////////
379 // {57E13437-B932-4ab2-B8BD-5266C1A887EE}
380 DEFINE_GUID(EAXPROPERTYID_EAX50_Context,
384 0xb8, 0xbd, 0x52, 0x66, 0xc1, 0xa8, 0x87, 0xee);
386 // For compatibility with future EAX versions:
387 #define EAXPROPERTYID_EAX_Context EAXPROPERTYID_EAX50_Context
392 EAXCONTEXT_ALLPARAMETERS,
393 EAXCONTEXT_PRIMARYFXSLOTID,
394 EAXCONTEXT_DISTANCEFACTOR,
395 EAXCONTEXT_AIRABSORPTIONHF,
396 EAXCONTEXT_HFREFERENCE,
397 EAXCONTEXT_LASTERROR,
398 EAXCONTEXT_SPEAKERCONFIG,
399 EAXCONTEXT_EAXSESSION,
400 EAXCONTEXT_MACROFXFACTOR
401 } EAXCONTEXT_PROPERTY;
403 // OR these flags with property id
404 #define EAXCONTEXT_PARAMETER_IMMEDIATE 0x00000000 // changes take effect immediately
405 #define EAXCONTEXT_PARAMETER_DEFER 0x80000000 // changes take effect later
406 #define EAXCONTEXT_PARAMETER_COMMITDEFERREDSETTINGS (EAXCONTEXT_NONE | \
407 EAXCONTEXT_PARAMETER_IMMEDIATE)
409 // EAX Context property ranges and defaults:
410 #define EAXCONTEXT_DEFAULTPRIMARYFXSLOTID EAXPROPERTYID_EAX50_FXSlot0
412 #define EAXCONTEXT_MINDISTANCEFACTOR FLT_MIN //minimum positive value
413 #define EAXCONTEXT_MAXDISTANCEFACTOR FLT_MAX
414 #define EAXCONTEXT_DEFAULTDISTANCEFACTOR 1.0f
416 #define EAXCONTEXT_MINAIRABSORPTIONHF (-100.0f)
417 #define EAXCONTEXT_MAXAIRABSORPTIONHF 0.0f
418 #define EAXCONTEXT_DEFAULTAIRABSORPTIONHF (-5.0f)
420 #define EAXCONTEXT_MINHFREFERENCE 1000.0f
421 #define EAXCONTEXT_MAXHFREFERENCE 20000.0f
422 #define EAXCONTEXT_DEFAULTHFREFERENCE 5000.0f
424 #define EAXCONTEXT_DEFAULTLASTERROR EAX_OK
430 SPEAKERS_5, // 5.1 speakers
431 SPEAKERS_6, // 6.1 speakers
432 SPEAKERS_7, // 7.1 speakers
436 EAX_40 = 5, // EAX 4.0
437 EAX_50 = 6, // EAX 5.0
440 // min,max, default values for ulEAXVersion in struct EAXSESSIONPROPERTIES
441 #define EAXCONTEXT_MINEAXSESSION EAX_40
442 #define EAXCONTEXT_MAXEAXSESSION EAX_50
443 #define EAXCONTEXT_DEFAULTEAXSESSION EAX_40
445 // min,max, default values for ulMaxActiveSends in struct EAXSESSIONPROPERTIES
446 #define EAXCONTEXT_MINMAXACTIVESENDS 2
447 #define EAXCONTEXT_MAXMAXACTIVESENDS 4
448 #define EAXCONTEXT_DEFAULTMAXACTIVESENDS 2
450 #define EAXCONTEXT_MINMACROFXFACTOR 0.0f
451 #define EAXCONTEXT_MAXMACROFXFACTOR 1.0f
452 #define EAXCONTEXT_DEFAULTMACROFXFACTOR 0.0f
454 ////////////////////////////////////////////////////////////////////////////
459 ////////////////////////////////////////////////////////////////////////////
460 // Effect Slot Objects
462 // {91F9590F-C388-407a-84B0-1BAE0EF71ABC}
463 DEFINE_GUID(EAXPROPERTYID_EAX50_FXSlot0,
467 0x84, 0xb0, 0x1b, 0xae, 0xe, 0xf7, 0x1a, 0xbc);
469 // {8F5F7ACA-9608-4965-8137-8213C7B9D9DE}
470 DEFINE_GUID(EAXPROPERTYID_EAX50_FXSlot1,
474 0x81, 0x37, 0x82, 0x13, 0xc7, 0xb9, 0xd9, 0xde);
476 // {3C0F5252-9834-46f0-A1D8-5B95C4A00A30}
477 DEFINE_GUID(EAXPROPERTYID_EAX50_FXSlot2,
481 0xa1, 0xd8, 0x5b, 0x95, 0xc4, 0xa0, 0xa, 0x30);
483 // {E2EB0EAA-E806-45e7-9F86-06C1571A6FA3}
484 DEFINE_GUID(EAXPROPERTYID_EAX50_FXSlot3,
488 0x9f, 0x86, 0x6, 0xc1, 0x57, 0x1a, 0x6f, 0xa3);
491 // For compatibility with future EAX versions:
492 #define EAXPROPERTYID_EAX_FXSlot0 EAXPROPERTYID_EAX50_FXSlot0
493 #define EAXPROPERTYID_EAX_FXSlot1 EAXPROPERTYID_EAX50_FXSlot1
494 #define EAXPROPERTYID_EAX_FXSlot2 EAXPROPERTYID_EAX50_FXSlot2
495 #define EAXPROPERTYID_EAX_FXSlot3 EAXPROPERTYID_EAX50_FXSlot3
497 // FXSlot object properties
500 EAXFXSLOT_PARAMETER = 0, // range 0-0x40 reserved for loaded effect parameters
501 EAXFXSLOT_NONE = 0x10000,
502 EAXFXSLOT_ALLPARAMETERS,
503 EAXFXSLOT_LOADEFFECT,
508 EAXFXSLOT_OCCLUSIONLFRATIO
509 } EAXFXSLOT_PROPERTY;
511 // Note: The number and order of flags may change in future EAX versions.
512 // To insure future compatibility, use flag defines as follows:
513 // myFlags = EAXFXSLOTFLAGS_ENVIRONMENT;
515 // myFlags = 0x00000001;
517 #define EAXFXSLOTFLAGS_ENVIRONMENT 0x00000001
518 #define EAXFXSLOTFLAGS_UPMIX 0x00000002
519 #define EAXFXSLOTFLAGS_RESERVED 0xFFFFFFFC // reserved future use
521 // EAX Effect Slot property ranges and defaults:
522 #define EAXFXSLOT_MINVOLUME (-10000)
523 #define EAXFXSLOT_MAXVOLUME 0
524 #define EAXFXSLOT_DEFAULTVOLUME 0
528 EAXFXSLOT_UNLOCKED = 0,
532 #define EAXFXSLOT_MINLOCK 0
533 #define EAXFXSLOT_MAXLOCK 1
535 #define EAXFXSLOT_MINOCCLUSION (-10000)
536 #define EAXFXSLOT_MAXOCCLUSION 0
537 #define EAXFXSLOT_DEFAULTOCCLUSION 0
539 #define EAXFXSLOT_MINOCCLUSIONLFRATIO 0.0f
540 #define EAXFXSLOT_MAXOCCLUSIONLFRATIO 1.0f
541 #define EAXFXSLOT_DEFAULTOCCLUSIONLFRATIO 0.25f
543 #define EAXFXSLOT_DEFAULTFLAGS (EAXFXSLOTFLAGS_ENVIRONMENT | \
544 EAXFXSLOTFLAGS_UPMIX ) // ignored for reverb
545 ////////////////////////////////////////////////////////////////////////////
549 ////////////////////////////////////////////////////////////////////////////
552 // {5EDF82F0-24A7-4f38-8E64-2F09CA05DEE1}
553 DEFINE_GUID(EAXPROPERTYID_EAX50_Source,
557 0x8e, 0x64, 0x2f, 0x9, 0xca, 0x5, 0xde, 0xe1);
560 // For compatibility with future EAX versions:
561 #define EAXPROPERTYID_EAX_Source EAXPROPERTYID_EAX50_Source
563 // Source object properties
567 EAXSOURCE_ALLPARAMETERS,
568 EAXSOURCE_OBSTRUCTIONPARAMETERS,
569 EAXSOURCE_OCCLUSIONPARAMETERS,
570 EAXSOURCE_EXCLUSIONPARAMETERS,
575 EAXSOURCE_OBSTRUCTION,
576 EAXSOURCE_OBSTRUCTIONLFRATIO,
578 EAXSOURCE_OCCLUSIONLFRATIO,
579 EAXSOURCE_OCCLUSIONROOMRATIO,
580 EAXSOURCE_OCCLUSIONDIRECTRATIO,
582 EAXSOURCE_EXCLUSIONLFRATIO,
583 EAXSOURCE_OUTSIDEVOLUMEHF,
584 EAXSOURCE_DOPPLERFACTOR,
585 EAXSOURCE_ROLLOFFFACTOR,
586 EAXSOURCE_ROOMROLLOFFFACTOR,
587 EAXSOURCE_AIRABSORPTIONFACTOR,
589 EAXSOURCE_SENDPARAMETERS,
590 EAXSOURCE_ALLSENDPARAMETERS,
591 EAXSOURCE_OCCLUSIONSENDPARAMETERS,
592 EAXSOURCE_EXCLUSIONSENDPARAMETERS,
593 EAXSOURCE_ACTIVEFXSLOTID,
594 EAXSOURCE_MACROFXFACTOR,
595 EAXSOURCE_SPEAKERLEVELS,
596 EAXSOURCE_ALL2DPARAMETERS,
597 } EAXSOURCE_PROPERTY;
599 // OR these flags with property id
600 #define EAXSOURCE_PARAMETER_IMMEDIATE 0x00000000 // changes take effect immediately
601 #define EAXSOURCE_PARAMETER_DEFERRED 0x80000000 // changes take effect later
602 #define EAXSOURCE_PARAMETER_COMMITDEFERREDSETTINGS (EAXSOURCE_NONE | \
603 EAXSOURCE_PARAMETER_IMMEDIATE)
604 // Used by EAXSOURCE_FLAGS for EAXSOURCEFLAGS_xxxAUTO
605 // TRUE: value is computed automatically - property is an offset
606 // FALSE: value is used directly
608 // Note: The number and order of flags may change in future EAX versions.
609 // To insure future compatibility, use flag defines as follows:
610 // myFlags = EAXSOURCE_DIRECTHFAUTO | EAXSOURCE_ROOMAUTO;
612 // myFlags = 0x00000003;
614 #define EAXSOURCEFLAGS_DIRECTHFAUTO 0x00000001 // relates to EAXSOURCE_DIRECTHF
615 #define EAXSOURCEFLAGS_ROOMAUTO 0x00000002 // relates to EAXSOURCE_ROOM
616 #define EAXSOURCEFLAGS_ROOMHFAUTO 0x00000004 // relates to EAXSOURCE_ROOMHF
617 #define EAXSOURCEFLAGS_3DELEVATIONFILTER 0x00000008
618 #define EAXSOURCEFLAGS_UPMIX 0x00000010
619 #define EAXSOURCEFLAGS_APPLYSPEAKERLEVELS 0x00000020
620 #define EAXSOURCEFLAGS_RESERVED 0xFFFFFFC0 // reserved future use
622 // EAX Source property ranges and defaults:
623 #define EAXSOURCE_MINSEND (-10000)
624 #define EAXSOURCE_MAXSEND 0
625 #define EAXSOURCE_DEFAULTSEND 0
627 #define EAXSOURCE_MINSENDHF (-10000)
628 #define EAXSOURCE_MAXSENDHF 0
629 #define EAXSOURCE_DEFAULTSENDHF 0
631 #define EAXSOURCE_MINDIRECT (-10000)
632 #define EAXSOURCE_MAXDIRECT 1000
633 #define EAXSOURCE_DEFAULTDIRECT 0
635 #define EAXSOURCE_MINDIRECTHF (-10000)
636 #define EAXSOURCE_MAXDIRECTHF 0
637 #define EAXSOURCE_DEFAULTDIRECTHF 0
639 #define EAXSOURCE_MINROOM (-10000)
640 #define EAXSOURCE_MAXROOM 1000
641 #define EAXSOURCE_DEFAULTROOM 0
643 #define EAXSOURCE_MINROOMHF (-10000)
644 #define EAXSOURCE_MAXROOMHF 0
645 #define EAXSOURCE_DEFAULTROOMHF 0
647 #define EAXSOURCE_MINOBSTRUCTION (-10000)
648 #define EAXSOURCE_MAXOBSTRUCTION 0
649 #define EAXSOURCE_DEFAULTOBSTRUCTION 0
651 #define EAXSOURCE_MINOBSTRUCTIONLFRATIO 0.0f
652 #define EAXSOURCE_MAXOBSTRUCTIONLFRATIO 1.0f
653 #define EAXSOURCE_DEFAULTOBSTRUCTIONLFRATIO 0.0f
655 #define EAXSOURCE_MINOCCLUSION (-10000)
656 #define EAXSOURCE_MAXOCCLUSION 0
657 #define EAXSOURCE_DEFAULTOCCLUSION 0
659 #define EAXSOURCE_MINOCCLUSIONLFRATIO 0.0f
660 #define EAXSOURCE_MAXOCCLUSIONLFRATIO 1.0f
661 #define EAXSOURCE_DEFAULTOCCLUSIONLFRATIO 0.25f
663 #define EAXSOURCE_MINOCCLUSIONROOMRATIO 0.0f
664 #define EAXSOURCE_MAXOCCLUSIONROOMRATIO 10.0f
665 #define EAXSOURCE_DEFAULTOCCLUSIONROOMRATIO 1.5f
667 #define EAXSOURCE_MINOCCLUSIONDIRECTRATIO 0.0f
668 #define EAXSOURCE_MAXOCCLUSIONDIRECTRATIO 10.0f
669 #define EAXSOURCE_DEFAULTOCCLUSIONDIRECTRATIO 1.0f
671 #define EAXSOURCE_MINEXCLUSION (-10000)
672 #define EAXSOURCE_MAXEXCLUSION 0
673 #define EAXSOURCE_DEFAULTEXCLUSION 0
675 #define EAXSOURCE_MINEXCLUSIONLFRATIO 0.0f
676 #define EAXSOURCE_MAXEXCLUSIONLFRATIO 1.0f
677 #define EAXSOURCE_DEFAULTEXCLUSIONLFRATIO 1.0f
679 #define EAXSOURCE_MINOUTSIDEVOLUMEHF (-10000)
680 #define EAXSOURCE_MAXOUTSIDEVOLUMEHF 0
681 #define EAXSOURCE_DEFAULTOUTSIDEVOLUMEHF 0
683 #define EAXSOURCE_MINDOPPLERFACTOR 0.0f
684 #define EAXSOURCE_MAXDOPPLERFACTOR 10.f
685 #define EAXSOURCE_DEFAULTDOPPLERFACTOR 1.0f
687 #define EAXSOURCE_MINROLLOFFFACTOR 0.0f
688 #define EAXSOURCE_MAXROLLOFFFACTOR 10.f
689 #define EAXSOURCE_DEFAULTROLLOFFFACTOR 0.0f
691 #define EAXSOURCE_MINROOMROLLOFFFACTOR 0.0f
692 #define EAXSOURCE_MAXROOMROLLOFFFACTOR 10.f
693 #define EAXSOURCE_DEFAULTROOMROLLOFFFACTOR 0.0f
695 #define EAXSOURCE_MINAIRABSORPTIONFACTOR 0.0f
696 #define EAXSOURCE_MAXAIRABSORPTIONFACTOR 10.0f
697 #define EAXSOURCE_DEFAULTAIRABSORPTIONFACTOR 0.0f
699 #define EAXSOURCE_MINMACROFXFACTOR 0.0f
700 #define EAXSOURCE_MAXMACROFXFACTOR 1.0f
701 #define EAXSOURCE_DEFAULTMACROFXFACTOR 1.0f
703 #define EAXSOURCE_MINSPEAKERLEVEL (-10000)
704 #define EAXSOURCE_MAXSPEAKERLEVEL 0
705 #define EAXSOURCE_DEFAULTSPEAKERLEVEL (-10000)
709 EAXSPEAKER_FRONT_LEFT = 1,
710 EAXSPEAKER_FRONT_CENTER = 2,
711 EAXSPEAKER_FRONT_RIGHT = 3,
712 EAXSPEAKER_SIDE_RIGHT = 4,
713 EAXSPEAKER_REAR_RIGHT = 5,
714 EAXSPEAKER_REAR_CENTER = 6,
715 EAXSPEAKER_REAR_LEFT = 7,
716 EAXSPEAKER_SIDE_LEFT = 8,
717 EAXSPEAKER_LOW_FREQUENCY = 9
721 // EAXSOURCEFLAGS_DIRECTHFAUTO, EAXSOURCEFLAGS_ROOMAUTO and EAXSOURCEFLAGS_ROOMHFAUTO are ignored for 2D sources
722 // EAXSOURCEFLAGS_UPMIX is ignored for 3D sources
723 #define EAXSOURCE_DEFAULTFLAGS (EAXSOURCEFLAGS_DIRECTHFAUTO | \
724 EAXSOURCEFLAGS_ROOMAUTO | \
725 EAXSOURCEFLAGS_ROOMHFAUTO | \
726 EAXSOURCEFLAGS_UPMIX )
729 // A 3D Source's default ACTIVEFXSLOTID is { EAX_NULL_GUID, EAX_PrimaryFXSlotID, EAX_NULL_GUID, EAX_NULL_GUID }
730 #define EAXSOURCE_3DDEFAULTACTIVEFXSLOTID {{ EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
731 EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
732 EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
733 EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] }, \
734 { EAX_PrimaryFXSlotID.Data1, EAX_PrimaryFXSlotID.Data2, \
735 EAX_PrimaryFXSlotID.Data3, EAX_PrimaryFXSlotID.Data4[0], \
736 EAX_PrimaryFXSlotID.Data4[1],EAX_PrimaryFXSlotID.Data4[2], \
737 EAX_PrimaryFXSlotID.Data4[3],EAX_PrimaryFXSlotID.Data4[4], \
738 EAX_PrimaryFXSlotID.Data4[5],EAX_PrimaryFXSlotID.Data4[6], \
739 EAX_PrimaryFXSlotID.Data4[7] }, \
740 { EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
741 EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
742 EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
743 EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] }, \
744 { EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
745 EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
746 EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
747 EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] } }
749 // A 2D Source's default ACTIVEFXSLOTID is { EAX_NULL_GUID, EAX_NULL_GUID, EAX_NULL_GUID, EAX_NULL_GUID }
750 #define EAXSOURCE_2DDEFAULTACTIVEFXSLOTID {{ EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
751 EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
752 EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
753 EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] }, \
754 { EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
755 EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
756 EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
757 EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] }, \
758 { EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
759 EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
760 EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
761 EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] }, \
762 { EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
763 EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
764 EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
765 EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] } }
768 ////////////////////////////////////////////////////////////////////////////
773 ////////////////////////////////////////////////////////////////////////////
776 // EAX REVERB {0CF95C8F-A3CC-4849-B0B6-832ECC1822DF}
777 DEFINE_GUID(EAX_REVERB_EFFECT,
781 0xb0, 0xb6, 0x83, 0x2e, 0xcc, 0x18, 0x22, 0xdf);
783 // Reverb effect properties
787 EAXREVERB_ALLPARAMETERS,
788 EAXREVERB_ENVIRONMENT,
789 EAXREVERB_ENVIRONMENTSIZE,
790 EAXREVERB_ENVIRONMENTDIFFUSION,
795 EAXREVERB_DECAYHFRATIO,
796 EAXREVERB_DECAYLFRATIO,
797 EAXREVERB_REFLECTIONS,
798 EAXREVERB_REFLECTIONSDELAY,
799 EAXREVERB_REFLECTIONSPAN,
801 EAXREVERB_REVERBDELAY,
805 EAXREVERB_MODULATIONTIME,
806 EAXREVERB_MODULATIONDEPTH,
807 EAXREVERB_AIRABSORPTIONHF,
808 EAXREVERB_HFREFERENCE,
809 EAXREVERB_LFREFERENCE,
810 EAXREVERB_ROOMROLLOFFFACTOR,
812 } EAXREVERB_PROPERTY;
814 // OR these flags with property id
815 #define EAXREVERB_IMMEDIATE 0x00000000 // changes take effect immediately
816 #define EAXREVERB_DEFERRED 0x80000000 // changes take effect later
817 #define EAXREVERB_COMMITDEFERREDSETTINGS (EAXREVERB_NONE | \
820 // used by EAXREVERB_ENVIRONMENT
823 EAX_ENVIRONMENT_GENERIC,
824 EAX_ENVIRONMENT_PADDEDCELL,
825 EAX_ENVIRONMENT_ROOM,
826 EAX_ENVIRONMENT_BATHROOM,
827 EAX_ENVIRONMENT_LIVINGROOM,
828 EAX_ENVIRONMENT_STONEROOM,
829 EAX_ENVIRONMENT_AUDITORIUM,
830 EAX_ENVIRONMENT_CONCERTHALL,
831 EAX_ENVIRONMENT_CAVE,
832 EAX_ENVIRONMENT_ARENA,
833 EAX_ENVIRONMENT_HANGAR,
834 EAX_ENVIRONMENT_CARPETEDHALLWAY,
835 EAX_ENVIRONMENT_HALLWAY,
836 EAX_ENVIRONMENT_STONECORRIDOR,
837 EAX_ENVIRONMENT_ALLEY,
838 EAX_ENVIRONMENT_FOREST,
839 EAX_ENVIRONMENT_CITY,
840 EAX_ENVIRONMENT_MOUNTAINS,
841 EAX_ENVIRONMENT_QUARRY,
842 EAX_ENVIRONMENT_PLAIN,
843 EAX_ENVIRONMENT_PARKINGLOT,
844 EAX_ENVIRONMENT_SEWERPIPE,
845 EAX_ENVIRONMENT_UNDERWATER,
846 EAX_ENVIRONMENT_DRUGGED,
847 EAX_ENVIRONMENT_DIZZY,
848 EAX_ENVIRONMENT_PSYCHOTIC,
850 EAX_ENVIRONMENT_UNDEFINED,
852 EAX_ENVIRONMENT_COUNT
855 // Used by EAXREVERB_FLAGS
857 // Note: The number and order of flags may change in future EAX versions.
858 // It is recommended to use the flag defines as follows:
859 // myFlags = EAXREVERBFLAGS_DECAYTIMESCALE | EAXREVERBFLAGS_REVERBSCALE;
861 // myFlags = 0x00000009;
863 // These flags determine what properties are affected by environment size.
864 #define EAXREVERBFLAGS_DECAYTIMESCALE 0x00000001 // reverberation decay time
865 #define EAXREVERBFLAGS_REFLECTIONSSCALE 0x00000002 // reflection level
866 #define EAXREVERBFLAGS_REFLECTIONSDELAYSCALE 0x00000004 // initial reflection delay time
867 #define EAXREVERBFLAGS_REVERBSCALE 0x00000008 // reflections level
868 #define EAXREVERBFLAGS_REVERBDELAYSCALE 0x00000010 // late reverberation delay time
869 #define EAXREVERBFLAGS_ECHOTIMESCALE 0x00000040 // echo time
870 #define EAXREVERBFLAGS_MODULATIONTIMESCALE 0x00000080 // modulation time
871 // This flag limits high-frequency decay time according to air absorption.
872 #define EAXREVERBFLAGS_DECAYHFLIMIT 0x00000020
873 #define EAXREVERBFLAGS_RESERVED 0xFFFFFF00 // reserved future use
875 // Use this structure for EAXREVERB_ALLPARAMETERS
876 // - all levels are hundredths of decibels
877 // - all times and delays are in seconds
879 // NOTE: This structure may change in future EAX versions.
880 // It is recommended to initialize fields by name:
881 // myReverb.lRoom = -1000;
882 // myReverb.lRoomHF = -100;
884 // myReverb.dwFlags = myFlags /* see EAXREVERBFLAGS below */ ;
886 // myReverb = { -1000, -100, ... , 0x00000009 };
887 // If you want to save and load presets in binary form, you
888 // should define your own structure to insure future compatibility.
890 #ifndef EAXREVERBPROPERTIES_DEFINED
891 #define EAXREVERBPROPERTIES_DEFINED
892 typedef struct _EAXREVERBPROPERTIES
894 unsigned long ulEnvironment; // sets all reverb properties
895 float flEnvironmentSize; // environment size in meters
896 float flEnvironmentDiffusion; // environment diffusion
897 long lRoom; // room effect level (at mid frequencies)
898 long lRoomHF; // relative room effect level at high frequencies
899 long lRoomLF; // relative room effect level at low frequencies
900 float flDecayTime; // reverberation decay time at mid frequencies
901 float flDecayHFRatio; // high-frequency to mid-frequency decay time ratio
902 float flDecayLFRatio; // low-frequency to mid-frequency decay time ratio
903 long lReflections; // early reflections level relative to room effect
904 float flReflectionsDelay; // initial reflection delay time
905 EAXVECTOR vReflectionsPan; // early reflections panning vector
906 long lReverb; // late reverberation level relative to room effect
907 float flReverbDelay; // late reverberation delay time relative to initial reflection
908 EAXVECTOR vReverbPan; // late reverberation panning vector
909 float flEchoTime; // echo time
910 float flEchoDepth; // echo depth
911 float flModulationTime; // modulation time
912 float flModulationDepth; // modulation depth
913 float flAirAbsorptionHF; // change in level per meter at high frequencies
914 float flHFReference; // reference high frequency
915 float flLFReference; // reference low frequency
916 float flRoomRolloffFactor; // like DS3D flRolloffFactor but for room effect
917 unsigned long ulFlags; // modifies the behavior of properties
918 } EAXREVERBPROPERTIES, *LPEAXREVERBPROPERTIES;
921 // Property ranges and defaults:
922 #define EAXREVERB_MINENVIRONMENT 0
923 #define EAXREVERB_MAXENVIRONMENT (EAX_ENVIRONMENT_COUNT-1)
924 #define EAXREVERB_DEFAULTENVIRONMENT EAX_ENVIRONMENT_GENERIC
926 #define EAXREVERB_MINENVIRONMENTSIZE 1.0f
927 #define EAXREVERB_MAXENVIRONMENTSIZE 100.0f
928 #define EAXREVERB_DEFAULTENVIRONMENTSIZE 7.5f
930 #define EAXREVERB_MINENVIRONMENTDIFFUSION 0.0f
931 #define EAXREVERB_MAXENVIRONMENTDIFFUSION 1.0f
932 #define EAXREVERB_DEFAULTENVIRONMENTDIFFUSION 1.0f
934 #define EAXREVERB_MINROOM (-10000)
935 #define EAXREVERB_MAXROOM 0
936 #define EAXREVERB_DEFAULTROOM (-1000)
938 #define EAXREVERB_MINROOMHF (-10000)
939 #define EAXREVERB_MAXROOMHF 0
940 #define EAXREVERB_DEFAULTROOMHF (-100)
942 #define EAXREVERB_MINROOMLF (-10000)
943 #define EAXREVERB_MAXROOMLF 0
944 #define EAXREVERB_DEFAULTROOMLF 0
946 #define EAXREVERB_MINDECAYTIME 0.1f
947 #define EAXREVERB_MAXDECAYTIME 20.0f
948 #define EAXREVERB_DEFAULTDECAYTIME 1.49f
950 #define EAXREVERB_MINDECAYHFRATIO 0.1f
951 #define EAXREVERB_MAXDECAYHFRATIO 2.0f
952 #define EAXREVERB_DEFAULTDECAYHFRATIO 0.83f
954 #define EAXREVERB_MINDECAYLFRATIO 0.1f
955 #define EAXREVERB_MAXDECAYLFRATIO 2.0f
956 #define EAXREVERB_DEFAULTDECAYLFRATIO 1.00f
958 #define EAXREVERB_MINREFLECTIONS (-10000)
959 #define EAXREVERB_MAXREFLECTIONS 1000
960 #define EAXREVERB_DEFAULTREFLECTIONS (-2602)
962 #define EAXREVERB_MINREFLECTIONSDELAY 0.0f
963 #define EAXREVERB_MAXREFLECTIONSDELAY 0.3f
964 #define EAXREVERB_DEFAULTREFLECTIONSDELAY 0.007f
966 #define EAXREVERB_DEFAULTREFLECTIONSPAN {0.0f, 0.0f, 0.0f}
968 #define EAXREVERB_MINREVERB (-10000)
969 #define EAXREVERB_MAXREVERB 2000
970 #define EAXREVERB_DEFAULTREVERB 200
972 #define EAXREVERB_MINREVERBDELAY 0.0f
973 #define EAXREVERB_MAXREVERBDELAY 0.1f
974 #define EAXREVERB_DEFAULTREVERBDELAY 0.011f
976 #define EAXREVERB_DEFAULTREVERBPAN {0.0f, 0.0f, 0.0f}
978 #define EAXREVERB_MINECHOTIME 0.075f
979 #define EAXREVERB_MAXECHOTIME 0.25f
980 #define EAXREVERB_DEFAULTECHOTIME 0.25f
982 #define EAXREVERB_MINECHODEPTH 0.0f
983 #define EAXREVERB_MAXECHODEPTH 1.0f
984 #define EAXREVERB_DEFAULTECHODEPTH 0.0f
986 #define EAXREVERB_MINMODULATIONTIME 0.04f
987 #define EAXREVERB_MAXMODULATIONTIME 4.0f
988 #define EAXREVERB_DEFAULTMODULATIONTIME 0.25f
990 #define EAXREVERB_MINMODULATIONDEPTH 0.0f
991 #define EAXREVERB_MAXMODULATIONDEPTH 1.0f
992 #define EAXREVERB_DEFAULTMODULATIONDEPTH 0.0f
994 #define EAXREVERB_MINAIRABSORPTIONHF (-100.0f)
995 #define EAXREVERB_MAXAIRABSORPTIONHF 0.0f
996 #define EAXREVERB_DEFAULTAIRABSORPTIONHF (-5.0f)
998 #define EAXREVERB_MINHFREFERENCE 1000.0f
999 #define EAXREVERB_MAXHFREFERENCE 20000.0f
1000 #define EAXREVERB_DEFAULTHFREFERENCE 5000.0f
1002 #define EAXREVERB_MINLFREFERENCE 20.0f
1003 #define EAXREVERB_MAXLFREFERENCE 1000.0f
1004 #define EAXREVERB_DEFAULTLFREFERENCE 250.0f
1006 #define EAXREVERB_MINROOMROLLOFFFACTOR 0.0f
1007 #define EAXREVERB_MAXROOMROLLOFFFACTOR 10.0f
1008 #define EAXREVERB_DEFAULTROOMROLLOFFFACTOR 0.0f
1010 #define EAXREVERB_DEFAULTFLAGS (EAXREVERBFLAGS_DECAYTIMESCALE | \
1011 EAXREVERBFLAGS_REFLECTIONSSCALE | \
1012 EAXREVERBFLAGS_REFLECTIONSDELAYSCALE | \
1013 EAXREVERBFLAGS_REVERBSCALE | \
1014 EAXREVERBFLAGS_REVERBDELAYSCALE | \
1015 EAXREVERBFLAGS_DECAYHFLIMIT)
1016 ////////////////////////////////////////////////////////////////////////////
1021 ////////////////////////////////////////////////////////////////////////////
1025 ////////////////////////////////////////////////////////////////////////////
1028 ////////////////////////////////////////////////////////////////////////////
1029 // AGC Compressor Effect
1031 // EAX AGC COMPRESSOR {BFB7A01E-7825-4039-927F-3AABDA0C560}
1033 DEFINE_GUID(EAX_AGCCOMPRESSOR_EFFECT,
1037 0x92, 0x7f, 0x3, 0xaa, 0xbd, 0xa0, 0xc5, 0x60);
1039 // AGC Compressor properties
1042 EAXAGCCOMPRESSOR_NONE,
1043 EAXAGCCOMPRESSOR_ALLPARAMETERS,
1044 EAXAGCCOMPRESSOR_ONOFF
1045 } EAXAGCCOMPRESSOR_PROPERTY;
1047 // OR these flags with property id
1048 #define EAXAGCCOMPRESSOR_IMMEDIATE 0x00000000 // changes take effect immediately
1049 #define EAXAGCCOMPRESSOR_DEFERRED 0x80000000 // changes take effect later
1050 #define EAXAGCCOMPRESSOR_COMMITDEFERREDSETTINGS (EAXAGCCOMPRESSOR_NONE | \
1051 EAXAGCCOMPRESSOR_IMMEDIATE)
1053 // Use this structure for EAXAGCCOMPRESSOR_ALLPARAMETERS
1054 #ifndef EAXAGCCOMPRESSORPROPERTIES_DEFINED
1055 #define EAXAGCCOMPRESSORPROPERTIES_DEFINED
1056 typedef struct _EAXAGCCOMPRESSORPROPERTIES
1058 unsigned long ulOnOff; // Switch Compressor on or off
1059 } EAXAGCCOMPRESSORPROPERTIES, *LPEAXAGCCOMPRESSORPROPERTIES;
1062 // Property ranges and defaults:
1064 #define EAXAGCCOMPRESSOR_MINONOFF 0
1065 #define EAXAGCCOMPRESSOR_MAXONOFF 1
1066 #define EAXAGCCOMPRESSOR_DEFAULTONOFF 1
1068 ////////////////////////////////////////////////////////////////////////////
1071 ////////////////////////////////////////////////////////////////////////////
1074 // EAX AUTOWAH {EC3130C0-AC7A-11D2-88DD-A024D13CE1}
1075 DEFINE_GUID(EAX_AUTOWAH_EFFECT,
1079 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
1081 // Autowah properties
1085 EAXAUTOWAH_ALLPARAMETERS,
1086 EAXAUTOWAH_ATTACKTIME,
1087 EAXAUTOWAH_RELEASETIME,
1088 EAXAUTOWAH_RESONANCE,
1089 EAXAUTOWAH_PEAKLEVEL
1090 } EAXAUTOWAH_PROPERTY;
1092 // OR these flags with property id
1093 #define EAXAUTOWAH_IMMEDIATE 0x00000000 // changes take effect immediately
1094 #define EAXAUTOWAH_DEFERRED 0x80000000 // changes take effect later
1095 #define EAXAUTOWAH_COMMITDEFERREDSETTINGS (EAXAUTOWAH_NONE | \
1096 EAXAUTOWAH_IMMEDIATE)
1098 // Use this structure for EAXAUTOWAH_ALLPARAMETERS
1099 #ifndef EAXAUTOWAHPROPERTIES_DEFINED
1100 #define EAXAUTOWAHPROPERTIES_DEFINED
1101 typedef struct _EAXAUTOWAHPROPERTIES
1103 float flAttackTime; // Attack time (seconds)
1104 float flReleaseTime; // Release time (seconds)
1105 long lResonance; // Resonance (mB)
1106 long lPeakLevel; // Peak level (mB)
1107 } EAXAUTOWAHPROPERTIES, *LPEAXAUTOWAHPROPERTIES;
1110 // Property ranges and defaults:
1112 #define EAXAUTOWAH_MINATTACKTIME 0.0001f
1113 #define EAXAUTOWAH_MAXATTACKTIME 1.0f
1114 #define EAXAUTOWAH_DEFAULTATTACKTIME 0.06f
1116 #define EAXAUTOWAH_MINRELEASETIME 0.0001f
1117 #define EAXAUTOWAH_MAXRELEASETIME 1.0f
1118 #define EAXAUTOWAH_DEFAULTRELEASETIME 0.06f
1120 #define EAXAUTOWAH_MINRESONANCE 600
1121 #define EAXAUTOWAH_MAXRESONANCE 6000
1122 #define EAXAUTOWAH_DEFAULTRESONANCE 6000
1124 #define EAXAUTOWAH_MINPEAKLEVEL (-9000)
1125 #define EAXAUTOWAH_MAXPEAKLEVEL 9000
1126 #define EAXAUTOWAH_DEFAULTPEAKLEVEL 2100
1128 ////////////////////////////////////////////////////////////////////////////
1131 ////////////////////////////////////////////////////////////////////////////
1134 // EAX CHORUS {DE6D6FE0-AC79-11D2-88DD-A024D13CE1}
1136 DEFINE_GUID(EAX_CHORUS_EFFECT,
1140 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
1143 // Chorus properties
1147 EAXCHORUS_ALLPARAMETERS,
1154 } EAXCHORUS_PROPERTY;
1156 // OR these flags with property id
1157 #define EAXCHORUS_IMMEDIATE 0x00000000 // changes take effect immediately
1158 #define EAXCHORUS_DEFERRED 0x80000000 // changes take effect later
1159 #define EAXCHORUS_COMMITDEFERREDSETTINGS (EAXCHORUS_NONE | \
1160 EAXCHORUS_IMMEDIATE)
1162 // used by EAXCHORUS_WAVEFORM
1165 EAX_CHORUS_SINUSOID,
1169 // Use this structure for EAXCHORUS_ALLPARAMETERS
1170 #ifndef EAXCHORUSPROPERTIES_DEFINED
1171 #define EAXCHORUSPROPERTIES_DEFINED
1172 typedef struct _EAXCHORUSPROPERTIES
1174 unsigned long ulWaveform; // Waveform selector - see enum above
1175 long lPhase; // Phase (Degrees)
1176 float flRate; // Rate (Hz)
1177 float flDepth; // Depth (0 to 1)
1178 float flFeedback; // Feedback (-1 to 1)
1179 float flDelay; // Delay (seconds)
1180 } EAXCHORUSPROPERTIES, *LPEAXCHORUSPROPERTIES;
1183 // Property ranges and defaults:
1185 #define EAXCHORUS_MINWAVEFORM 0
1186 #define EAXCHORUS_MAXWAVEFORM 1
1187 #define EAXCHORUS_DEFAULTWAVEFORM 1
1189 #define EAXCHORUS_MINPHASE (-180)
1190 #define EAXCHORUS_MAXPHASE 180
1191 #define EAXCHORUS_DEFAULTPHASE 90
1193 #define EAXCHORUS_MINRATE 0.0f
1194 #define EAXCHORUS_MAXRATE 10.0f
1195 #define EAXCHORUS_DEFAULTRATE 1.1f
1197 #define EAXCHORUS_MINDEPTH 0.0f
1198 #define EAXCHORUS_MAXDEPTH 1.0f
1199 #define EAXCHORUS_DEFAULTDEPTH 0.1f
1201 #define EAXCHORUS_MINFEEDBACK (-1.0f)
1202 #define EAXCHORUS_MAXFEEDBACK 1.0f
1203 #define EAXCHORUS_DEFAULTFEEDBACK 0.25f
1205 #define EAXCHORUS_MINDELAY 0.0002f
1206 #define EAXCHORUS_MAXDELAY 0.016f
1207 #define EAXCHORUS_DEFAULTDELAY 0.016f
1209 ////////////////////////////////////////////////////////////////////////////
1212 ////////////////////////////////////////////////////////////////////////////
1213 // Distortion Effect
1215 // EAX DISTORTION {975A4CE0-AC7E-11D2-88DD-A024D13CE1}
1217 DEFINE_GUID(EAX_DISTORTION_EFFECT,
1221 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
1223 // Distortion properties
1227 EAXDISTORTION_ALLPARAMETERS,
1230 EAXDISTORTION_LOWPASSCUTOFF,
1231 EAXDISTORTION_EQCENTER,
1232 EAXDISTORTION_EQBANDWIDTH
1233 } EAXDISTORTION_PROPERTY;
1235 // OR these flags with property id
1236 #define EAXDISTORTION_IMMEDIATE 0x00000000 // changes take effect immediately
1237 #define EAXDISTORTION_DEFERRED 0x80000000 // changes take effect later
1238 #define EAXDISTORTION_COMMITDEFERREDSETTINGS (EAXDISTORTION_NONE | \
1239 EAXDISTORTION_IMMEDIATE)
1241 // Use this structure for EAXDISTORTION_ALLPARAMETERS
1242 #ifndef EAXDISTORTIONPROPERTIES_DEFINED
1243 #define EAXDISTORTIONPROPERTIES_DEFINED
1244 typedef struct _EAXDISTORTIONPROPERTIES
1246 float flEdge; // Controls the shape of the distortion (0 to 1)
1247 long lGain; // Controls the post distortion gain (mB)
1248 float flLowPassCutOff; // Controls the cut-off of the filter pre-distortion (Hz)
1249 float flEQCenter; // Controls the center frequency of the EQ post-distortion (Hz)
1250 float flEQBandwidth; // Controls the bandwidth of the EQ post-distortion (Hz)
1251 } EAXDISTORTIONPROPERTIES, *LPEAXDISTORTIONPROPERTIES;
1254 // Property ranges and defaults:
1256 #define EAXDISTORTION_MINEDGE 0.0f
1257 #define EAXDISTORTION_MAXEDGE 1.0f
1258 #define EAXDISTORTION_DEFAULTEDGE 0.2f
1260 #define EAXDISTORTION_MINGAIN (-6000)
1261 #define EAXDISTORTION_MAXGAIN 0
1262 #define EAXDISTORTION_DEFAULTGAIN (-2600)
1264 #define EAXDISTORTION_MINLOWPASSCUTOFF 80.0f
1265 #define EAXDISTORTION_MAXLOWPASSCUTOFF 24000.0f
1266 #define EAXDISTORTION_DEFAULTLOWPASSCUTOFF 8000.0f
1268 #define EAXDISTORTION_MINEQCENTER 80.0f
1269 #define EAXDISTORTION_MAXEQCENTER 24000.0f
1270 #define EAXDISTORTION_DEFAULTEQCENTER 3600.0f
1272 #define EAXDISTORTION_MINEQBANDWIDTH 80.0f
1273 #define EAXDISTORTION_MAXEQBANDWIDTH 24000.0f
1274 #define EAXDISTORTION_DEFAULTEQBANDWIDTH 3600.0f
1276 ////////////////////////////////////////////////////////////////////////////
1279 ////////////////////////////////////////////////////////////////////////////
1282 // EAX ECHO {E9F1BC0-AC82-11D2-88DD-A024D13CE1}
1284 DEFINE_GUID(EAX_ECHO_EFFECT,
1288 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
1294 EAXECHO_ALLPARAMETERS,
1302 // OR these flags with property id
1303 #define EAXECHO_IMMEDIATE 0x00000000 // changes take effect immediately
1304 #define EAXECHO_DEFERRED 0x80000000 // changes take effect later
1305 #define EAXECHO_COMMITDEFERREDSETTINGS (EAXECHO_NONE | \
1308 // Use this structure for EAXECHO_ALLPARAMETERS
1309 #ifndef EAXECHOPROPERTIES_DEFINED
1310 #define EAXECHOPROPERTIES_DEFINED
1311 typedef struct _EAXECHOPROPERTIES
1313 float flDelay; // Controls the initial delay time (seconds)
1314 float flLRDelay; // Controls the delay time between the first and second taps (seconds)
1315 float flDamping; // Controls a low-pass filter that dampens the echoes (0 to 1)
1316 float flFeedback; // Controls the duration of echo repetition (0 to 1)
1317 float flSpread; // Controls the left-right spread of the echoes
1318 } EAXECHOPROPERTIES, *LPEAXECHOPROPERTIES;
1321 // Property ranges and defaults:
1323 #define EAXECHO_MINDAMPING 0.0f
1324 #define EAXECHO_MAXDAMPING 0.99f
1325 #define EAXECHO_DEFAULTDAMPING 0.5f
1327 #define EAXECHO_MINDELAY 0.002f
1328 #define EAXECHO_MAXDELAY 0.207f
1329 #define EAXECHO_DEFAULTDELAY 0.1f
1331 #define EAXECHO_MINLRDELAY 0.0f
1332 #define EAXECHO_MAXLRDELAY 0.404f
1333 #define EAXECHO_DEFAULTLRDELAY 0.1f
1335 #define EAXECHO_MINFEEDBACK 0.0f
1336 #define EAXECHO_MAXFEEDBACK 1.0f
1337 #define EAXECHO_DEFAULTFEEDBACK 0.5f
1339 #define EAXECHO_MINSPREAD (-1.0f)
1340 #define EAXECHO_MAXSPREAD 1.0f
1341 #define EAXECHO_DEFAULTSPREAD (-1.0f)
1343 ////////////////////////////////////////////////////////////////////////////
1346 ////////////////////////////////////////////////////////////////////////////
1349 // EAX EQUALIZER {65F94CE0-9793-11D3-939D-C0F02DD6F0}
1351 DEFINE_GUID(EAX_EQUALIZER_EFFECT,
1355 0x93, 0x9d, 0x0, 0xc0, 0xf0, 0x2d, 0xd6, 0xf0);
1358 // Equalizer properties
1362 EAXEQUALIZER_ALLPARAMETERS,
1363 EAXEQUALIZER_LOWGAIN,
1364 EAXEQUALIZER_LOWCUTOFF,
1365 EAXEQUALIZER_MID1GAIN,
1366 EAXEQUALIZER_MID1CENTER,
1367 EAXEQUALIZER_MID1WIDTH,
1368 EAXEQUALIZER_MID2GAIN,
1369 EAXEQUALIZER_MID2CENTER,
1370 EAXEQUALIZER_MID2WIDTH,
1371 EAXEQUALIZER_HIGHGAIN,
1372 EAXEQUALIZER_HIGHCUTOFF
1373 } EAXEQUALIZER_PROPERTY;
1375 // OR these flags with property id
1376 #define EAXEQUALIZER_IMMEDIATE 0x00000000 // changes take effect immediately
1377 #define EAXEQUALIZER_DEFERRED 0x80000000 // changes take effect later
1378 #define EAXEQUALIZER_COMMITDEFERREDSETTINGS (EAXEQUALIZER_NONE | \
1379 EAXEQUALIZER_IMMEDIATE)
1381 // Use this structure for EAXEQUALIZER_ALLPARAMETERS
1382 #ifndef EAXEQUALIZERPROPERTIES_DEFINED
1383 #define EAXEQUALIZERPROPERTIES_DEFINED
1384 typedef struct _EAXEQUALIZERPROPERTIES
1386 long lLowGain; // (mB)
1387 float flLowCutOff; // (Hz)
1388 long lMid1Gain; // (mB)
1389 float flMid1Center; // (Hz)
1390 float flMid1Width; // (octaves)
1391 long lMid2Gain; // (mB)
1392 float flMid2Center; // (Hz)
1393 float flMid2Width; // (octaves)
1394 long lHighGain; // (mB)
1395 float flHighCutOff; // (Hz)
1396 } EAXEQUALIZERPROPERTIES, *LPEAXEQUALIZERPROPERTIES;
1399 // Property ranges and defaults:
1401 #define EAXEQUALIZER_MINLOWGAIN (-1800)
1402 #define EAXEQUALIZER_MAXLOWGAIN 1800
1403 #define EAXEQUALIZER_DEFAULTLOWGAIN 0
1405 #define EAXEQUALIZER_MINLOWCUTOFF 50.0f
1406 #define EAXEQUALIZER_MAXLOWCUTOFF 800.0f
1407 #define EAXEQUALIZER_DEFAULTLOWCUTOFF 200.0f
1409 #define EAXEQUALIZER_MINMID1GAIN (-1800)
1410 #define EAXEQUALIZER_MAXMID1GAIN 1800
1411 #define EAXEQUALIZER_DEFAULTMID1GAIN 0
1413 #define EAXEQUALIZER_MINMID1CENTER 200.0f
1414 #define EAXEQUALIZER_MAXMID1CENTER 3000.0f
1415 #define EAXEQUALIZER_DEFAULTMID1CENTER 500.0f
1417 #define EAXEQUALIZER_MINMID1WIDTH 0.01f
1418 #define EAXEQUALIZER_MAXMID1WIDTH 1.0f
1419 #define EAXEQUALIZER_DEFAULTMID1WIDTH 1.0f
1421 #define EAXEQUALIZER_MINMID2GAIN (-1800)
1422 #define EAXEQUALIZER_MAXMID2GAIN 1800
1423 #define EAXEQUALIZER_DEFAULTMID2GAIN 0
1425 #define EAXEQUALIZER_MINMID2CENTER 1000.0f
1426 #define EAXEQUALIZER_MAXMID2CENTER 8000.0f
1427 #define EAXEQUALIZER_DEFAULTMID2CENTER 3000.0f
1429 #define EAXEQUALIZER_MINMID2WIDTH 0.01f
1430 #define EAXEQUALIZER_MAXMID2WIDTH 1.0f
1431 #define EAXEQUALIZER_DEFAULTMID2WIDTH 1.0f
1433 #define EAXEQUALIZER_MINHIGHGAIN (-1800)
1434 #define EAXEQUALIZER_MAXHIGHGAIN 1800
1435 #define EAXEQUALIZER_DEFAULTHIGHGAIN 0
1437 #define EAXEQUALIZER_MINHIGHCUTOFF 4000.0f
1438 #define EAXEQUALIZER_MAXHIGHCUTOFF 16000.0f
1439 #define EAXEQUALIZER_DEFAULTHIGHCUTOFF 6000.0f
1441 ////////////////////////////////////////////////////////////////////////////
1444 ////////////////////////////////////////////////////////////////////////////
1447 // EAX FLANGER {A70007C0-7D2-11D3-9B1E-A024D13CE1}
1449 DEFINE_GUID(EAX_FLANGER_EFFECT,
1453 0x9b, 0x1e, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
1455 // Flanger properties
1459 EAXFLANGER_ALLPARAMETERS,
1460 EAXFLANGER_WAVEFORM,
1464 EAXFLANGER_FEEDBACK,
1466 } EAXFLANGER_PROPERTY;
1468 // OR these flags with property id
1469 #define EAXFLANGER_IMMEDIATE 0x00000000 // changes take effect immediately
1470 #define EAXFLANGER_DEFERRED 0x80000000 // changes take effect later
1471 #define EAXFLANGER_COMMITDEFERREDSETTINGS (EAXFLANGER_NONE | \
1472 EAXFLANGER_IMMEDIATE)
1474 // used by EAXFLANGER_WAVEFORM
1477 EAX_FLANGER_SINUSOID,
1478 EAX_FLANGER_TRIANGLE
1481 // Use this structure for EAXFLANGER_ALLPARAMETERS
1482 #ifndef EAXFLANGERPROPERTIES_DEFINED
1483 #define EAXFLANGERPROPERTIES_DEFINED
1484 typedef struct _EAXFLANGERPROPERTIES
1486 unsigned long ulWaveform; // Waveform selector - see enum above
1487 long lPhase; // Phase (Degrees)
1488 float flRate; // Rate (Hz)
1489 float flDepth; // Depth (0 to 1)
1490 float flFeedback; // Feedback (0 to 1)
1491 float flDelay; // Delay (seconds)
1492 } EAXFLANGERPROPERTIES, *LPEAXFLANGERPROPERTIES;
1495 // Property ranges and defaults:
1497 #define EAXFLANGER_MINWAVEFORM 0
1498 #define EAXFLANGER_MAXWAVEFORM 1
1499 #define EAXFLANGER_DEFAULTWAVEFORM 1
1501 #define EAXFLANGER_MINPHASE (-180)
1502 #define EAXFLANGER_MAXPHASE 180
1503 #define EAXFLANGER_DEFAULTPHASE 0
1505 #define EAXFLANGER_MINRATE 0.0f
1506 #define EAXFLANGER_MAXRATE 10.0f
1507 #define EAXFLANGER_DEFAULTRATE 0.27f
1509 #define EAXFLANGER_MINDEPTH 0.0f
1510 #define EAXFLANGER_MAXDEPTH 1.0f
1511 #define EAXFLANGER_DEFAULTDEPTH 1.0f
1513 #define EAXFLANGER_MINFEEDBACK (-1.0f)
1514 #define EAXFLANGER_MAXFEEDBACK 1.0f
1515 #define EAXFLANGER_DEFAULTFEEDBACK (-0.5f)
1517 #define EAXFLANGER_MINDELAY 0.0002f
1518 #define EAXFLANGER_MAXDELAY 0.004f
1519 #define EAXFLANGER_DEFAULTDELAY 0.002f
1521 ////////////////////////////////////////////////////////////////////////////
1524 ////////////////////////////////////////////////////////////////////////////
1525 // Frequency Shifter Effect
1527 // EAX FREQUENCY SHIFTER {DC3E1880-9212-11D3-939D-C0F02DD6F0}
1529 DEFINE_GUID(EAX_FREQUENCYSHIFTER_EFFECT,
1533 0x93, 0x9d, 0x0, 0xc0, 0xf0, 0x2d, 0xd6, 0xf0);
1535 // Frequency Shifter properties
1538 EAXFREQUENCYSHIFTER_NONE,
1539 EAXFREQUENCYSHIFTER_ALLPARAMETERS,
1540 EAXFREQUENCYSHIFTER_FREQUENCY,
1541 EAXFREQUENCYSHIFTER_LEFTDIRECTION,
1542 EAXFREQUENCYSHIFTER_RIGHTDIRECTION
1543 } EAXFREQUENCYSHIFTER_PROPERTY;
1545 // OR these flags with property id
1546 #define EAXFREQUENCYSHIFTER_IMMEDIATE 0x00000000 // changes take effect immediately
1547 #define EAXFREQUENCYSHIFTER_DEFERRED 0x80000000 // changes take effect later
1548 #define EAXFREQUENCYSHIFTER_COMMITDEFERREDSETTINGS (EAXFREQUENCYSHIFTER_NONE | \
1549 EAXFREQUENCYSHIFTER_IMMEDIATE)
1551 // used by EAXFREQUENCYSHIFTER_LEFTDIRECTION and EAXFREQUENCYSHIFTER_RIGHTDIRECTION
1554 EAX_FREQUENCYSHIFTER_DOWN,
1555 EAX_FREQUENCYSHIFTER_UP,
1556 EAX_FREQUENCYSHIFTER_OFF
1559 // Use this structure for EAXFREQUENCYSHIFTER_ALLPARAMETERS
1560 #ifndef EAXFREQUENCYSHIFTERPROPERTIES_DEFINED
1561 #define EAXFREQUENCYSHIFTERPROPERTIES_DEFINED
1562 typedef struct _EAXFREQUENCYSHIFTERPROPERTIES
1564 float flFrequency; // (Hz)
1565 unsigned long ulLeftDirection; // see enum above
1566 unsigned long ulRightDirection; // see enum above
1567 } EAXFREQUENCYSHIFTERPROPERTIES, *LPEAXFREQUENCYSHIFTERPROPERTIES;
1570 // Property ranges and defaults:
1572 #define EAXFREQUENCYSHIFTER_MINFREQUENCY 0.0f
1573 #define EAXFREQUENCYSHIFTER_MAXFREQUENCY 24000.0f
1574 #define EAXFREQUENCYSHIFTER_DEFAULTFREQUENCY 0.0f
1576 #define EAXFREQUENCYSHIFTER_MINLEFTDIRECTION 0
1577 #define EAXFREQUENCYSHIFTER_MAXLEFTDIRECTION 2
1578 #define EAXFREQUENCYSHIFTER_DEFAULTLEFTDIRECTION 0
1580 #define EAXFREQUENCYSHIFTER_MINRIGHTDIRECTION 0
1581 #define EAXFREQUENCYSHIFTER_MAXRIGHTDIRECTION 2
1582 #define EAXFREQUENCYSHIFTER_DEFAULTRIGHTDIRECTION 0
1584 ////////////////////////////////////////////////////////////////////////////
1587 ////////////////////////////////////////////////////////////////////////////
1588 // Vocal Morpher Effect
1590 // EAX VOCAL MORPHER {E41CF10C-3383-11D2-88DD-A024D13CE1}
1592 DEFINE_GUID(EAX_VOCALMORPHER_EFFECT,
1596 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
1598 // Vocal Morpher properties
1601 EAXVOCALMORPHER_NONE,
1602 EAXVOCALMORPHER_ALLPARAMETERS,
1603 EAXVOCALMORPHER_PHONEMEA,
1604 EAXVOCALMORPHER_PHONEMEACOARSETUNING,
1605 EAXVOCALMORPHER_PHONEMEB,
1606 EAXVOCALMORPHER_PHONEMEBCOARSETUNING,
1607 EAXVOCALMORPHER_WAVEFORM,
1608 EAXVOCALMORPHER_RATE
1609 } EAXVOCALMORPHER_PROPERTY;
1611 // OR these flags with property id
1612 #define EAXVOCALMORPHER_IMMEDIATE 0x00000000 // changes take effect immediately
1613 #define EAXVOCALMORPHER_DEFERRED 0x80000000 // changes take effect later
1614 #define EAXVOCALMORPHER_COMMITDEFERREDSETTINGS (EAXVOCALMORPHER_NONE | \
1615 EAXVOCALMORPHER_IMMEDIATE)
1617 // used by EAXVOCALMORPHER_PHONEMEA and EAXVOCALMORPHER_PHONEMEB
1620 A, E, I, O, U, AA, AE, AH, AO, EH, ER, IH, IY, UH, UW, B, D, F, G,
1621 J, K, L, M, N, P, R, S, T, V, Z
1624 // used by EAXVOCALMORPHER_WAVEFORM
1627 EAX_VOCALMORPHER_SINUSOID,
1628 EAX_VOCALMORPHER_TRIANGLE,
1629 EAX_VOCALMORPHER_SAWTOOTH
1632 // Use this structure for EAXVOCALMORPHER_ALLPARAMETERS
1633 #ifndef EAXVOCALMORPHERPROPERTIES_DEFINED
1634 #define EAXVOCALMORPHERPROPERTIES_DEFINED
1635 typedef struct _EAXVOCALMORPHERPROPERTIES
1637 unsigned long ulPhonemeA; // see enum above
1638 long lPhonemeACoarseTuning; // (semitones)
1639 unsigned long ulPhonemeB; // see enum above
1640 long lPhonemeBCoarseTuning; // (semitones)
1641 unsigned long ulWaveform; // Waveform selector - see enum above
1642 float flRate; // (Hz)
1643 } EAXVOCALMORPHERPROPERTIES, *LPEAXVOCALMORPHERPROPERTIES;
1646 // Property ranges and defaults:
1648 #define EAXVOCALMORPHER_MINPHONEMEA 0
1649 #define EAXVOCALMORPHER_MAXPHONEMEA 29
1650 #define EAXVOCALMORPHER_DEFAULTPHONEMEA 0
1652 #define EAXVOCALMORPHER_MINPHONEMEACOARSETUNING (-24)
1653 #define EAXVOCALMORPHER_MAXPHONEMEACOARSETUNING 24
1654 #define EAXVOCALMORPHER_DEFAULTPHONEMEACOARSETUNING 0
1656 #define EAXVOCALMORPHER_MINPHONEMEB 0
1657 #define EAXVOCALMORPHER_MAXPHONEMEB 29
1658 #define EAXVOCALMORPHER_DEFAULTPHONEMEB 10
1660 #define EAXVOCALMORPHER_MINPHONEMEBCOARSETUNING (-24)
1661 #define EAXVOCALMORPHER_MAXPHONEMEBCOARSETUNING 24
1662 #define EAXVOCALMORPHER_DEFAULTPHONEMEBCOARSETUNING 0
1664 #define EAXVOCALMORPHER_MINWAVEFORM 0
1665 #define EAXVOCALMORPHER_MAXWAVEFORM 2
1666 #define EAXVOCALMORPHER_DEFAULTWAVEFORM 0
1668 #define EAXVOCALMORPHER_MINRATE 0.0f
1669 #define EAXVOCALMORPHER_MAXRATE 10.0f
1670 #define EAXVOCALMORPHER_DEFAULTRATE 1.41f
1672 ////////////////////////////////////////////////////////////////////////////
1675 ////////////////////////////////////////////////////////////////////////////
1676 // Pitch Shifter Effect
1678 // EAX PITCH SHIFTER {E7905100-AFB2-11D2-88DD-A024D13CE1}
1680 DEFINE_GUID(EAX_PITCHSHIFTER_EFFECT,
1684 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
1686 // Pitch Shifter properties
1689 EAXPITCHSHIFTER_NONE,
1690 EAXPITCHSHIFTER_ALLPARAMETERS,
1691 EAXPITCHSHIFTER_COARSETUNE,
1692 EAXPITCHSHIFTER_FINETUNE
1693 } EAXPITCHSHIFTER_PROPERTY;
1695 // OR these flags with property id
1696 #define EAXPITCHSHIFTER_IMMEDIATE 0x00000000 // changes take effect immediately
1697 #define EAXPITCHSHIFTER_DEFERRED 0x80000000 // changes take effect later
1698 #define EAXPITCHSHIFTER_COMMITDEFERREDSETTINGS (EAXPITCHSHIFTER_NONE | \
1699 EAXPITCHSHIFTER_IMMEDIATE)
1701 // Use this structure for EAXPITCHSHIFTER_ALLPARAMETERS
1702 #ifndef EAXPITCHSHIFTERPROPERTIES_DEFINED
1703 #define EAXPITCHSHIFTERPROPERTIES_DEFINED
1704 typedef struct _EAXPITCHSHIFTERPROPERTIES
1706 long lCoarseTune; // Amount of pitch shift (semitones)
1707 long lFineTune; // Amount of pitch shift (cents)
1708 } EAXPITCHSHIFTERPROPERTIES, *LPEAXPITCHSHIFTERPROPERTIES;
1711 // Property ranges and defaults:
1713 #define EAXPITCHSHIFTER_MINCOARSETUNE (-12)
1714 #define EAXPITCHSHIFTER_MAXCOARSETUNE 12
1715 #define EAXPITCHSHIFTER_DEFAULTCOARSETUNE 12
1717 #define EAXPITCHSHIFTER_MINFINETUNE (-50)
1718 #define EAXPITCHSHIFTER_MAXFINETUNE 50
1719 #define EAXPITCHSHIFTER_DEFAULTFINETUNE 0
1721 ////////////////////////////////////////////////////////////////////////////
1724 ////////////////////////////////////////////////////////////////////////////
1725 // Ring Modulator Effect
1727 // EAX RING MODULATOR {B89FE60-AFB5-11D2-88DD-A024D13CE1}
1729 DEFINE_GUID(EAX_RINGMODULATOR_EFFECT,
1733 0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
1735 // Ring Modulator properties
1738 EAXRINGMODULATOR_NONE,
1739 EAXRINGMODULATOR_ALLPARAMETERS,
1740 EAXRINGMODULATOR_FREQUENCY,
1741 EAXRINGMODULATOR_HIGHPASSCUTOFF,
1742 EAXRINGMODULATOR_WAVEFORM
1743 } EAXRINGMODULATOR_PROPERTY;
1745 // OR these flags with property id
1746 #define EAXRINGMODULATOR_IMMEDIATE 0x00000000 // changes take effect immediately
1747 #define EAXRINGMODULATOR_DEFERRED 0x80000000 // changes take effect later
1748 #define EAXRINGMODULATOR_COMMITDEFERREDSETTINGS (EAXRINGMODULATOR_NONE | \
1749 EAXRINGMODULATOR_IMMEDIATE)
1751 // used by EAXRINGMODULATOR_WAVEFORM
1754 EAX_RINGMODULATOR_SINUSOID,
1755 EAX_RINGMODULATOR_SAWTOOTH,
1756 EAX_RINGMODULATOR_SQUARE
1759 // Use this structure for EAXRINGMODULATOR_ALLPARAMETERS
1760 #ifndef EAXRINGMODULATORPROPERTIES_DEFINED
1761 #define EAXRINGMODULATORPROPERTIES_DEFINED
1762 typedef struct _EAXRINGMODULATORPROPERTIES
1764 float flFrequency; // Frequency of modulation (Hz)
1765 float flHighPassCutOff; // Cut-off frequency of high-pass filter (Hz)
1766 unsigned long ulWaveform; // Waveform selector - see enum above
1767 } EAXRINGMODULATORPROPERTIES, *LPEAXRINGMODULATORPROPERTIES;
1770 // Property ranges and defaults:
1772 #define EAXRINGMODULATOR_MINFREQUENCY 0.0f
1773 #define EAXRINGMODULATOR_MAXFREQUENCY 8000.0f
1774 #define EAXRINGMODULATOR_DEFAULTFREQUENCY 440.0f
1776 #define EAXRINGMODULATOR_MINHIGHPASSCUTOFF 0.0f
1777 #define EAXRINGMODULATOR_MAXHIGHPASSCUTOFF 24000.0f
1778 #define EAXRINGMODULATOR_DEFAULTHIGHPASSCUTOFF 800.0f
1780 #define EAXRINGMODULATOR_MINWAVEFORM 0
1781 #define EAXRINGMODULATOR_MAXWAVEFORM 2
1782 #define EAXRINGMODULATOR_DEFAULTWAVEFORM 0
1784 ////////////////////////////////////////////////////////////////////////////
1790 #endif // __cplusplus