doom3-gpl
Doom 3 GPL source release
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
eax5.h
Go to the documentation of this file.
1 /*******************************************************************\
2 * *
3 * EAX.H - Environmental Audio Extensions version 5.0 *
4 * for OpenAL and DirectSound3D *
5 * *
6 * File revision 0.9.6 version a (July 14th 2004) *
7 * EAX 5.0 API Spec version 1.5 *
8 * *
9 \*******************************************************************/
10 
11 #ifndef EAX_H_INCLUDED
12 #define EAX_H_INCLUDED
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif // __cplusplus
17 
18 #ifndef OPENAL
19  #include <dsound.h>
20 
21  /*
22  * EAX Unified Interface (using Direct X 7) {4FF53B81-1CE0-11d3-AAB8-00A0C95949D5}
23  */
24  DEFINE_GUID(CLSID_EAXDirectSound,
25  0x4ff53b81,
26  0x1ce0,
27  0x11d3,
28  0xaa, 0xb8, 0x0, 0xa0, 0xc9, 0x59, 0x49, 0xd5);
29 
30  /*
31  * EAX Unified Interface (using Direct X 8) {CA503B60-B176-11d4-A094-D0C0BF3A560C}
32  */
33  DEFINE_GUID(CLSID_EAXDirectSound8,
34  0xca503b60,
35  0xb176,
36  0x11d4,
37  0xa0, 0x94, 0xd0, 0xc0, 0xbf, 0x3a, 0x56, 0xc);
38 
39 
40 
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*);
45 #endif
46 #endif
47 
48  __declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate(GUID*, LPDIRECTSOUND*, IUnknown FAR *);
49  typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE)(GUID*, LPDIRECTSOUND*, IUnknown FAR*);
50 
51 #else // OPENAL
52  #include <al.h>
53 
54  #ifndef GUID_DEFINED
55  #define GUID_DEFINED
56  typedef struct _GUID
57  {
58  unsigned long Data1;
59  unsigned short Data2;
60  unsigned short Data3;
61  unsigned char Data4[8];
62  } GUID;
63  #endif // GUID_DEFINED
64 
65  #ifndef DEFINE_GUID
66  #ifndef INITGUID
67  #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
68  extern const GUID /*FAR*/ name
69  #else
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 } }
72  #endif // INITGUID
73  #endif // DEFINE_GUID
74 
75  /*
76  * EAX OpenAL Extensions
77  */
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*);
82 #endif
83 
84 #pragma pack(push, 4)
85 
86 
87 
88 
90 // Constants
91 
92 #define EAX_MAX_FXSLOTS 4
93 #define EAX_MAX_ACTIVE_FXSLOTS 4
94 
95 // The EAX_NULL_GUID is used by EAXFXSLOT_LOADEFFECT, EAXCONTEXT_PRIMARYFXSLOTID
96 // and EAXSOURCE_ACTIVEFXSLOTID
97 
98 // {00000000-0000-0000-0000-000000000000}
99 DEFINE_GUID(EAX_NULL_GUID,
100  0x00000000,
101  0x0000,
102  0x0000,
103  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
104 
105 // The EAX_PrimaryFXSlotID GUID is used by EAXSOURCE_ACTIVEFXSLOTID
106 // {F317866D-924C-450C-861B-E6DAA25E7C20}
107 DEFINE_GUID(EAX_PrimaryFXSlotID,
108  0xf317866d,
109  0x924c,
110  0x450c,
111  0x86, 0x1b, 0xe6, 0xda, 0xa2, 0x5e, 0x7c, 0x20);
112 
113 
114 
116 
117 
118 
119 
121 // Structures
122 
123 // Use this structure for EAXCONTEXT_EAXSESSION property
124 #ifndef EAXSESSIONPROPERTIES_DEFINED
125 #define EAXSESSIONPROPERTIES_DEFINED
126 typedef struct _EAXSESSIONPROPERTIES
127 {
128  unsigned long ulEAXVersion;
129  unsigned long ulMaxActiveSends;
131 #endif
132 
133 // Use this structure for EAXCONTEXT_ALL property.
134 #ifndef EAXCONTEXTPROPERTIES_DEFINED
135 #define EAXCONTEXTPROPERTIES_DEFINED
136 typedef struct _EAXCONTEXTPROPERTIES
137 {
138  GUID guidPrimaryFXSlotID;
139  float flDistanceFactor;
140  float flAirAbsorptionHF;
141  float flHFReference;
144 #endif
145 
146 // Use this structure for EAXSOURCE_ALLPARAMETERS
147 // - all levels are hundredths of decibels
148 // - all delays are in seconds
149 //
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;
154 // ...
155 // myBuffer.dwFlags = myFlags /* see EAXSOURCEFLAGS below */ ;
156 // instead of:
157 // myBuffer = { 0, -200, ... , 0x00000003 };
158 //
159 #ifndef EAXSOURCEPROPERTIES_DEFINED
160 #define EAXSOURCEPROPERTIES_DEFINED
161 typedef struct _EAXSOURCEPROPERTIES
162 {
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
183 #endif
184 
185 
186 // Use this structure for EAXSOURCE_ALL2DPARAMETERS
187 // - all levels are hundredths of decibels
188 // - all delays are in seconds
189 //
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;
194 // ...
195 // myBuffer.dwFlags = myFlags /* see EAXSOURCEFLAGS below */ ;
196 // instead of:
197 // myBuffer = { 0, -200, ... , 0x00000003 };
198 //
199 #ifndef EAXSOURCE2DPROPERTIES_DEFINED
200 #define EAXSOURCE2DPROPERTIES_DEFINED
202 {
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
209 #endif
210 
211 
212 // Use this structure for EAXSOURCE_ALLSENDPARAMETERS
213 // - all levels are hundredths of decibels
214 //
215 #ifndef EAXSOURCEALLSENDPROPERTIES_DEFINED
216 #define EAXSOURCEALLSENDPROPERTIES_DEFINED
217 typedef struct _EAXSOURCEALLSENDPROPERTIES
218 {
220  long lSend; // send level (at low and mid frequencies)
221  long lSendHF; // relative send level at high frequencies
222  long lOcclusion;
223  float flOcclusionLFRatio;
224  float flOcclusionRoomRatio;
226  long lExclusion;
227  float flExclusionLFRatio;
229 #endif
230 
231 // Use this structure for EAXSOURCE_SPEAKERLEVELS
232 // - level is in hundredths of decibels
233 //
234 #ifndef EAXSPEAKERLEVELPROPERTIES_DEFINED
235 #define EAXSPEAKERLEVELPROPERTIES_DEFINED
237 {
239  long lLevel;
241 #endif
242 
243 // Use this structure for EAXSOURCE_ACTIVEFXSLOTID
244 #ifndef EAXACTIVEFXSLOTS_DEFINED
245 #define EAXACTIVEFXSLOTS_DEFINED
246 typedef struct _EAXACTIVEFXSLOTS
247 {
250 #endif
251 
252 // Use this structure for EAXSOURCE_OBSTRUCTIONPARAMETERS property.
253 #ifndef EAXOBSTRUCTIONPROPERTIES_DEFINED
254 #define EAXOBSTRUCTIONPROPERTIES_DEFINED
255 typedef struct _EAXOBSTRUCTIONPROPERTIES
256 {
257  long lObstruction;
258  float flObstructionLFRatio;
260 #endif
261 
262 // Use this structure for EAXSOURCE_OCCLUSIONPARAMETERS property.
263 #ifndef EAXOCCLUSIONPROPERTIES_DEFINED
264 #define EAXOCCLUSIONPROPERTIES_DEFINED
265 typedef struct _EAXOCCLUSIONPROPERTIES
266 {
267  long lOcclusion;
268  float flOcclusionLFRatio;
269  float flOcclusionRoomRatio;
272 #endif
273 
274 // Use this structure for EAXSOURCE_EXCLUSIONPARAMETERS property.
275 #ifndef EAXEXCLUSIONPROPERTIES_DEFINED
276 #define EAXEXCLUSIONPROPERTIES_DEFINED
277 typedef struct _EAXEXCLUSIONPROPERTIES
278 {
279  long lExclusion;
280  float flExclusionLFRatio;
282 #endif
283 
284 // Use this structure for EAXSOURCE_SENDPARAMETERS properties.
285 #ifndef EAXSOURCESENDPROPERTIES_DEFINED
286 #define EAXSOURCESENDPROPERTIES_DEFINED
287 typedef struct _EAXSOURCESENDPROPERTIES
288 {
290  long lSend;
291  long lSendHF;
293 #endif
294 
295 // Use this structure for EAXSOURCE_OCCLUSIONSENDPARAMETERS
296 #ifndef EAXSOURCEOCCLUSIONSENDPROPERTIES_DEFINED
297 #define EAXSOURCEOCCLUSIONSENDPROPERTIES_DEFINED
299 {
301  long lOcclusion;
302  float flOcclusionLFRatio;
303  float flOcclusionRoomRatio;
306 #endif
307 
308 // Use this structure for EAXSOURCE_EXCLUSIONSENDPARAMETERS
309 #ifndef EAXSOURCEEXCLUSIONSENDPROPERTIES_DEFINED
310 #define EAXSOURCEEXCLUSIONSENDPROPERTIES_DEFINED
312 {
314  long lExclusion;
315  float flExclusionLFRatio;
317 #endif
318 
319 // Use this structure for EAXFXSLOT_ALLPARAMETERS
320 // - all levels are hundredths of decibels
321 //
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 */ ;
328 // instead of:
329 // myFXSlot = { EAX_REVERB_EFFECT, 0, 1, 0x00000001 };
330 //
331 #ifndef EAXFXSLOTPROPERTIES_DEFINED
332 #define EAXFXSLOTPROPERTIES_DEFINED
333 typedef struct _EAXFXSLOTPROPERTIES
334 {
335  GUID guidLoadEffect;
336  long lVolume;
337  long lLock;
338  unsigned long ulFlags;
342 #endif
343 
344 
345 // Use this structure for EAXREVERB_REFLECTIONSPAN and EAXREVERB_REVERBPAN properties.
346 #ifndef EAXVECTOR_DEFINED
347 #define EAXVECTOR_DEFINED
348 typedef struct _EAXVECTOR {
349  float x;
350  float y;
351  float z;
352 } EAXVECTOR;
353 #endif
354 
355 
357 
358 
359 
360 
362 // Error Codes
363 
364 #define EAX_OK 0
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 
373 
374 
375 
377 // Context Object
378 
379 // {57E13437-B932-4ab2-B8BD-5266C1A887EE}
380 DEFINE_GUID(EAXPROPERTYID_EAX50_Context,
381  0x57e13437,
382  0xb932,
383  0x4ab2,
384  0xb8, 0xbd, 0x52, 0x66, 0xc1, 0xa8, 0x87, 0xee);
385 
386 // For compatibility with future EAX versions:
387 #define EAXPROPERTYID_EAX_Context EAXPROPERTYID_EAX50_Context
388 
389 typedef enum
390 {
402 
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)
408 
409 // EAX Context property ranges and defaults:
410 #define EAXCONTEXT_DEFAULTPRIMARYFXSLOTID EAXPROPERTYID_EAX50_FXSlot0
411 
412 #define EAXCONTEXT_MINDISTANCEFACTOR FLT_MIN //minimum positive value
413 #define EAXCONTEXT_MAXDISTANCEFACTOR FLT_MAX
414 #define EAXCONTEXT_DEFAULTDISTANCEFACTOR 1.0f
415 
416 #define EAXCONTEXT_MINAIRABSORPTIONHF (-100.0f)
417 #define EAXCONTEXT_MAXAIRABSORPTIONHF 0.0f
418 #define EAXCONTEXT_DEFAULTAIRABSORPTIONHF (-5.0f)
419 
420 #define EAXCONTEXT_MINHFREFERENCE 1000.0f
421 #define EAXCONTEXT_MAXHFREFERENCE 20000.0f
422 #define EAXCONTEXT_DEFAULTHFREFERENCE 5000.0f
423 
424 #define EAXCONTEXT_DEFAULTLASTERROR EAX_OK
425 
426 enum {
430  SPEAKERS_5, // 5.1 speakers
431  SPEAKERS_6, // 6.1 speakers
432  SPEAKERS_7, // 7.1 speakers
433 };
434 
435 enum {
436  EAX_40 = 5, // EAX 4.0
437  EAX_50 = 6, // EAX 5.0
438 };
439 
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
444 
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
449 
450 #define EAXCONTEXT_MINMACROFXFACTOR 0.0f
451 #define EAXCONTEXT_MAXMACROFXFACTOR 1.0f
452 #define EAXCONTEXT_DEFAULTMACROFXFACTOR 0.0f
453 
455 
456 
457 
458 
460 // Effect Slot Objects
461 
462 // {91F9590F-C388-407a-84B0-1BAE0EF71ABC}
463 DEFINE_GUID(EAXPROPERTYID_EAX50_FXSlot0,
464  0x91f9590f,
465  0xc388,
466  0x407a,
467  0x84, 0xb0, 0x1b, 0xae, 0xe, 0xf7, 0x1a, 0xbc);
468 
469 // {8F5F7ACA-9608-4965-8137-8213C7B9D9DE}
470 DEFINE_GUID(EAXPROPERTYID_EAX50_FXSlot1,
471  0x8f5f7aca,
472  0x9608,
473  0x4965,
474  0x81, 0x37, 0x82, 0x13, 0xc7, 0xb9, 0xd9, 0xde);
475 
476 // {3C0F5252-9834-46f0-A1D8-5B95C4A00A30}
477 DEFINE_GUID(EAXPROPERTYID_EAX50_FXSlot2,
478  0x3c0f5252,
479  0x9834,
480  0x46f0,
481  0xa1, 0xd8, 0x5b, 0x95, 0xc4, 0xa0, 0xa, 0x30);
482 
483 // {E2EB0EAA-E806-45e7-9F86-06C1571A6FA3}
484 DEFINE_GUID(EAXPROPERTYID_EAX50_FXSlot3,
485  0xe2eb0eaa,
486  0xe806,
487  0x45e7,
488  0x9f, 0x86, 0x6, 0xc1, 0x57, 0x1a, 0x6f, 0xa3);
489 
490 
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
496 
497 // FXSlot object properties
498 typedef enum
499 {
500  EAXFXSLOT_PARAMETER = 0, // range 0-0x40 reserved for loaded effect parameters
501  EAXFXSLOT_NONE = 0x10000,
510 
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;
514 // instead of:
515 // myFlags = 0x00000001;
516 //
517 #define EAXFXSLOTFLAGS_ENVIRONMENT 0x00000001
518 #define EAXFXSLOTFLAGS_UPMIX 0x00000002
519 #define EAXFXSLOTFLAGS_RESERVED 0xFFFFFFFC // reserved future use
520 
521 // EAX Effect Slot property ranges and defaults:
522 #define EAXFXSLOT_MINVOLUME (-10000)
523 #define EAXFXSLOT_MAXVOLUME 0
524 #define EAXFXSLOT_DEFAULTVOLUME 0
525 
526 enum
527 {
530 };
531 
532 #define EAXFXSLOT_MINLOCK 0
533 #define EAXFXSLOT_MAXLOCK 1
534 
535 #define EAXFXSLOT_MINOCCLUSION (-10000)
536 #define EAXFXSLOT_MAXOCCLUSION 0
537 #define EAXFXSLOT_DEFAULTOCCLUSION 0
538 
539 #define EAXFXSLOT_MINOCCLUSIONLFRATIO 0.0f
540 #define EAXFXSLOT_MAXOCCLUSIONLFRATIO 1.0f
541 #define EAXFXSLOT_DEFAULTOCCLUSIONLFRATIO 0.25f
542 
543 #define EAXFXSLOT_DEFAULTFLAGS (EAXFXSLOTFLAGS_ENVIRONMENT | \
544  EAXFXSLOTFLAGS_UPMIX ) // ignored for reverb
545 
547 
548 
550 // Source Object
551 
552 // {5EDF82F0-24A7-4f38-8E64-2F09CA05DEE1}
553 DEFINE_GUID(EAXPROPERTYID_EAX50_Source,
554  0x5edf82f0,
555  0x24a7,
556  0x4f38,
557  0x8e, 0x64, 0x2f, 0x9, 0xca, 0x5, 0xde, 0xe1);
558 
559 
560 // For compatibility with future EAX versions:
561 #define EAXPROPERTYID_EAX_Source EAXPROPERTYID_EAX50_Source
562 
563 // Source object properties
564 typedef enum
565 {
598 
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
607 //
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;
611 // instead of:
612 // myFlags = 0x00000003;
613 //
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
621 
622 // EAX Source property ranges and defaults:
623 #define EAXSOURCE_MINSEND (-10000)
624 #define EAXSOURCE_MAXSEND 0
625 #define EAXSOURCE_DEFAULTSEND 0
626 
627 #define EAXSOURCE_MINSENDHF (-10000)
628 #define EAXSOURCE_MAXSENDHF 0
629 #define EAXSOURCE_DEFAULTSENDHF 0
630 
631 #define EAXSOURCE_MINDIRECT (-10000)
632 #define EAXSOURCE_MAXDIRECT 1000
633 #define EAXSOURCE_DEFAULTDIRECT 0
634 
635 #define EAXSOURCE_MINDIRECTHF (-10000)
636 #define EAXSOURCE_MAXDIRECTHF 0
637 #define EAXSOURCE_DEFAULTDIRECTHF 0
638 
639 #define EAXSOURCE_MINROOM (-10000)
640 #define EAXSOURCE_MAXROOM 1000
641 #define EAXSOURCE_DEFAULTROOM 0
642 
643 #define EAXSOURCE_MINROOMHF (-10000)
644 #define EAXSOURCE_MAXROOMHF 0
645 #define EAXSOURCE_DEFAULTROOMHF 0
646 
647 #define EAXSOURCE_MINOBSTRUCTION (-10000)
648 #define EAXSOURCE_MAXOBSTRUCTION 0
649 #define EAXSOURCE_DEFAULTOBSTRUCTION 0
650 
651 #define EAXSOURCE_MINOBSTRUCTIONLFRATIO 0.0f
652 #define EAXSOURCE_MAXOBSTRUCTIONLFRATIO 1.0f
653 #define EAXSOURCE_DEFAULTOBSTRUCTIONLFRATIO 0.0f
654 
655 #define EAXSOURCE_MINOCCLUSION (-10000)
656 #define EAXSOURCE_MAXOCCLUSION 0
657 #define EAXSOURCE_DEFAULTOCCLUSION 0
658 
659 #define EAXSOURCE_MINOCCLUSIONLFRATIO 0.0f
660 #define EAXSOURCE_MAXOCCLUSIONLFRATIO 1.0f
661 #define EAXSOURCE_DEFAULTOCCLUSIONLFRATIO 0.25f
662 
663 #define EAXSOURCE_MINOCCLUSIONROOMRATIO 0.0f
664 #define EAXSOURCE_MAXOCCLUSIONROOMRATIO 10.0f
665 #define EAXSOURCE_DEFAULTOCCLUSIONROOMRATIO 1.5f
666 
667 #define EAXSOURCE_MINOCCLUSIONDIRECTRATIO 0.0f
668 #define EAXSOURCE_MAXOCCLUSIONDIRECTRATIO 10.0f
669 #define EAXSOURCE_DEFAULTOCCLUSIONDIRECTRATIO 1.0f
670 
671 #define EAXSOURCE_MINEXCLUSION (-10000)
672 #define EAXSOURCE_MAXEXCLUSION 0
673 #define EAXSOURCE_DEFAULTEXCLUSION 0
674 
675 #define EAXSOURCE_MINEXCLUSIONLFRATIO 0.0f
676 #define EAXSOURCE_MAXEXCLUSIONLFRATIO 1.0f
677 #define EAXSOURCE_DEFAULTEXCLUSIONLFRATIO 1.0f
678 
679 #define EAXSOURCE_MINOUTSIDEVOLUMEHF (-10000)
680 #define EAXSOURCE_MAXOUTSIDEVOLUMEHF 0
681 #define EAXSOURCE_DEFAULTOUTSIDEVOLUMEHF 0
682 
683 #define EAXSOURCE_MINDOPPLERFACTOR 0.0f
684 #define EAXSOURCE_MAXDOPPLERFACTOR 10.f
685 #define EAXSOURCE_DEFAULTDOPPLERFACTOR 1.0f
686 
687 #define EAXSOURCE_MINROLLOFFFACTOR 0.0f
688 #define EAXSOURCE_MAXROLLOFFFACTOR 10.f
689 #define EAXSOURCE_DEFAULTROLLOFFFACTOR 0.0f
690 
691 #define EAXSOURCE_MINROOMROLLOFFFACTOR 0.0f
692 #define EAXSOURCE_MAXROOMROLLOFFFACTOR 10.f
693 #define EAXSOURCE_DEFAULTROOMROLLOFFFACTOR 0.0f
694 
695 #define EAXSOURCE_MINAIRABSORPTIONFACTOR 0.0f
696 #define EAXSOURCE_MAXAIRABSORPTIONFACTOR 10.0f
697 #define EAXSOURCE_DEFAULTAIRABSORPTIONFACTOR 0.0f
698 
699 #define EAXSOURCE_MINMACROFXFACTOR 0.0f
700 #define EAXSOURCE_MAXMACROFXFACTOR 1.0f
701 #define EAXSOURCE_DEFAULTMACROFXFACTOR 1.0f
702 
703 #define EAXSOURCE_MINSPEAKERLEVEL (-10000)
704 #define EAXSOURCE_MAXSPEAKERLEVEL 0
705 #define EAXSOURCE_DEFAULTSPEAKERLEVEL (-10000)
706 
707 enum
708 {
718 };
719 
720 
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 )
727 
728 
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] } }
748 
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] } }
766 
767 
769 
770 
771 
772 
774 // Reverb Effect
775 
776 // EAX REVERB {0CF95C8F-A3CC-4849-B0B6-832ECC1822DF}
777 DEFINE_GUID(EAX_REVERB_EFFECT,
778  0xcf95c8f,
779  0xa3cc,
780  0x4849,
781  0xb0, 0xb6, 0x83, 0x2e, 0xcc, 0x18, 0x22, 0xdf);
782 
783 // Reverb effect properties
784 typedef enum
785 {
813 
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 | \
818  EAXREVERB_IMMEDIATE)
819 
820 // used by EAXREVERB_ENVIRONMENT
821 enum
822 {
849 
851 
853 };
854 
855 // Used by EAXREVERB_FLAGS
856 //
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;
860 // instead of:
861 // myFlags = 0x00000009;
862 //
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
874 
875 // Use this structure for EAXREVERB_ALLPARAMETERS
876 // - all levels are hundredths of decibels
877 // - all times and delays are in seconds
878 //
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;
883 // ...
884 // myReverb.dwFlags = myFlags /* see EAXREVERBFLAGS below */ ;
885 // instead of:
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.
889 //
890 #ifndef EAXREVERBPROPERTIES_DEFINED
891 #define EAXREVERBPROPERTIES_DEFINED
892 typedef struct _EAXREVERBPROPERTIES
893 {
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
919 #endif
920 
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
925 
926 #define EAXREVERB_MINENVIRONMENTSIZE 1.0f
927 #define EAXREVERB_MAXENVIRONMENTSIZE 100.0f
928 #define EAXREVERB_DEFAULTENVIRONMENTSIZE 7.5f
929 
930 #define EAXREVERB_MINENVIRONMENTDIFFUSION 0.0f
931 #define EAXREVERB_MAXENVIRONMENTDIFFUSION 1.0f
932 #define EAXREVERB_DEFAULTENVIRONMENTDIFFUSION 1.0f
933 
934 #define EAXREVERB_MINROOM (-10000)
935 #define EAXREVERB_MAXROOM 0
936 #define EAXREVERB_DEFAULTROOM (-1000)
937 
938 #define EAXREVERB_MINROOMHF (-10000)
939 #define EAXREVERB_MAXROOMHF 0
940 #define EAXREVERB_DEFAULTROOMHF (-100)
941 
942 #define EAXREVERB_MINROOMLF (-10000)
943 #define EAXREVERB_MAXROOMLF 0
944 #define EAXREVERB_DEFAULTROOMLF 0
945 
946 #define EAXREVERB_MINDECAYTIME 0.1f
947 #define EAXREVERB_MAXDECAYTIME 20.0f
948 #define EAXREVERB_DEFAULTDECAYTIME 1.49f
949 
950 #define EAXREVERB_MINDECAYHFRATIO 0.1f
951 #define EAXREVERB_MAXDECAYHFRATIO 2.0f
952 #define EAXREVERB_DEFAULTDECAYHFRATIO 0.83f
953 
954 #define EAXREVERB_MINDECAYLFRATIO 0.1f
955 #define EAXREVERB_MAXDECAYLFRATIO 2.0f
956 #define EAXREVERB_DEFAULTDECAYLFRATIO 1.00f
957 
958 #define EAXREVERB_MINREFLECTIONS (-10000)
959 #define EAXREVERB_MAXREFLECTIONS 1000
960 #define EAXREVERB_DEFAULTREFLECTIONS (-2602)
961 
962 #define EAXREVERB_MINREFLECTIONSDELAY 0.0f
963 #define EAXREVERB_MAXREFLECTIONSDELAY 0.3f
964 #define EAXREVERB_DEFAULTREFLECTIONSDELAY 0.007f
965 
966 #define EAXREVERB_DEFAULTREFLECTIONSPAN {0.0f, 0.0f, 0.0f}
967 
968 #define EAXREVERB_MINREVERB (-10000)
969 #define EAXREVERB_MAXREVERB 2000
970 #define EAXREVERB_DEFAULTREVERB 200
971 
972 #define EAXREVERB_MINREVERBDELAY 0.0f
973 #define EAXREVERB_MAXREVERBDELAY 0.1f
974 #define EAXREVERB_DEFAULTREVERBDELAY 0.011f
975 
976 #define EAXREVERB_DEFAULTREVERBPAN {0.0f, 0.0f, 0.0f}
977 
978 #define EAXREVERB_MINECHOTIME 0.075f
979 #define EAXREVERB_MAXECHOTIME 0.25f
980 #define EAXREVERB_DEFAULTECHOTIME 0.25f
981 
982 #define EAXREVERB_MINECHODEPTH 0.0f
983 #define EAXREVERB_MAXECHODEPTH 1.0f
984 #define EAXREVERB_DEFAULTECHODEPTH 0.0f
985 
986 #define EAXREVERB_MINMODULATIONTIME 0.04f
987 #define EAXREVERB_MAXMODULATIONTIME 4.0f
988 #define EAXREVERB_DEFAULTMODULATIONTIME 0.25f
989 
990 #define EAXREVERB_MINMODULATIONDEPTH 0.0f
991 #define EAXREVERB_MAXMODULATIONDEPTH 1.0f
992 #define EAXREVERB_DEFAULTMODULATIONDEPTH 0.0f
993 
994 #define EAXREVERB_MINAIRABSORPTIONHF (-100.0f)
995 #define EAXREVERB_MAXAIRABSORPTIONHF 0.0f
996 #define EAXREVERB_DEFAULTAIRABSORPTIONHF (-5.0f)
997 
998 #define EAXREVERB_MINHFREFERENCE 1000.0f
999 #define EAXREVERB_MAXHFREFERENCE 20000.0f
1000 #define EAXREVERB_DEFAULTHFREFERENCE 5000.0f
1001 
1002 #define EAXREVERB_MINLFREFERENCE 20.0f
1003 #define EAXREVERB_MAXLFREFERENCE 1000.0f
1004 #define EAXREVERB_DEFAULTLFREFERENCE 250.0f
1005 
1006 #define EAXREVERB_MINROOMROLLOFFFACTOR 0.0f
1007 #define EAXREVERB_MAXROOMROLLOFFFACTOR 10.0f
1008 #define EAXREVERB_DEFAULTROOMROLLOFFFACTOR 0.0f
1009 
1010 #define EAXREVERB_DEFAULTFLAGS (EAXREVERBFLAGS_DECAYTIMESCALE | \
1011  EAXREVERBFLAGS_REFLECTIONSSCALE | \
1012  EAXREVERBFLAGS_REFLECTIONSDELAYSCALE | \
1013  EAXREVERBFLAGS_REVERBSCALE | \
1014  EAXREVERBFLAGS_REVERBDELAYSCALE | \
1015  EAXREVERBFLAGS_DECAYHFLIMIT)
1016 
1018 
1019 
1020 
1022 
1023 // New Effect Types
1024 
1026 
1027 
1029 // AGC Compressor Effect
1030 
1031 // EAX AGC COMPRESSOR {BFB7A01E-7825-4039-927F-3AABDA0C560}
1032 
1033 DEFINE_GUID(EAX_AGCCOMPRESSOR_EFFECT,
1034  0xbfb7a01e,
1035  0x7825,
1036  0x4039,
1037  0x92, 0x7f, 0x3, 0xaa, 0xbd, 0xa0, 0xc5, 0x60);
1038 
1039 // AGC Compressor properties
1040 typedef enum
1041 {
1046 
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)
1052 
1053 // Use this structure for EAXAGCCOMPRESSOR_ALLPARAMETERS
1054 #ifndef EAXAGCCOMPRESSORPROPERTIES_DEFINED
1055 #define EAXAGCCOMPRESSORPROPERTIES_DEFINED
1056 typedef struct _EAXAGCCOMPRESSORPROPERTIES
1057 {
1058  unsigned long ulOnOff; // Switch Compressor on or off
1060 #endif
1061 
1062 // Property ranges and defaults:
1063 
1064 #define EAXAGCCOMPRESSOR_MINONOFF 0
1065 #define EAXAGCCOMPRESSOR_MAXONOFF 1
1066 #define EAXAGCCOMPRESSOR_DEFAULTONOFF 1
1067 
1069 
1070 
1072 // Autowah Effect
1073 
1074 // EAX AUTOWAH {EC3130C0-AC7A-11D2-88DD-A024D13CE1}
1075 DEFINE_GUID(EAX_AUTOWAH_EFFECT,
1076  0xec3130c0,
1077  0xac7a,
1078  0x11d2,
1079  0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
1080 
1081 // Autowah properties
1082 typedef enum
1083 {
1091 
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)
1097 
1098 // Use this structure for EAXAUTOWAH_ALLPARAMETERS
1099 #ifndef EAXAUTOWAHPROPERTIES_DEFINED
1100 #define EAXAUTOWAHPROPERTIES_DEFINED
1101 typedef struct _EAXAUTOWAHPROPERTIES
1102 {
1103  float flAttackTime; // Attack time (seconds)
1104  float flReleaseTime; // Release time (seconds)
1105  long lResonance; // Resonance (mB)
1106  long lPeakLevel; // Peak level (mB)
1108 #endif
1109 
1110 // Property ranges and defaults:
1111 
1112 #define EAXAUTOWAH_MINATTACKTIME 0.0001f
1113 #define EAXAUTOWAH_MAXATTACKTIME 1.0f
1114 #define EAXAUTOWAH_DEFAULTATTACKTIME 0.06f
1115 
1116 #define EAXAUTOWAH_MINRELEASETIME 0.0001f
1117 #define EAXAUTOWAH_MAXRELEASETIME 1.0f
1118 #define EAXAUTOWAH_DEFAULTRELEASETIME 0.06f
1119 
1120 #define EAXAUTOWAH_MINRESONANCE 600
1121 #define EAXAUTOWAH_MAXRESONANCE 6000
1122 #define EAXAUTOWAH_DEFAULTRESONANCE 6000
1123 
1124 #define EAXAUTOWAH_MINPEAKLEVEL (-9000)
1125 #define EAXAUTOWAH_MAXPEAKLEVEL 9000
1126 #define EAXAUTOWAH_DEFAULTPEAKLEVEL 2100
1127 
1129 
1130 
1132 // Chorus Effect
1133 
1134 // EAX CHORUS {DE6D6FE0-AC79-11D2-88DD-A024D13CE1}
1135 
1136 DEFINE_GUID(EAX_CHORUS_EFFECT,
1137  0xde6d6fe0,
1138  0xac79,
1139  0x11d2,
1140  0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
1141 
1142 
1143 // Chorus properties
1144 typedef enum
1145 {
1155 
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)
1161 
1162 // used by EAXCHORUS_WAVEFORM
1163 enum
1164 {
1167 };
1168 
1169 // Use this structure for EAXCHORUS_ALLPARAMETERS
1170 #ifndef EAXCHORUSPROPERTIES_DEFINED
1171 #define EAXCHORUSPROPERTIES_DEFINED
1172 typedef struct _EAXCHORUSPROPERTIES
1173 {
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)
1181 #endif
1182 
1183 // Property ranges and defaults:
1184 
1185 #define EAXCHORUS_MINWAVEFORM 0
1186 #define EAXCHORUS_MAXWAVEFORM 1
1187 #define EAXCHORUS_DEFAULTWAVEFORM 1
1188 
1189 #define EAXCHORUS_MINPHASE (-180)
1190 #define EAXCHORUS_MAXPHASE 180
1191 #define EAXCHORUS_DEFAULTPHASE 90
1192 
1193 #define EAXCHORUS_MINRATE 0.0f
1194 #define EAXCHORUS_MAXRATE 10.0f
1195 #define EAXCHORUS_DEFAULTRATE 1.1f
1196 
1197 #define EAXCHORUS_MINDEPTH 0.0f
1198 #define EAXCHORUS_MAXDEPTH 1.0f
1199 #define EAXCHORUS_DEFAULTDEPTH 0.1f
1200 
1201 #define EAXCHORUS_MINFEEDBACK (-1.0f)
1202 #define EAXCHORUS_MAXFEEDBACK 1.0f
1203 #define EAXCHORUS_DEFAULTFEEDBACK 0.25f
1204 
1205 #define EAXCHORUS_MINDELAY 0.0002f
1206 #define EAXCHORUS_MAXDELAY 0.016f
1207 #define EAXCHORUS_DEFAULTDELAY 0.016f
1208 
1210 
1211 
1213 // Distortion Effect
1214 
1215 // EAX DISTORTION {975A4CE0-AC7E-11D2-88DD-A024D13CE1}
1216 
1217 DEFINE_GUID(EAX_DISTORTION_EFFECT,
1218  0x975a4ce0,
1219  0xac7e,
1220  0x11d2,
1221  0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
1222 
1223 // Distortion properties
1224 typedef enum
1225 {
1234 
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)
1240 
1241 // Use this structure for EAXDISTORTION_ALLPARAMETERS
1242 #ifndef EAXDISTORTIONPROPERTIES_DEFINED
1243 #define EAXDISTORTIONPROPERTIES_DEFINED
1244 typedef struct _EAXDISTORTIONPROPERTIES
1245 {
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)
1252 #endif
1253 
1254 // Property ranges and defaults:
1255 
1256 #define EAXDISTORTION_MINEDGE 0.0f
1257 #define EAXDISTORTION_MAXEDGE 1.0f
1258 #define EAXDISTORTION_DEFAULTEDGE 0.2f
1259 
1260 #define EAXDISTORTION_MINGAIN (-6000)
1261 #define EAXDISTORTION_MAXGAIN 0
1262 #define EAXDISTORTION_DEFAULTGAIN (-2600)
1263 
1264 #define EAXDISTORTION_MINLOWPASSCUTOFF 80.0f
1265 #define EAXDISTORTION_MAXLOWPASSCUTOFF 24000.0f
1266 #define EAXDISTORTION_DEFAULTLOWPASSCUTOFF 8000.0f
1267 
1268 #define EAXDISTORTION_MINEQCENTER 80.0f
1269 #define EAXDISTORTION_MAXEQCENTER 24000.0f
1270 #define EAXDISTORTION_DEFAULTEQCENTER 3600.0f
1271 
1272 #define EAXDISTORTION_MINEQBANDWIDTH 80.0f
1273 #define EAXDISTORTION_MAXEQBANDWIDTH 24000.0f
1274 #define EAXDISTORTION_DEFAULTEQBANDWIDTH 3600.0f
1275 
1277 
1278 
1280 // Echo Effect
1281 
1282 // EAX ECHO {E9F1BC0-AC82-11D2-88DD-A024D13CE1}
1283 
1284 DEFINE_GUID(EAX_ECHO_EFFECT,
1285  0xe9f1bc0,
1286  0xac82,
1287  0x11d2,
1288  0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
1289 
1290 // Echo properties
1291 typedef enum
1292 {
1301 
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 | \
1306  EAXECHO_IMMEDIATE)
1307 
1308 // Use this structure for EAXECHO_ALLPARAMETERS
1309 #ifndef EAXECHOPROPERTIES_DEFINED
1310 #define EAXECHOPROPERTIES_DEFINED
1311 typedef struct _EAXECHOPROPERTIES
1312 {
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
1319 #endif
1320 
1321 // Property ranges and defaults:
1322 
1323 #define EAXECHO_MINDAMPING 0.0f
1324 #define EAXECHO_MAXDAMPING 0.99f
1325 #define EAXECHO_DEFAULTDAMPING 0.5f
1326 
1327 #define EAXECHO_MINDELAY 0.002f
1328 #define EAXECHO_MAXDELAY 0.207f
1329 #define EAXECHO_DEFAULTDELAY 0.1f
1330 
1331 #define EAXECHO_MINLRDELAY 0.0f
1332 #define EAXECHO_MAXLRDELAY 0.404f
1333 #define EAXECHO_DEFAULTLRDELAY 0.1f
1334 
1335 #define EAXECHO_MINFEEDBACK 0.0f
1336 #define EAXECHO_MAXFEEDBACK 1.0f
1337 #define EAXECHO_DEFAULTFEEDBACK 0.5f
1338 
1339 #define EAXECHO_MINSPREAD (-1.0f)
1340 #define EAXECHO_MAXSPREAD 1.0f
1341 #define EAXECHO_DEFAULTSPREAD (-1.0f)
1342 
1344 
1345 
1347 // Equalizer Effect
1348 
1349 // EAX EQUALIZER {65F94CE0-9793-11D3-939D-C0F02DD6F0}
1350 
1351 DEFINE_GUID(EAX_EQUALIZER_EFFECT,
1352  0x65f94ce0,
1353  0x9793,
1354  0x11d3,
1355  0x93, 0x9d, 0x0, 0xc0, 0xf0, 0x2d, 0xd6, 0xf0);
1356 
1357 
1358 // Equalizer properties
1359 typedef enum
1360 {
1374 
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)
1380 
1381 // Use this structure for EAXEQUALIZER_ALLPARAMETERS
1382 #ifndef EAXEQUALIZERPROPERTIES_DEFINED
1383 #define EAXEQUALIZERPROPERTIES_DEFINED
1384 typedef struct _EAXEQUALIZERPROPERTIES
1385 {
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)
1397 #endif
1398 
1399 // Property ranges and defaults:
1400 
1401 #define EAXEQUALIZER_MINLOWGAIN (-1800)
1402 #define EAXEQUALIZER_MAXLOWGAIN 1800
1403 #define EAXEQUALIZER_DEFAULTLOWGAIN 0
1404 
1405 #define EAXEQUALIZER_MINLOWCUTOFF 50.0f
1406 #define EAXEQUALIZER_MAXLOWCUTOFF 800.0f
1407 #define EAXEQUALIZER_DEFAULTLOWCUTOFF 200.0f
1408 
1409 #define EAXEQUALIZER_MINMID1GAIN (-1800)
1410 #define EAXEQUALIZER_MAXMID1GAIN 1800
1411 #define EAXEQUALIZER_DEFAULTMID1GAIN 0
1412 
1413 #define EAXEQUALIZER_MINMID1CENTER 200.0f
1414 #define EAXEQUALIZER_MAXMID1CENTER 3000.0f
1415 #define EAXEQUALIZER_DEFAULTMID1CENTER 500.0f
1416 
1417 #define EAXEQUALIZER_MINMID1WIDTH 0.01f
1418 #define EAXEQUALIZER_MAXMID1WIDTH 1.0f
1419 #define EAXEQUALIZER_DEFAULTMID1WIDTH 1.0f
1420 
1421 #define EAXEQUALIZER_MINMID2GAIN (-1800)
1422 #define EAXEQUALIZER_MAXMID2GAIN 1800
1423 #define EAXEQUALIZER_DEFAULTMID2GAIN 0
1424 
1425 #define EAXEQUALIZER_MINMID2CENTER 1000.0f
1426 #define EAXEQUALIZER_MAXMID2CENTER 8000.0f
1427 #define EAXEQUALIZER_DEFAULTMID2CENTER 3000.0f
1428 
1429 #define EAXEQUALIZER_MINMID2WIDTH 0.01f
1430 #define EAXEQUALIZER_MAXMID2WIDTH 1.0f
1431 #define EAXEQUALIZER_DEFAULTMID2WIDTH 1.0f
1432 
1433 #define EAXEQUALIZER_MINHIGHGAIN (-1800)
1434 #define EAXEQUALIZER_MAXHIGHGAIN 1800
1435 #define EAXEQUALIZER_DEFAULTHIGHGAIN 0
1436 
1437 #define EAXEQUALIZER_MINHIGHCUTOFF 4000.0f
1438 #define EAXEQUALIZER_MAXHIGHCUTOFF 16000.0f
1439 #define EAXEQUALIZER_DEFAULTHIGHCUTOFF 6000.0f
1440 
1442 
1443 
1445 // Flanger Effect
1446 
1447 // EAX FLANGER {A70007C0-7D2-11D3-9B1E-A024D13CE1}
1448 
1449 DEFINE_GUID(EAX_FLANGER_EFFECT,
1450  0xa70007c0,
1451  0x7d2,
1452  0x11d3,
1453  0x9b, 0x1e, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
1454 
1455 // Flanger properties
1456 typedef enum
1457 {
1467 
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)
1473 
1474 // used by EAXFLANGER_WAVEFORM
1475 enum
1476 {
1479 };
1480 
1481 // Use this structure for EAXFLANGER_ALLPARAMETERS
1482 #ifndef EAXFLANGERPROPERTIES_DEFINED
1483 #define EAXFLANGERPROPERTIES_DEFINED
1484 typedef struct _EAXFLANGERPROPERTIES
1485 {
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)
1493 #endif
1494 
1495 // Property ranges and defaults:
1496 
1497 #define EAXFLANGER_MINWAVEFORM 0
1498 #define EAXFLANGER_MAXWAVEFORM 1
1499 #define EAXFLANGER_DEFAULTWAVEFORM 1
1500 
1501 #define EAXFLANGER_MINPHASE (-180)
1502 #define EAXFLANGER_MAXPHASE 180
1503 #define EAXFLANGER_DEFAULTPHASE 0
1504 
1505 #define EAXFLANGER_MINRATE 0.0f
1506 #define EAXFLANGER_MAXRATE 10.0f
1507 #define EAXFLANGER_DEFAULTRATE 0.27f
1508 
1509 #define EAXFLANGER_MINDEPTH 0.0f
1510 #define EAXFLANGER_MAXDEPTH 1.0f
1511 #define EAXFLANGER_DEFAULTDEPTH 1.0f
1512 
1513 #define EAXFLANGER_MINFEEDBACK (-1.0f)
1514 #define EAXFLANGER_MAXFEEDBACK 1.0f
1515 #define EAXFLANGER_DEFAULTFEEDBACK (-0.5f)
1516 
1517 #define EAXFLANGER_MINDELAY 0.0002f
1518 #define EAXFLANGER_MAXDELAY 0.004f
1519 #define EAXFLANGER_DEFAULTDELAY 0.002f
1520 
1522 
1523 
1525 // Frequency Shifter Effect
1526 
1527 // EAX FREQUENCY SHIFTER {DC3E1880-9212-11D3-939D-C0F02DD6F0}
1528 
1529 DEFINE_GUID(EAX_FREQUENCYSHIFTER_EFFECT,
1530  0xdc3e1880,
1531  0x9212,
1532  0x11d3,
1533  0x93, 0x9d, 0x0, 0xc0, 0xf0, 0x2d, 0xd6, 0xf0);
1534 
1535 // Frequency Shifter properties
1536 typedef enum
1537 {
1544 
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)
1550 
1551 // used by EAXFREQUENCYSHIFTER_LEFTDIRECTION and EAXFREQUENCYSHIFTER_RIGHTDIRECTION
1552 enum
1553 {
1557 };
1558 
1559 // Use this structure for EAXFREQUENCYSHIFTER_ALLPARAMETERS
1560 #ifndef EAXFREQUENCYSHIFTERPROPERTIES_DEFINED
1561 #define EAXFREQUENCYSHIFTERPROPERTIES_DEFINED
1562 typedef struct _EAXFREQUENCYSHIFTERPROPERTIES
1563 {
1564  float flFrequency; // (Hz)
1565  unsigned long ulLeftDirection; // see enum above
1566  unsigned long ulRightDirection; // see enum above
1568 #endif
1569 
1570 // Property ranges and defaults:
1571 
1572 #define EAXFREQUENCYSHIFTER_MINFREQUENCY 0.0f
1573 #define EAXFREQUENCYSHIFTER_MAXFREQUENCY 24000.0f
1574 #define EAXFREQUENCYSHIFTER_DEFAULTFREQUENCY 0.0f
1575 
1576 #define EAXFREQUENCYSHIFTER_MINLEFTDIRECTION 0
1577 #define EAXFREQUENCYSHIFTER_MAXLEFTDIRECTION 2
1578 #define EAXFREQUENCYSHIFTER_DEFAULTLEFTDIRECTION 0
1579 
1580 #define EAXFREQUENCYSHIFTER_MINRIGHTDIRECTION 0
1581 #define EAXFREQUENCYSHIFTER_MAXRIGHTDIRECTION 2
1582 #define EAXFREQUENCYSHIFTER_DEFAULTRIGHTDIRECTION 0
1583 
1585 
1586 
1588 // Vocal Morpher Effect
1589 
1590 // EAX VOCAL MORPHER {E41CF10C-3383-11D2-88DD-A024D13CE1}
1591 
1592 DEFINE_GUID(EAX_VOCALMORPHER_EFFECT,
1593  0xe41cf10c,
1594  0x3383,
1595  0x11d2,
1596  0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
1597 
1598 // Vocal Morpher properties
1599 typedef enum
1600 {
1610 
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)
1616 
1617 // used by EAXVOCALMORPHER_PHONEMEA and EAXVOCALMORPHER_PHONEMEB
1618 enum
1619 {
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
1622 };
1623 
1624 // used by EAXVOCALMORPHER_WAVEFORM
1625 enum
1626 {
1630 };
1631 
1632 // Use this structure for EAXVOCALMORPHER_ALLPARAMETERS
1633 #ifndef EAXVOCALMORPHERPROPERTIES_DEFINED
1634 #define EAXVOCALMORPHERPROPERTIES_DEFINED
1635 typedef struct _EAXVOCALMORPHERPROPERTIES
1636 {
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)
1644 #endif
1645 
1646 // Property ranges and defaults:
1647 
1648 #define EAXVOCALMORPHER_MINPHONEMEA 0
1649 #define EAXVOCALMORPHER_MAXPHONEMEA 29
1650 #define EAXVOCALMORPHER_DEFAULTPHONEMEA 0
1651 
1652 #define EAXVOCALMORPHER_MINPHONEMEACOARSETUNING (-24)
1653 #define EAXVOCALMORPHER_MAXPHONEMEACOARSETUNING 24
1654 #define EAXVOCALMORPHER_DEFAULTPHONEMEACOARSETUNING 0
1655 
1656 #define EAXVOCALMORPHER_MINPHONEMEB 0
1657 #define EAXVOCALMORPHER_MAXPHONEMEB 29
1658 #define EAXVOCALMORPHER_DEFAULTPHONEMEB 10
1659 
1660 #define EAXVOCALMORPHER_MINPHONEMEBCOARSETUNING (-24)
1661 #define EAXVOCALMORPHER_MAXPHONEMEBCOARSETUNING 24
1662 #define EAXVOCALMORPHER_DEFAULTPHONEMEBCOARSETUNING 0
1663 
1664 #define EAXVOCALMORPHER_MINWAVEFORM 0
1665 #define EAXVOCALMORPHER_MAXWAVEFORM 2
1666 #define EAXVOCALMORPHER_DEFAULTWAVEFORM 0
1667 
1668 #define EAXVOCALMORPHER_MINRATE 0.0f
1669 #define EAXVOCALMORPHER_MAXRATE 10.0f
1670 #define EAXVOCALMORPHER_DEFAULTRATE 1.41f
1671 
1673 
1674 
1676 // Pitch Shifter Effect
1677 
1678 // EAX PITCH SHIFTER {E7905100-AFB2-11D2-88DD-A024D13CE1}
1679 
1680 DEFINE_GUID(EAX_PITCHSHIFTER_EFFECT,
1681  0xe7905100,
1682  0xafb2,
1683  0x11d2,
1684  0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
1685 
1686 // Pitch Shifter properties
1687 typedef enum
1688 {
1694 
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)
1700 
1701 // Use this structure for EAXPITCHSHIFTER_ALLPARAMETERS
1702 #ifndef EAXPITCHSHIFTERPROPERTIES_DEFINED
1703 #define EAXPITCHSHIFTERPROPERTIES_DEFINED
1704 typedef struct _EAXPITCHSHIFTERPROPERTIES
1705 {
1706  long lCoarseTune; // Amount of pitch shift (semitones)
1707  long lFineTune; // Amount of pitch shift (cents)
1709 #endif
1710 
1711 // Property ranges and defaults:
1712 
1713 #define EAXPITCHSHIFTER_MINCOARSETUNE (-12)
1714 #define EAXPITCHSHIFTER_MAXCOARSETUNE 12
1715 #define EAXPITCHSHIFTER_DEFAULTCOARSETUNE 12
1716 
1717 #define EAXPITCHSHIFTER_MINFINETUNE (-50)
1718 #define EAXPITCHSHIFTER_MAXFINETUNE 50
1719 #define EAXPITCHSHIFTER_DEFAULTFINETUNE 0
1720 
1722 
1723 
1725 // Ring Modulator Effect
1726 
1727 // EAX RING MODULATOR {B89FE60-AFB5-11D2-88DD-A024D13CE1}
1728 
1729 DEFINE_GUID(EAX_RINGMODULATOR_EFFECT,
1730  0xb89fe60,
1731  0xafb5,
1732  0x11d2,
1733  0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
1734 
1735 // Ring Modulator properties
1736 typedef enum
1737 {
1744 
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)
1750 
1751 // used by EAXRINGMODULATOR_WAVEFORM
1752 enum
1753 {
1757 };
1758 
1759 // Use this structure for EAXRINGMODULATOR_ALLPARAMETERS
1760 #ifndef EAXRINGMODULATORPROPERTIES_DEFINED
1761 #define EAXRINGMODULATORPROPERTIES_DEFINED
1762 typedef struct _EAXRINGMODULATORPROPERTIES
1763 {
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
1768 #endif
1769 
1770 // Property ranges and defaults:
1771 
1772 #define EAXRINGMODULATOR_MINFREQUENCY 0.0f
1773 #define EAXRINGMODULATOR_MAXFREQUENCY 8000.0f
1774 #define EAXRINGMODULATOR_DEFAULTFREQUENCY 440.0f
1775 
1776 #define EAXRINGMODULATOR_MINHIGHPASSCUTOFF 0.0f
1777 #define EAXRINGMODULATOR_MAXHIGHPASSCUTOFF 24000.0f
1778 #define EAXRINGMODULATOR_DEFAULTHIGHPASSCUTOFF 800.0f
1779 
1780 #define EAXRINGMODULATOR_MINWAVEFORM 0
1781 #define EAXRINGMODULATOR_MAXWAVEFORM 2
1782 #define EAXRINGMODULATOR_DEFAULTWAVEFORM 0
1783 
1785 
1786 #pragma pack(pop)
1787 
1788 #ifdef __cplusplus
1789 }
1790 #endif // __cplusplus
1791 
1792 #endif
Definition: eax5.h:1620
float flDopplerFactor
Definition: eax4.h:159
struct _EAXSOURCESENDPROPERTIES * LPEAXSOURCESENDPROPERTIES
struct _EAXSOURCEEXCLUSIONSENDPROPERTIES EAXSOURCEEXCLUSIONSENDPROPERTIES
struct _EAXSOURCE2DPROPERTIES * LPEAXSOURCE2DPROPERTIES
EAXCONTEXT_PROPERTY
Definition: eax5.h:389
float flModulationTime
Definition: eax4.h:728
int ALint
OpenAL 32bit signed integer type.
Definition: altypes.h:48
__declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate(GUID *
struct _EAXFREQUENCYSHIFTERPROPERTIES * LPEAXFREQUENCYSHIFTERPROPERTIES
struct _EAXFREQUENCYSHIFTERPROPERTIES EAXFREQUENCYSHIFTERPROPERTIES
EAXFREQUENCYSHIFTER_PROPERTY
Definition: eax5.h:1536
float flMacroFXFactor
Definition: eax5.h:142
struct _EAXACTIVEFXSLOTS * LPEAXACTIVEFXSLOTS
struct _EAXSOURCEOCCLUSIONSENDPROPERTIES EAXSOURCEOCCLUSIONSENDPROPERTIES
float z
Definition: eax3.h:136
float flOcclusionRoomRatio
Definition: eax4.h:154
float flOcclusionRoomRatio
Definition: eax3.h:436
unsigned long ulFlags
Definition: eax4.h:734
Definition: eax5.h:1621
float flReleaseTime
Definition: eax4.h:915
struct _EAXAGCCOMPRESSORPROPERTIES * LPEAXAGCCOMPRESSORPROPERTIES
struct _EAXSOURCEEXCLUSIONSENDPROPERTIES * LPEAXSOURCEEXCLUSIONSENDPROPERTIES
Definition: eax5.h:437
struct _EAXSOURCESENDPROPERTIES EAXSOURCESENDPROPERTIES
Definition: eax5.h:1620
float flOcclusionLFRatio
Definition: eax5.h:340
Definition: eax5.h:1620
Definition: eax5.h:1620
Definition: eax5.h:1621
unsigned long ulRightDirection
Definition: eax4.h:1359
EAXVOCALMORPHER_PROPERTY
Definition: eax5.h:1599
float flEchoDepth
Definition: eax4.h:727
float flModulationDepth
Definition: eax4.h:729
#define WINAPI
Definition: qgl.h:64
unsigned long ulWaveform
Definition: eax4.h:1282
float flEnvironmentDiffusion
Definition: eax4.h:713
struct _EAXEQUALIZERPROPERTIES EAXEQUALIZERPROPERTIES
float flSpread
Definition: eax4.h:1119
unsigned long ulFlags
Definition: eax4.h:263
Definition: eax5.h:1621
struct _EAXVECTOR EAXVECTOR
EAXCHORUS_PROPERTY
Definition: eax5.h:1144
struct _EAXVOCALMORPHERPROPERTIES EAXVOCALMORPHERPROPERTIES
unsigned long ulOnOff
Definition: eax4.h:872
Definition: eax5.h:1620
float flEnvironmentSize
Definition: eax4.h:712
struct _EAXSOURCEPROPERTIES EAXSOURCEPROPERTIES
float flAirAbsorptionHF
Definition: eax4.h:730
Definition: eax5.h:1621
unsigned long ulEnvironment
Definition: eax4.h:711
EAXAGCCOMPRESSOR_PROPERTY
Definition: eax5.h:1040
EAXVECTOR vReflectionsPan
Definition: eax4.h:722
struct _EAXPITCHSHIFTERPROPERTIES * LPEAXPITCHSHIFTERPROPERTIES
Definition: eax5.h:1620
struct _EAXOCCLUSIONPROPERTIES * LPEAXOCCLUSIONPROPERTIES
unsigned long ulWaveform
Definition: eax4.h:1431
float flHFReference
Definition: eax4.h:128
float flMacroFXFactor
Definition: eax5.h:181
Definition: eax5.h:1620
unsigned ALuint
OpenAL 32bit unsigned integer type.
Definition: altypes.h:45
Definition: eax5.h:1620
struct _EAXSPEAKERLEVELPROPERTIES * LPEAXSPEAKERLEVELPROPERTIES
unsigned int ALsizei
OpenAL 32bit type.
Definition: altypes.h:57
struct _EAXSOURCEPROPERTIES * LPEAXSOURCEPROPERTIES
struct _EAXEXCLUSIONPROPERTIES EAXEXCLUSIONPROPERTIES
GUID guidPrimaryFXSlotID
Definition: eax4.h:125
char ALboolean
OpenAL cross platform audio library Copyright (C) 1999-2000 by authors.
Definition: altypes.h:30
struct _EAXRINGMODULATORPROPERTIES * LPEAXRINGMODULATORPROPERTIES
struct _EAXCONTEXTPROPERTIES * LPEAXCONTEXTPROPERTIES
struct _EAXOBSTRUCTIONPROPERTIES EAXOBSTRUCTIONPROPERTIES
float flFeedback
Definition: eax4.h:986
struct _EAXPITCHSHIFTERPROPERTIES EAXPITCHSHIFTERPROPERTIES
EAXFXSLOT_PROPERTY
Definition: eax5.h:498
float flDecayTime
Definition: eax4.h:717
EAXVECTOR vReverbPan
Definition: eax4.h:725
float flRoomRolloffFactor
Definition: eax4.h:161
float flOcclusionLFRatio
Definition: eax3.h:435
struct _EAXFXSLOTPROPERTIES * LPEAXFXSLOTPROPERTIES
struct _EAXCONTEXTPROPERTIES EAXCONTEXTPROPERTIES
struct _EAXSOURCE2DPROPERTIES EAXSOURCE2DPROPERTIES
unsigned long ulMaxActiveSends
Definition: eax5.h:129
EAXEQUALIZER_PROPERTY
Definition: eax5.h:1359
Definition: eax5.h:1620
Definition: eax5.h:1620
float flDecayHFRatio
Definition: eax4.h:718
float flOcclusionDirectRatio
Definition: eax4.h:155
struct _EAXREVERBPROPERTIES EAXREVERBPROPERTIES
struct _EAXSOURCEALLSENDPROPERTIES EAXSOURCEALLSENDPROPERTIES
unsigned long ulWaveform
Definition: eax4.h:982
float flFeedback
Definition: eax4.h:1118
float flEchoTime
Definition: eax4.h:726
float flRoomRolloffFactor
Definition: eax4.h:733
struct _EAXECHOPROPERTIES EAXECHOPROPERTIES
Definition: eax5.h:1621
EAXRINGMODULATOR_PROPERTY
Definition: eax5.h:1736
float flObstructionLFRatio
Definition: eax3.h:425
#define FAR
Definition: jmorecfg.h:205
struct _EAXFLANGERPROPERTIES * LPEAXFLANGERPROPERTIES
Definition: eax5.h:1621
GUID guidActiveFXSlots[EAX_MAX_ACTIVE_FXSLOTS]
Definition: eax4.h:185
float flAirAbsorptionFactor
Definition: eax4.h:162
float flHFReference
Definition: eax4.h:731
Definition: eax5.h:1620
Definition: eax5.h:436
struct _EAXAGCCOMPRESSORPROPERTIES EAXAGCCOMPRESSORPROPERTIES
EAXECHO_PROPERTY
Definition: eax5.h:1291
struct _EAXCHORUSPROPERTIES * LPEAXCHORUSPROPERTIES
EAXDISTORTION_PROPERTY
Definition: eax5.h:1224
GUID guidLoadEffect
Definition: eax4.h:260
float flDecayLFRatio
Definition: eax4.h:719
float flObstructionLFRatio
Definition: eax4.h:151
Definition: eax5.h:1620
float flAttackTime
Definition: eax4.h:914
Definition: eax5.h:1621
struct _EAXDISTORTIONPROPERTIES * LPEAXDISTORTIONPROPERTIES
EAXREVERB_PROPERTY
Definition: eax5.h:784
struct _EAXFLANGERPROPERTIES EAXFLANGERPROPERTIES
Definition: eax5.h:1621
float x
Definition: eax3.h:134
unsigned long ulPhonemeA
Definition: eax4.h:1427
float flRolloffFactor
Definition: eax4.h:160
EAXPITCHSHIFTER_PROPERTY
Definition: eax5.h:1687
float flOcclusionLFRatio
Definition: eax4.h:153
float flLRDelay
Definition: eax4.h:1116
float flExclusionLFRatio
Definition: eax4.h:157
Definition: eax5.h:1620
LPDIRECTSOUND IUnknown FAR *typedef HRESULT(FAR PASCAL *LPEAXDIRECTSOUNDCREATE)(GUID *
unsigned long ulLeftDirection
Definition: eax4.h:1358
struct _EAXSOURCEALLSENDPROPERTIES * LPEAXSOURCEALLSENDPROPERTIES
void ALvoid
OpenAL void type.
Definition: altypes.h:60
float flDamping
Definition: eax4.h:1117
struct _EAXRINGMODULATORPROPERTIES EAXRINGMODULATORPROPERTIES
unsigned long ulFlags
Definition: eax4.h:163
struct _EAXFXSLOTPROPERTIES EAXFXSLOTPROPERTIES
unsigned long ulPhonemeB
Definition: eax4.h:1429
float flDistanceFactor
Definition: eax4.h:126
struct _EAXCHORUSPROPERTIES EAXCHORUSPROPERTIES
struct _EAXSESSIONPROPERTIES EAXSESSIONPROPERTIES
EAXSOURCE_PROPERTY
Definition: eax5.h:564
struct _EAXOBSTRUCTIONPROPERTIES * LPEAXOBSTRUCTIONPROPERTIES
struct _EAXAUTOWAHPROPERTIES EAXAUTOWAHPROPERTIES
unsigned long ulEAXVersion
Definition: eax5.h:128
float flAirAbsorptionHF
Definition: eax4.h:127
struct _EAXEQUALIZERPROPERTIES * LPEAXEQUALIZERPROPERTIES
float flReverbDelay
Definition: eax4.h:724
EAXAUTOWAH_PROPERTY
Definition: eax5.h:1082
Definition: eax5.h:1620
float y
Definition: eax3.h:135
Definition: eax5.h:1620
struct _EAXACTIVEFXSLOTS EAXACTIVEFXSLOTS
float flOcclusionDirectRatio
Definition: eax3.h:437
struct _EAXEXCLUSIONPROPERTIES * LPEAXEXCLUSIONPROPERTIES
float flLFReference
Definition: eax4.h:732
unsigned long ulWaveform
Definition: eax4.h:1550
struct _EAXSPEAKERLEVELPROPERTIES EAXSPEAKERLEVELPROPERTIES
Definition: eax5.h:1621
long lOutsideVolumeHF
Definition: eax4.h:158
struct _EAXREVERBPROPERTIES * LPEAXREVERBPROPERTIES
struct _EAXSOURCEOCCLUSIONSENDPROPERTIES * LPEAXSOURCEOCCLUSIONSENDPROPERTIES
GUID guidReceivingFXSlotID
Definition: eax4.h:223
struct _EAXVOCALMORPHERPROPERTIES * LPEAXVOCALMORPHERPROPERTIES
int ALenum
OpenAL enumerations.
Definition: altypes.h:63
struct _EAXDISTORTIONPROPERTIES EAXDISTORTIONPROPERTIES
Definition: eax5.h:1621
Definition: eax5.h:1620
float flReflectionsDelay
Definition: eax4.h:721
unsigned long ulFlags
Definition: eax5.h:207
Definition: eax5.h:1620
Definition: eax5.h:1621
struct _EAXAUTOWAHPROPERTIES * LPEAXAUTOWAHPROPERTIES
#define EAX_MAX_ACTIVE_FXSLOTS
Definition: eax5.h:93
struct _EAXECHOPROPERTIES * LPEAXECHOPROPERTIES
struct _EAXSESSIONPROPERTIES * LPEAXSESSIONPROPERTIES
DEFINE_GUID(CLSID_EAXDirectSound, 0x4ff53b81, 0x1ce0, 0x11d3, 0xaa, 0xb8, 0x0, 0xa0, 0xc9, 0x59, 0x49, 0xd5)
float flExclusionLFRatio
Definition: eax3.h:447
struct _EAXOCCLUSIONPROPERTIES EAXOCCLUSIONPROPERTIES
Definition: eax5.h:1620
EAXFLANGER_PROPERTY
Definition: eax5.h:1456
Definition: eax5.h:1620