1 #ifndef EAX_API_INCLUDED
2 #define EAX_API_INCLUDED
8 // Based on headers `eax[2-5].h` included in Doom 3 source code:
9 // https://github.com/id-Software/DOOM-3/tree/master/neo/openal/include
29 std::uint8_t Data4
[8];
32 inline bool operator==(const GUID
& lhs
, const GUID
& rhs
) noexcept
34 return std::memcmp(&lhs
, &rhs
, sizeof(GUID
)) == 0;
37 inline bool operator!=(const GUID
& lhs
, const GUID
& rhs
) noexcept
41 #endif // GUID_DEFINED
44 extern const GUID DSPROPSETID_EAX_ReverbProperties
;
46 enum DSPROPERTY_EAX_REVERBPROPERTY
: unsigned int
49 DSPROPERTY_EAX_ENVIRONMENT
,
50 DSPROPERTY_EAX_VOLUME
,
51 DSPROPERTY_EAX_DECAYTIME
,
52 DSPROPERTY_EAX_DAMPING
,
53 }; // DSPROPERTY_EAX_REVERBPROPERTY
55 struct EAX_REVERBPROPERTIES
57 unsigned long environment
;
61 }; // EAX_REVERBPROPERTIES
63 inline bool operator==(const EAX_REVERBPROPERTIES
& lhs
, const EAX_REVERBPROPERTIES
& rhs
) noexcept
65 return std::memcmp(&lhs
, &rhs
, sizeof(EAX_REVERBPROPERTIES
)) == 0;
68 extern const GUID DSPROPSETID_EAXBUFFER_ReverbProperties
;
70 enum DSPROPERTY_EAXBUFFER_REVERBPROPERTY
: unsigned int
72 DSPROPERTY_EAXBUFFER_ALL
,
73 DSPROPERTY_EAXBUFFER_REVERBMIX
,
74 }; // DSPROPERTY_EAXBUFFER_REVERBPROPERTY
76 struct EAXBUFFER_REVERBPROPERTIES
81 inline bool operator==(const EAXBUFFER_REVERBPROPERTIES
& lhs
, const EAXBUFFER_REVERBPROPERTIES
& rhs
) noexcept
83 return lhs
.fMix
== rhs
.fMix
;
86 constexpr auto EAX_BUFFER_MINREVERBMIX
= 0.0F
;
87 constexpr auto EAX_BUFFER_MAXREVERBMIX
= 1.0F
;
88 constexpr auto EAX_REVERBMIX_USEDISTANCE
= -1.0F
;
91 extern const GUID DSPROPSETID_EAX20_ListenerProperties
;
93 enum DSPROPERTY_EAX20_LISTENERPROPERTY
:
96 DSPROPERTY_EAX20LISTENER_NONE
,
97 DSPROPERTY_EAX20LISTENER_ALLPARAMETERS
,
98 DSPROPERTY_EAX20LISTENER_ROOM
,
99 DSPROPERTY_EAX20LISTENER_ROOMHF
,
100 DSPROPERTY_EAX20LISTENER_ROOMROLLOFFFACTOR
,
101 DSPROPERTY_EAX20LISTENER_DECAYTIME
,
102 DSPROPERTY_EAX20LISTENER_DECAYHFRATIO
,
103 DSPROPERTY_EAX20LISTENER_REFLECTIONS
,
104 DSPROPERTY_EAX20LISTENER_REFLECTIONSDELAY
,
105 DSPROPERTY_EAX20LISTENER_REVERB
,
106 DSPROPERTY_EAX20LISTENER_REVERBDELAY
,
107 DSPROPERTY_EAX20LISTENER_ENVIRONMENT
,
108 DSPROPERTY_EAX20LISTENER_ENVIRONMENTSIZE
,
109 DSPROPERTY_EAX20LISTENER_ENVIRONMENTDIFFUSION
,
110 DSPROPERTY_EAX20LISTENER_AIRABSORPTIONHF
,
111 DSPROPERTY_EAX20LISTENER_FLAGS
112 }; // DSPROPERTY_EAX20_LISTENERPROPERTY
114 struct EAX20LISTENERPROPERTIES
116 long lRoom
; // room effect level at low frequencies
117 long lRoomHF
; // room effect high-frequency level re. low frequency level
118 float flRoomRolloffFactor
; // like DS3D flRolloffFactor but for room effect
119 float flDecayTime
; // reverberation decay time at low frequencies
120 float flDecayHFRatio
; // high-frequency to low-frequency decay time ratio
121 long lReflections
; // early reflections level relative to room effect
122 float flReflectionsDelay
; // initial reflection delay time
123 long lReverb
; // late reverberation level relative to room effect
124 float flReverbDelay
; // late reverberation delay time relative to initial reflection
125 unsigned long dwEnvironment
; // sets all listener properties
126 float flEnvironmentSize
; // environment size in meters
127 float flEnvironmentDiffusion
; // environment diffusion
128 float flAirAbsorptionHF
; // change in level per meter at 5 kHz
129 unsigned long dwFlags
; // modifies the behavior of properties
130 }; // EAX20LISTENERPROPERTIES
133 extern const GUID DSPROPSETID_EAX20_BufferProperties
;
136 enum DSPROPERTY_EAX20_BUFFERPROPERTY
:
139 DSPROPERTY_EAX20BUFFER_NONE
,
140 DSPROPERTY_EAX20BUFFER_ALLPARAMETERS
,
141 DSPROPERTY_EAX20BUFFER_DIRECT
,
142 DSPROPERTY_EAX20BUFFER_DIRECTHF
,
143 DSPROPERTY_EAX20BUFFER_ROOM
,
144 DSPROPERTY_EAX20BUFFER_ROOMHF
,
145 DSPROPERTY_EAX20BUFFER_ROOMROLLOFFFACTOR
,
146 DSPROPERTY_EAX20BUFFER_OBSTRUCTION
,
147 DSPROPERTY_EAX20BUFFER_OBSTRUCTIONLFRATIO
,
148 DSPROPERTY_EAX20BUFFER_OCCLUSION
,
149 DSPROPERTY_EAX20BUFFER_OCCLUSIONLFRATIO
,
150 DSPROPERTY_EAX20BUFFER_OCCLUSIONROOMRATIO
,
151 DSPROPERTY_EAX20BUFFER_OUTSIDEVOLUMEHF
,
152 DSPROPERTY_EAX20BUFFER_AIRABSORPTIONFACTOR
,
153 DSPROPERTY_EAX20BUFFER_FLAGS
154 }; // DSPROPERTY_EAX20_BUFFERPROPERTY
157 struct EAX20BUFFERPROPERTIES
159 long lDirect
; // direct path level
160 long lDirectHF
; // direct path level at high frequencies
161 long lRoom
; // room effect level
162 long lRoomHF
; // room effect level at high frequencies
163 float flRoomRolloffFactor
; // like DS3D flRolloffFactor but for room effect
164 long lObstruction
; // main obstruction control (attenuation at high frequencies)
165 float flObstructionLFRatio
; // obstruction low-frequency level re. main control
166 long lOcclusion
; // main occlusion control (attenuation at high frequencies)
167 float flOcclusionLFRatio
; // occlusion low-frequency level re. main control
168 float flOcclusionRoomRatio
; // occlusion room effect level re. main control
169 long lOutsideVolumeHF
; // outside sound cone level at high frequencies
170 float flAirAbsorptionFactor
; // multiplies DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF
171 unsigned long dwFlags
; // modifies the behavior of properties
172 }; // EAX20BUFFERPROPERTIES
175 extern const GUID DSPROPSETID_EAX30_ListenerProperties
;
177 extern const GUID DSPROPSETID_EAX30_BufferProperties
;
180 constexpr auto EAX_MAX_FXSLOTS
= 4;
182 constexpr auto EAX40_MAX_ACTIVE_FXSLOTS
= 2;
183 constexpr auto EAX50_MAX_ACTIVE_FXSLOTS
= 4;
186 constexpr auto EAX_OK
= 0L;
187 constexpr auto EAXERR_INVALID_OPERATION
= -1L;
188 constexpr auto EAXERR_INVALID_VALUE
= -2L;
189 constexpr auto EAXERR_NO_EFFECT_LOADED
= -3L;
190 constexpr auto EAXERR_UNKNOWN_EFFECT
= -4L;
191 constexpr auto EAXERR_INCOMPATIBLE_SOURCE_TYPE
= -5L;
192 constexpr auto EAXERR_INCOMPATIBLE_EAX_VERSION
= -6L;
195 extern const GUID EAX_NULL_GUID
;
197 extern const GUID EAX_PrimaryFXSlotID
;
207 inline bool operator==(const EAXVECTOR
& lhs
, const EAXVECTOR
& rhs
) noexcept
208 { return std::memcmp(&lhs
, &rhs
, sizeof(EAXVECTOR
)) == 0; }
210 inline bool operator!=(const EAXVECTOR
& lhs
, const EAXVECTOR
& rhs
) noexcept
211 { return !(lhs
== rhs
); }
214 extern const GUID EAXPROPERTYID_EAX40_Context
;
216 extern const GUID EAXPROPERTYID_EAX50_Context
;
225 SPEAKERS_5
, // 5.1 speakers
226 SPEAKERS_6
, // 6.1 speakers
227 SPEAKERS_7
, // 7.1 speakers
234 EAX_40
= 5, // EAX 4.0
235 EAX_50
= 6, // EAX 5.0
238 constexpr auto EAXCONTEXT_MINEAXSESSION
= EAX_40
;
239 constexpr auto EAXCONTEXT_MAXEAXSESSION
= EAX_50
;
240 constexpr auto EAXCONTEXT_DEFAULTEAXSESSION
= EAX_40
;
242 constexpr auto EAXCONTEXT_MINMAXACTIVESENDS
= 2UL;
243 constexpr auto EAXCONTEXT_MAXMAXACTIVESENDS
= 4UL;
244 constexpr auto EAXCONTEXT_DEFAULTMAXACTIVESENDS
= 2UL;
247 struct EAXSESSIONPROPERTIES
249 unsigned long ulEAXVersion
;
250 unsigned long ulMaxActiveSends
;
251 }; // EAXSESSIONPROPERTIES
253 enum EAXCONTEXT_PROPERTY
:
257 EAXCONTEXT_ALLPARAMETERS
,
258 EAXCONTEXT_PRIMARYFXSLOTID
,
259 EAXCONTEXT_DISTANCEFACTOR
,
260 EAXCONTEXT_AIRABSORPTIONHF
,
261 EAXCONTEXT_HFREFERENCE
,
262 EAXCONTEXT_LASTERROR
,
265 EAXCONTEXT_SPEAKERCONFIG
,
266 EAXCONTEXT_EAXSESSION
,
267 EAXCONTEXT_MACROFXFACTOR
,
268 }; // EAXCONTEXT_PROPERTY
270 struct EAX40CONTEXTPROPERTIES
272 GUID guidPrimaryFXSlotID
;
273 float flDistanceFactor
;
274 float flAirAbsorptionHF
;
276 }; // EAX40CONTEXTPROPERTIES
278 struct EAX50CONTEXTPROPERTIES
:
279 public EAX40CONTEXTPROPERTIES
281 float flMacroFXFactor
;
282 }; // EAX40CONTEXTPROPERTIES
286 const EAX40CONTEXTPROPERTIES
& lhs
,
287 const EAX40CONTEXTPROPERTIES
& rhs
) noexcept
;
290 const EAX50CONTEXTPROPERTIES
& lhs
,
291 const EAX50CONTEXTPROPERTIES
& rhs
) noexcept
;
294 constexpr auto EAXCONTEXT_MINDISTANCEFACTOR
= FLT_MIN
;
295 constexpr auto EAXCONTEXT_MAXDISTANCEFACTOR
= FLT_MAX
;
296 constexpr auto EAXCONTEXT_DEFAULTDISTANCEFACTOR
= 1.0F
;
298 constexpr auto EAXCONTEXT_MINAIRABSORPTIONHF
= -100.0F
;
299 constexpr auto EAXCONTEXT_MAXAIRABSORPTIONHF
= 0.0F
;
300 constexpr auto EAXCONTEXT_DEFAULTAIRABSORPTIONHF
= -5.0F
;
302 constexpr auto EAXCONTEXT_MINHFREFERENCE
= 1000.0F
;
303 constexpr auto EAXCONTEXT_MAXHFREFERENCE
= 20000.0F
;
304 constexpr auto EAXCONTEXT_DEFAULTHFREFERENCE
= 5000.0F
;
306 constexpr auto EAXCONTEXT_MINMACROFXFACTOR
= 0.0F
;
307 constexpr auto EAXCONTEXT_MAXMACROFXFACTOR
= 1.0F
;
308 constexpr auto EAXCONTEXT_DEFAULTMACROFXFACTOR
= 0.0F
;
311 extern const GUID EAXPROPERTYID_EAX40_FXSlot0
;
313 extern const GUID EAXPROPERTYID_EAX50_FXSlot0
;
315 extern const GUID EAXPROPERTYID_EAX40_FXSlot1
;
317 extern const GUID EAXPROPERTYID_EAX50_FXSlot1
;
319 extern const GUID EAXPROPERTYID_EAX40_FXSlot2
;
321 extern const GUID EAXPROPERTYID_EAX50_FXSlot2
;
323 extern const GUID EAXPROPERTYID_EAX40_FXSlot3
;
325 extern const GUID EAXPROPERTYID_EAX50_FXSlot3
;
327 extern const GUID EAXCONTEXT_DEFAULTPRIMARYFXSLOTID
;
329 enum EAXFXSLOT_PROPERTY
:
332 EAXFXSLOT_PARAMETER
= 0,
334 EAXFXSLOT_NONE
= 0x10000,
335 EAXFXSLOT_ALLPARAMETERS
,
336 EAXFXSLOT_LOADEFFECT
,
343 EAXFXSLOT_OCCLUSIONLFRATIO
,
344 }; // EAXFXSLOT_PROPERTY
346 constexpr auto EAXFXSLOTFLAGS_ENVIRONMENT
= 0x00000001UL
;
348 constexpr auto EAXFXSLOTFLAGS_UPMIX
= 0x00000002UL
;
350 constexpr auto EAX40FXSLOTFLAGS_RESERVED
= 0xFFFFFFFEUL
; // reserved future use
351 constexpr auto EAX50FXSLOTFLAGS_RESERVED
= 0xFFFFFFFCUL
; // reserved future use
354 constexpr auto EAXFXSLOT_MINVOLUME
= -10'000L;
355 constexpr auto EAXFXSLOT_MAXVOLUME
= 0L;
356 constexpr auto EAXFXSLOT_DEFAULTVOLUME
= 0L;
358 constexpr auto EAXFXSLOT_MINLOCK
= 0L;
359 constexpr auto EAXFXSLOT_MAXLOCK
= 1L;
364 EAXFXSLOT_UNLOCKED
= 0,
368 constexpr auto EAXFXSLOT_MINOCCLUSION
= -10'000L;
369 constexpr auto EAXFXSLOT_MAXOCCLUSION
= 0L;
370 constexpr auto EAXFXSLOT_DEFAULTOCCLUSION
= 0L;
372 constexpr auto EAXFXSLOT_MINOCCLUSIONLFRATIO
= 0.0F
;
373 constexpr auto EAXFXSLOT_MAXOCCLUSIONLFRATIO
= 1.0F
;
374 constexpr auto EAXFXSLOT_DEFAULTOCCLUSIONLFRATIO
= 0.25F
;
376 constexpr auto EAX40FXSLOT_DEFAULTFLAGS
= EAXFXSLOTFLAGS_ENVIRONMENT
;
378 constexpr auto EAX50FXSLOT_DEFAULTFLAGS
=
379 EAXFXSLOTFLAGS_ENVIRONMENT
|
380 EAXFXSLOTFLAGS_UPMIX
; // ignored for reverb;
382 struct EAX40FXSLOTPROPERTIES
387 unsigned long ulFlags
;
388 }; // EAX40FXSLOTPROPERTIES
390 struct EAX50FXSLOTPROPERTIES
:
391 public EAX40FXSLOTPROPERTIES
394 float flOcclusionLFRatio
;
395 }; // EAX50FXSLOTPROPERTIES
398 const EAX40FXSLOTPROPERTIES
& lhs
,
399 const EAX40FXSLOTPROPERTIES
& rhs
) noexcept
;
402 const EAX50FXSLOTPROPERTIES
& lhs
,
403 const EAX50FXSLOTPROPERTIES
& rhs
) noexcept
;
405 extern const GUID EAXPROPERTYID_EAX40_Source
;
407 extern const GUID EAXPROPERTYID_EAX50_Source
;
409 // Source object properties
410 enum EAXSOURCE_PROPERTY
:
416 EAXSOURCE_ALLPARAMETERS
,
417 EAXSOURCE_OBSTRUCTIONPARAMETERS
,
418 EAXSOURCE_OCCLUSIONPARAMETERS
,
419 EAXSOURCE_EXCLUSIONPARAMETERS
,
424 EAXSOURCE_OBSTRUCTION
,
425 EAXSOURCE_OBSTRUCTIONLFRATIO
,
427 EAXSOURCE_OCCLUSIONLFRATIO
,
428 EAXSOURCE_OCCLUSIONROOMRATIO
,
429 EAXSOURCE_OCCLUSIONDIRECTRATIO
,
431 EAXSOURCE_EXCLUSIONLFRATIO
,
432 EAXSOURCE_OUTSIDEVOLUMEHF
,
433 EAXSOURCE_DOPPLERFACTOR
,
434 EAXSOURCE_ROLLOFFFACTOR
,
435 EAXSOURCE_ROOMROLLOFFFACTOR
,
436 EAXSOURCE_AIRABSORPTIONFACTOR
,
441 EAXSOURCE_SENDPARAMETERS
,
442 EAXSOURCE_ALLSENDPARAMETERS
,
443 EAXSOURCE_OCCLUSIONSENDPARAMETERS
,
444 EAXSOURCE_EXCLUSIONSENDPARAMETERS
,
445 EAXSOURCE_ACTIVEFXSLOTID
,
449 EAXSOURCE_MACROFXFACTOR
,
450 EAXSOURCE_SPEAKERLEVELS
,
451 EAXSOURCE_ALL2DPARAMETERS
,
452 }; // EAXSOURCE_PROPERTY
455 constexpr auto EAXSOURCEFLAGS_DIRECTHFAUTO
= 0x00000001UL
; // relates to EAXSOURCE_DIRECTHF
456 constexpr auto EAXSOURCEFLAGS_ROOMAUTO
= 0x00000002UL
; // relates to EAXSOURCE_ROOM
457 constexpr auto EAXSOURCEFLAGS_ROOMHFAUTO
= 0x00000004UL
; // relates to EAXSOURCE_ROOMHF
459 constexpr auto EAXSOURCEFLAGS_3DELEVATIONFILTER
= 0x00000008UL
;
461 constexpr auto EAXSOURCEFLAGS_UPMIX
= 0x00000010UL
;
463 constexpr auto EAXSOURCEFLAGS_APPLYSPEAKERLEVELS
= 0x00000020UL
;
465 constexpr auto EAX20SOURCEFLAGS_RESERVED
= 0xFFFFFFF8UL
; // reserved future use
466 constexpr auto EAX50SOURCEFLAGS_RESERVED
= 0xFFFFFFC0UL
; // reserved future use
469 constexpr auto EAXSOURCE_MINSEND
= -10'000L;
470 constexpr auto EAXSOURCE_MAXSEND
= 0L;
471 constexpr auto EAXSOURCE_DEFAULTSEND
= 0L;
473 constexpr auto EAXSOURCE_MINSENDHF
= -10'000L;
474 constexpr auto EAXSOURCE_MAXSENDHF
= 0L;
475 constexpr auto EAXSOURCE_DEFAULTSENDHF
= 0L;
477 constexpr auto EAXSOURCE_MINDIRECT
= -10'000L;
478 constexpr auto EAXSOURCE_MAXDIRECT
= 1'000L;
479 constexpr auto EAXSOURCE_DEFAULTDIRECT
= 0L;
481 constexpr auto EAXSOURCE_MINDIRECTHF
= -10'000L;
482 constexpr auto EAXSOURCE_MAXDIRECTHF
= 0L;
483 constexpr auto EAXSOURCE_DEFAULTDIRECTHF
= 0L;
485 constexpr auto EAXSOURCE_MINROOM
= -10'000L;
486 constexpr auto EAXSOURCE_MAXROOM
= 1'000L;
487 constexpr auto EAXSOURCE_DEFAULTROOM
= 0L;
489 constexpr auto EAXSOURCE_MINROOMHF
= -10'000L;
490 constexpr auto EAXSOURCE_MAXROOMHF
= 0L;
491 constexpr auto EAXSOURCE_DEFAULTROOMHF
= 0L;
493 constexpr auto EAXSOURCE_MINOBSTRUCTION
= -10'000L;
494 constexpr auto EAXSOURCE_MAXOBSTRUCTION
= 0L;
495 constexpr auto EAXSOURCE_DEFAULTOBSTRUCTION
= 0L;
497 constexpr auto EAXSOURCE_MINOBSTRUCTIONLFRATIO
= 0.0F
;
498 constexpr auto EAXSOURCE_MAXOBSTRUCTIONLFRATIO
= 1.0F
;
499 constexpr auto EAXSOURCE_DEFAULTOBSTRUCTIONLFRATIO
= 0.0F
;
501 constexpr auto EAXSOURCE_MINOCCLUSION
= -10'000L;
502 constexpr auto EAXSOURCE_MAXOCCLUSION
= 0L;
503 constexpr auto EAXSOURCE_DEFAULTOCCLUSION
= 0L;
505 constexpr auto EAXSOURCE_MINOCCLUSIONLFRATIO
= 0.0F
;
506 constexpr auto EAXSOURCE_MAXOCCLUSIONLFRATIO
= 1.0F
;
507 constexpr auto EAXSOURCE_DEFAULTOCCLUSIONLFRATIO
= 0.25F
;
509 constexpr auto EAXSOURCE_MINOCCLUSIONROOMRATIO
= 0.0F
;
510 constexpr auto EAXSOURCE_MAXOCCLUSIONROOMRATIO
= 10.0F
;
511 constexpr auto EAXSOURCE_DEFAULTOCCLUSIONROOMRATIO
= 1.5F
;
513 constexpr auto EAXSOURCE_MINOCCLUSIONDIRECTRATIO
= 0.0F
;
514 constexpr auto EAXSOURCE_MAXOCCLUSIONDIRECTRATIO
= 10.0F
;
515 constexpr auto EAXSOURCE_DEFAULTOCCLUSIONDIRECTRATIO
= 1.0F
;
517 constexpr auto EAXSOURCE_MINEXCLUSION
= -10'000L;
518 constexpr auto EAXSOURCE_MAXEXCLUSION
= 0L;
519 constexpr auto EAXSOURCE_DEFAULTEXCLUSION
= 0L;
521 constexpr auto EAXSOURCE_MINEXCLUSIONLFRATIO
= 0.0F
;
522 constexpr auto EAXSOURCE_MAXEXCLUSIONLFRATIO
= 1.0F
;
523 constexpr auto EAXSOURCE_DEFAULTEXCLUSIONLFRATIO
= 1.0F
;
525 constexpr auto EAXSOURCE_MINOUTSIDEVOLUMEHF
= -10'000L;
526 constexpr auto EAXSOURCE_MAXOUTSIDEVOLUMEHF
= 0L;
527 constexpr auto EAXSOURCE_DEFAULTOUTSIDEVOLUMEHF
= 0L;
529 constexpr auto EAXSOURCE_MINDOPPLERFACTOR
= 0.0F
;
530 constexpr auto EAXSOURCE_MAXDOPPLERFACTOR
= 10.0F
;
531 constexpr auto EAXSOURCE_DEFAULTDOPPLERFACTOR
= 1.0F
;
533 constexpr auto EAXSOURCE_MINROLLOFFFACTOR
= 0.0F
;
534 constexpr auto EAXSOURCE_MAXROLLOFFFACTOR
= 10.0F
;
535 constexpr auto EAXSOURCE_DEFAULTROLLOFFFACTOR
= 0.0F
;
537 constexpr auto EAXSOURCE_MINROOMROLLOFFFACTOR
= 0.0F
;
538 constexpr auto EAXSOURCE_MAXROOMROLLOFFFACTOR
= 10.0F
;
539 constexpr auto EAXSOURCE_DEFAULTROOMROLLOFFFACTOR
= 0.0F
;
541 constexpr auto EAXSOURCE_MINAIRABSORPTIONFACTOR
= 0.0F
;
542 constexpr auto EAXSOURCE_MAXAIRABSORPTIONFACTOR
= 10.0F
;
543 constexpr auto EAXSOURCE_DEFAULTAIRABSORPTIONFACTOR
= 0.0F
;
547 constexpr auto EAXSOURCE_MINMACROFXFACTOR
= 0.0F
;
548 constexpr auto EAXSOURCE_MAXMACROFXFACTOR
= 1.0F
;
549 constexpr auto EAXSOURCE_DEFAULTMACROFXFACTOR
= 1.0F
;
553 constexpr auto EAXSOURCE_MINSPEAKERLEVEL
= -10'000L;
554 constexpr auto EAXSOURCE_MAXSPEAKERLEVEL
= 0L;
555 constexpr auto EAXSOURCE_DEFAULTSPEAKERLEVEL
= -10'000L;
557 constexpr auto EAXSOURCE_DEFAULTFLAGS
=
558 EAXSOURCEFLAGS_DIRECTHFAUTO
|
559 EAXSOURCEFLAGS_ROOMAUTO
|
560 EAXSOURCEFLAGS_ROOMHFAUTO
;
565 EAXSPEAKER_FRONT_LEFT
= 1,
566 EAXSPEAKER_FRONT_CENTER
= 2,
567 EAXSPEAKER_FRONT_RIGHT
= 3,
568 EAXSPEAKER_SIDE_RIGHT
= 4,
569 EAXSPEAKER_REAR_RIGHT
= 5,
570 EAXSPEAKER_REAR_CENTER
= 6,
571 EAXSPEAKER_REAR_LEFT
= 7,
572 EAXSPEAKER_SIDE_LEFT
= 8,
573 EAXSPEAKER_LOW_FREQUENCY
= 9
576 // EAXSOURCEFLAGS_DIRECTHFAUTO, EAXSOURCEFLAGS_ROOMAUTO and EAXSOURCEFLAGS_ROOMHFAUTO are ignored for 2D sources
577 // EAXSOURCEFLAGS_UPMIX is ignored for 3D sources
578 constexpr auto EAX50SOURCE_DEFAULTFLAGS
=
579 EAXSOURCEFLAGS_DIRECTHFAUTO
|
580 EAXSOURCEFLAGS_ROOMAUTO
|
581 EAXSOURCEFLAGS_ROOMHFAUTO
|
582 EAXSOURCEFLAGS_UPMIX
;
584 struct EAX30SOURCEPROPERTIES
586 long lDirect
; // direct path level (at low and mid frequencies)
587 long lDirectHF
; // relative direct path level at high frequencies
588 long lRoom
; // room effect level (at low and mid frequencies)
589 long lRoomHF
; // relative room effect level at high frequencies
590 long lObstruction
; // main obstruction control (attenuation at high frequencies)
591 float flObstructionLFRatio
; // obstruction low-frequency level re. main control
592 long lOcclusion
; // main occlusion control (attenuation at high frequencies)
593 float flOcclusionLFRatio
; // occlusion low-frequency level re. main control
594 float flOcclusionRoomRatio
; // relative occlusion control for room effect
595 float flOcclusionDirectRatio
; // relative occlusion control for direct path
596 long lExclusion
; // main exlusion control (attenuation at high frequencies)
597 float flExclusionLFRatio
; // exclusion low-frequency level re. main control
598 long lOutsideVolumeHF
; // outside sound cone level at high frequencies
599 float flDopplerFactor
; // like DS3D flDopplerFactor but per source
600 float flRolloffFactor
; // like DS3D flRolloffFactor but per source
601 float flRoomRolloffFactor
; // like DS3D flRolloffFactor but for room effect
602 float flAirAbsorptionFactor
; // multiplies EAXREVERB_AIRABSORPTIONHF
603 unsigned long ulFlags
; // modifies the behavior of properties
604 }; // EAX30SOURCEPROPERTIES
606 struct EAX50SOURCEPROPERTIES
:
607 public EAX30SOURCEPROPERTIES
609 float flMacroFXFactor
;
610 }; // EAX50SOURCEPROPERTIES
612 struct EAXSOURCEALLSENDPROPERTIES
614 GUID guidReceivingFXSlotID
;
615 long lSend
; // send level (at low and mid frequencies)
616 long lSendHF
; // relative send level at high frequencies
618 float flOcclusionLFRatio
;
619 float flOcclusionRoomRatio
;
620 float flOcclusionDirectRatio
;
622 float flExclusionLFRatio
;
623 }; // EAXSOURCEALLSENDPROPERTIES
625 struct EAXSOURCE2DPROPERTIES
627 long lDirect
; // direct path level (at low and mid frequencies)
628 long lDirectHF
; // relative direct path level at high frequencies
629 long lRoom
; // room effect level (at low and mid frequencies)
630 long lRoomHF
; // relative room effect level at high frequencies
631 unsigned long ulFlags
; // modifies the behavior of properties
632 }; // EAXSOURCE2DPROPERTIES
634 struct EAXSPEAKERLEVELPROPERTIES
638 }; // EAXSPEAKERLEVELPROPERTIES
640 struct EAX40ACTIVEFXSLOTS
642 GUID guidActiveFXSlots
[EAX40_MAX_ACTIVE_FXSLOTS
];
643 }; // EAX40ACTIVEFXSLOTS
645 struct EAX50ACTIVEFXSLOTS
647 GUID guidActiveFXSlots
[EAX50_MAX_ACTIVE_FXSLOTS
];
648 }; // EAX50ACTIVEFXSLOTS
651 const EAX50ACTIVEFXSLOTS
& lhs
,
652 const EAX50ACTIVEFXSLOTS
& rhs
) noexcept
;
655 const EAX50ACTIVEFXSLOTS
& lhs
,
656 const EAX50ACTIVEFXSLOTS
& rhs
) noexcept
;
658 // Use this structure for EAXSOURCE_OBSTRUCTIONPARAMETERS property.
659 struct EAXOBSTRUCTIONPROPERTIES
662 float flObstructionLFRatio
;
663 }; // EAXOBSTRUCTIONPROPERTIES
665 // Use this structure for EAXSOURCE_OCCLUSIONPARAMETERS property.
666 struct EAXOCCLUSIONPROPERTIES
669 float flOcclusionLFRatio
;
670 float flOcclusionRoomRatio
;
671 float flOcclusionDirectRatio
;
672 }; // EAXOCCLUSIONPROPERTIES
674 // Use this structure for EAXSOURCE_EXCLUSIONPARAMETERS property.
675 struct EAXEXCLUSIONPROPERTIES
678 float flExclusionLFRatio
;
679 }; // EAXEXCLUSIONPROPERTIES
681 // Use this structure for EAXSOURCE_SENDPARAMETERS properties.
682 struct EAXSOURCESENDPROPERTIES
684 GUID guidReceivingFXSlotID
;
687 }; // EAXSOURCESENDPROPERTIES
689 // Use this structure for EAXSOURCE_OCCLUSIONSENDPARAMETERS
690 struct EAXSOURCEOCCLUSIONSENDPROPERTIES
692 GUID guidReceivingFXSlotID
;
694 float flOcclusionLFRatio
;
695 float flOcclusionRoomRatio
;
696 float flOcclusionDirectRatio
;
697 }; // EAXSOURCEOCCLUSIONSENDPROPERTIES
699 // Use this structure for EAXSOURCE_EXCLUSIONSENDPARAMETERS
700 struct EAXSOURCEEXCLUSIONSENDPROPERTIES
702 GUID guidReceivingFXSlotID
;
704 float flExclusionLFRatio
;
705 }; // EAXSOURCEEXCLUSIONSENDPROPERTIES
707 extern const EAX50ACTIVEFXSLOTS EAX40SOURCE_DEFAULTACTIVEFXSLOTID
;
709 extern const EAX50ACTIVEFXSLOTS EAX50SOURCE_3DDEFAULTACTIVEFXSLOTID
;
711 extern const EAX50ACTIVEFXSLOTS EAX50SOURCE_2DDEFAULTACTIVEFXSLOTID
;
716 extern const GUID EAX_REVERB_EFFECT
;
718 // Reverb effect properties
719 enum EAXREVERB_PROPERTY
:
723 EAXREVERB_ALLPARAMETERS
,
724 EAXREVERB_ENVIRONMENT
,
725 EAXREVERB_ENVIRONMENTSIZE
,
726 EAXREVERB_ENVIRONMENTDIFFUSION
,
731 EAXREVERB_DECAYHFRATIO
,
732 EAXREVERB_DECAYLFRATIO
,
733 EAXREVERB_REFLECTIONS
,
734 EAXREVERB_REFLECTIONSDELAY
,
735 EAXREVERB_REFLECTIONSPAN
,
737 EAXREVERB_REVERBDELAY
,
741 EAXREVERB_MODULATIONTIME
,
742 EAXREVERB_MODULATIONDEPTH
,
743 EAXREVERB_AIRABSORPTIONHF
,
744 EAXREVERB_HFREFERENCE
,
745 EAXREVERB_LFREFERENCE
,
746 EAXREVERB_ROOMROLLOFFFACTOR
,
748 }; // EAXREVERB_PROPERTY
750 // used by EAXREVERB_ENVIRONMENT
754 EAX_ENVIRONMENT_GENERIC
,
755 EAX_ENVIRONMENT_PADDEDCELL
,
756 EAX_ENVIRONMENT_ROOM
,
757 EAX_ENVIRONMENT_BATHROOM
,
758 EAX_ENVIRONMENT_LIVINGROOM
,
759 EAX_ENVIRONMENT_STONEROOM
,
760 EAX_ENVIRONMENT_AUDITORIUM
,
761 EAX_ENVIRONMENT_CONCERTHALL
,
762 EAX_ENVIRONMENT_CAVE
,
763 EAX_ENVIRONMENT_ARENA
,
764 EAX_ENVIRONMENT_HANGAR
,
765 EAX_ENVIRONMENT_CARPETEDHALLWAY
,
766 EAX_ENVIRONMENT_HALLWAY
,
767 EAX_ENVIRONMENT_STONECORRIDOR
,
768 EAX_ENVIRONMENT_ALLEY
,
769 EAX_ENVIRONMENT_FOREST
,
770 EAX_ENVIRONMENT_CITY
,
771 EAX_ENVIRONMENT_MOUNTAINS
,
772 EAX_ENVIRONMENT_QUARRY
,
773 EAX_ENVIRONMENT_PLAIN
,
774 EAX_ENVIRONMENT_PARKINGLOT
,
775 EAX_ENVIRONMENT_SEWERPIPE
,
776 EAX_ENVIRONMENT_UNDERWATER
,
777 EAX_ENVIRONMENT_DRUGGED
,
778 EAX_ENVIRONMENT_DIZZY
,
779 EAX_ENVIRONMENT_PSYCHOTIC
,
781 EAX1_ENVIRONMENT_COUNT
,
784 EAX_ENVIRONMENT_UNDEFINED
= EAX1_ENVIRONMENT_COUNT
,
786 EAX3_ENVIRONMENT_COUNT
,
790 // reverberation decay time
791 constexpr auto EAXREVERBFLAGS_DECAYTIMESCALE
= 0x00000001UL
;
794 constexpr auto EAXREVERBFLAGS_REFLECTIONSSCALE
= 0x00000002UL
;
796 // initial reflection delay time
797 constexpr auto EAXREVERBFLAGS_REFLECTIONSDELAYSCALE
= 0x00000004UL
;
800 constexpr auto EAXREVERBFLAGS_REVERBSCALE
= 0x00000008UL
;
802 // late reverberation delay time
803 constexpr auto EAXREVERBFLAGS_REVERBDELAYSCALE
= 0x00000010UL
;
807 constexpr auto EAXREVERBFLAGS_ECHOTIMESCALE
= 0x00000040UL
;
811 constexpr auto EAXREVERBFLAGS_MODULATIONTIMESCALE
= 0x00000080UL
;
813 // This flag limits high-frequency decay time according to air absorption.
814 constexpr auto EAXREVERBFLAGS_DECAYHFLIMIT
= 0x00000020UL
;
816 constexpr auto EAXREVERBFLAGS_RESERVED
= 0xFFFFFF00UL
; // reserved future use
819 struct EAXREVERBPROPERTIES
821 unsigned long ulEnvironment
; // sets all reverb properties
822 float flEnvironmentSize
; // environment size in meters
823 float flEnvironmentDiffusion
; // environment diffusion
824 long lRoom
; // room effect level (at mid frequencies)
825 long lRoomHF
; // relative room effect level at high frequencies
826 long lRoomLF
; // relative room effect level at low frequencies
827 float flDecayTime
; // reverberation decay time at mid frequencies
828 float flDecayHFRatio
; // high-frequency to mid-frequency decay time ratio
829 float flDecayLFRatio
; // low-frequency to mid-frequency decay time ratio
830 long lReflections
; // early reflections level relative to room effect
831 float flReflectionsDelay
; // initial reflection delay time
832 EAXVECTOR vReflectionsPan
; // early reflections panning vector
833 long lReverb
; // late reverberation level relative to room effect
834 float flReverbDelay
; // late reverberation delay time relative to initial reflection
835 EAXVECTOR vReverbPan
; // late reverberation panning vector
836 float flEchoTime
; // echo time
837 float flEchoDepth
; // echo depth
838 float flModulationTime
; // modulation time
839 float flModulationDepth
; // modulation depth
840 float flAirAbsorptionHF
; // change in level per meter at high frequencies
841 float flHFReference
; // reference high frequency
842 float flLFReference
; // reference low frequency
843 float flRoomRolloffFactor
; // like DS3D flRolloffFactor but for room effect
844 unsigned long ulFlags
; // modifies the behavior of properties
845 }; // EAXREVERBPROPERTIES
848 const EAXREVERBPROPERTIES
& lhs
,
849 const EAXREVERBPROPERTIES
& rhs
) noexcept
;
852 const EAXREVERBPROPERTIES
& lhs
,
853 const EAXREVERBPROPERTIES
& rhs
) noexcept
;
856 constexpr auto EAXREVERB_MINENVIRONMENT
= static_cast<unsigned long>(EAX_ENVIRONMENT_GENERIC
);
857 constexpr auto EAX1REVERB_MAXENVIRONMENT
= static_cast<unsigned long>(EAX_ENVIRONMENT_PSYCHOTIC
);
858 constexpr auto EAX30REVERB_MAXENVIRONMENT
= static_cast<unsigned long>(EAX_ENVIRONMENT_UNDEFINED
);
859 constexpr auto EAXREVERB_DEFAULTENVIRONMENT
= static_cast<unsigned long>(EAX_ENVIRONMENT_GENERIC
);
861 constexpr auto EAXREVERB_MINENVIRONMENTSIZE
= 1.0F
;
862 constexpr auto EAXREVERB_MAXENVIRONMENTSIZE
= 100.0F
;
863 constexpr auto EAXREVERB_DEFAULTENVIRONMENTSIZE
= 7.5F
;
865 constexpr auto EAXREVERB_MINENVIRONMENTDIFFUSION
= 0.0F
;
866 constexpr auto EAXREVERB_MAXENVIRONMENTDIFFUSION
= 1.0F
;
867 constexpr auto EAXREVERB_DEFAULTENVIRONMENTDIFFUSION
= 1.0F
;
869 constexpr auto EAXREVERB_MINROOM
= -10'000L;
870 constexpr auto EAXREVERB_MAXROOM
= 0L;
871 constexpr auto EAXREVERB_DEFAULTROOM
= -1'000L;
873 constexpr auto EAXREVERB_MINROOMHF
= -10'000L;
874 constexpr auto EAXREVERB_MAXROOMHF
= 0L;
875 constexpr auto EAXREVERB_DEFAULTROOMHF
= -100L;
877 constexpr auto EAXREVERB_MINROOMLF
= -10'000L;
878 constexpr auto EAXREVERB_MAXROOMLF
= 0L;
879 constexpr auto EAXREVERB_DEFAULTROOMLF
= 0L;
881 constexpr auto EAXREVERB_MINDECAYTIME
= 0.1F
;
882 constexpr auto EAXREVERB_MAXDECAYTIME
= 20.0F
;
883 constexpr auto EAXREVERB_DEFAULTDECAYTIME
= 1.49F
;
885 constexpr auto EAXREVERB_MINDECAYHFRATIO
= 0.1F
;
886 constexpr auto EAXREVERB_MAXDECAYHFRATIO
= 2.0F
;
887 constexpr auto EAXREVERB_DEFAULTDECAYHFRATIO
= 0.83F
;
889 constexpr auto EAXREVERB_MINDECAYLFRATIO
= 0.1F
;
890 constexpr auto EAXREVERB_MAXDECAYLFRATIO
= 2.0F
;
891 constexpr auto EAXREVERB_DEFAULTDECAYLFRATIO
= 1.0F
;
893 constexpr auto EAXREVERB_MINREFLECTIONS
= -10'000L;
894 constexpr auto EAXREVERB_MAXREFLECTIONS
= 1'000L;
895 constexpr auto EAXREVERB_DEFAULTREFLECTIONS
= -2'602L;
897 constexpr auto EAXREVERB_MINREFLECTIONSDELAY
= 0.0F
;
898 constexpr auto EAXREVERB_MAXREFLECTIONSDELAY
= 0.3F
;
899 constexpr auto EAXREVERB_DEFAULTREFLECTIONSDELAY
= 0.007F
;
901 constexpr auto EAXREVERB_DEFAULTREFLECTIONSPAN
= EAXVECTOR
{0.0F
, 0.0F
, 0.0F
};
903 constexpr auto EAXREVERB_MINREVERB
= -10'000L;
904 constexpr auto EAXREVERB_MAXREVERB
= 2'000L;
905 constexpr auto EAXREVERB_DEFAULTREVERB
= 200L;
907 constexpr auto EAXREVERB_MINREVERBDELAY
= 0.0F
;
908 constexpr auto EAXREVERB_MAXREVERBDELAY
= 0.1F
;
909 constexpr auto EAXREVERB_DEFAULTREVERBDELAY
= 0.011F
;
911 constexpr auto EAXREVERB_DEFAULTREVERBPAN
= EAXVECTOR
{0.0F
, 0.0F
, 0.0F
};
913 constexpr auto EAXREVERB_MINECHOTIME
= 0.075F
;
914 constexpr auto EAXREVERB_MAXECHOTIME
= 0.25F
;
915 constexpr auto EAXREVERB_DEFAULTECHOTIME
= 0.25F
;
917 constexpr auto EAXREVERB_MINECHODEPTH
= 0.0F
;
918 constexpr auto EAXREVERB_MAXECHODEPTH
= 1.0F
;
919 constexpr auto EAXREVERB_DEFAULTECHODEPTH
= 0.0F
;
921 constexpr auto EAXREVERB_MINMODULATIONTIME
= 0.04F
;
922 constexpr auto EAXREVERB_MAXMODULATIONTIME
= 4.0F
;
923 constexpr auto EAXREVERB_DEFAULTMODULATIONTIME
= 0.25F
;
925 constexpr auto EAXREVERB_MINMODULATIONDEPTH
= 0.0F
;
926 constexpr auto EAXREVERB_MAXMODULATIONDEPTH
= 1.0F
;
927 constexpr auto EAXREVERB_DEFAULTMODULATIONDEPTH
= 0.0F
;
929 constexpr auto EAXREVERB_MINAIRABSORPTIONHF
= -100.0F
;
930 constexpr auto EAXREVERB_MAXAIRABSORPTIONHF
= 0.0F
;
931 constexpr auto EAXREVERB_DEFAULTAIRABSORPTIONHF
= -5.0F
;
933 constexpr auto EAXREVERB_MINHFREFERENCE
= 1'000.0F
;
934 constexpr auto EAXREVERB_MAXHFREFERENCE
= 20'000.0F
;
935 constexpr auto EAXREVERB_DEFAULTHFREFERENCE
= 5'000.0F
;
937 constexpr auto EAXREVERB_MINLFREFERENCE
= 20.0F
;
938 constexpr auto EAXREVERB_MAXLFREFERENCE
= 1'000.0F
;
939 constexpr auto EAXREVERB_DEFAULTLFREFERENCE
= 250.0F
;
941 constexpr auto EAXREVERB_MINROOMROLLOFFFACTOR
= 0.0F
;
942 constexpr auto EAXREVERB_MAXROOMROLLOFFFACTOR
= 10.0F
;
943 constexpr auto EAXREVERB_DEFAULTROOMROLLOFFFACTOR
= 0.0F
;
945 constexpr auto EAX1REVERB_MINVOLUME
= 0.0F
;
946 constexpr auto EAX1REVERB_MAXVOLUME
= 1.0F
;
948 constexpr auto EAX1REVERB_MINDAMPING
= 0.0F
;
949 constexpr auto EAX1REVERB_MAXDAMPING
= 2.0F
;
951 constexpr auto EAXREVERB_DEFAULTFLAGS
=
952 EAXREVERBFLAGS_DECAYTIMESCALE
|
953 EAXREVERBFLAGS_REFLECTIONSSCALE
|
954 EAXREVERBFLAGS_REFLECTIONSDELAYSCALE
|
955 EAXREVERBFLAGS_REVERBSCALE
|
956 EAXREVERBFLAGS_REVERBDELAYSCALE
|
957 EAXREVERBFLAGS_DECAYHFLIMIT
;
960 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_GENERIC
;
961 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_PADDEDCELL
;
962 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_ROOM
;
963 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_BATHROOM
;
964 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_LIVINGROOM
;
965 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_STONEROOM
;
966 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_AUDITORIUM
;
967 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_CONCERTHALL
;
968 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_CAVE
;
969 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_ARENA
;
970 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_HANGAR
;
971 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_CARPETTEDHALLWAY
;
972 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_HALLWAY
;
973 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_STONECORRIDOR
;
974 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_ALLEY
;
975 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_FOREST
;
976 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_CITY
;
977 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_MOUNTAINS
;
978 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_QUARRY
;
979 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_PLAIN
;
980 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_PARKINGLOT
;
981 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_SEWERPIPE
;
982 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_UNDERWATER
;
983 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_DRUGGED
;
984 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_DIZZY
;
985 extern const EAXREVERBPROPERTIES EAXREVERB_PRESET_PSYCHOTIC
;
987 using EaxReverbPresets
= std::array
<EAXREVERBPROPERTIES
, EAX1_ENVIRONMENT_COUNT
>;
988 extern const EaxReverbPresets EAXREVERB_PRESETS
;
991 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_GENERIC
;
992 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_PADDEDCELL
;
993 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_ROOM
;
994 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_BATHROOM
;
995 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_LIVINGROOM
;
996 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_STONEROOM
;
997 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_AUDITORIUM
;
998 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_CONCERTHAL
;
999 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_CAVE
;
1000 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_ARENA
;
1001 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_HANGAR
;
1002 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_CARPETTEDHALLWAY
;
1003 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_HALLWAY
;
1004 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_STONECORRIDOR
;
1005 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_ALLEY
;
1006 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_FOREST
;
1007 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_CITY
;
1008 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_MOUNTAINS
;
1009 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_QUARRY
;
1010 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_PLAIN
;
1011 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_PARKINGLOT
;
1012 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_SEWERPIPE
;
1013 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_UNDERWATER
;
1014 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_DRUGGED
;
1015 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_DIZZY
;
1016 extern const EAX_REVERBPROPERTIES EAX1REVERB_PRESET_PSYCHOTIC
;
1018 using Eax1ReverbPresets
= std::array
<EAX_REVERBPROPERTIES
, EAX1_ENVIRONMENT_COUNT
>;
1019 extern const Eax1ReverbPresets EAX1REVERB_PRESETS
;
1022 // AGC Compressor Effect
1024 extern const GUID EAX_AGCCOMPRESSOR_EFFECT
;
1026 enum EAXAGCCOMPRESSOR_PROPERTY
:
1029 EAXAGCCOMPRESSOR_NONE
,
1030 EAXAGCCOMPRESSOR_ALLPARAMETERS
,
1031 EAXAGCCOMPRESSOR_ONOFF
,
1032 }; // EAXAGCCOMPRESSOR_PROPERTY
1034 struct EAXAGCCOMPRESSORPROPERTIES
1036 unsigned long ulOnOff
; // Switch Compressor on or off
1037 }; // EAXAGCCOMPRESSORPROPERTIES
1040 constexpr auto EAXAGCCOMPRESSOR_MINONOFF
= 0UL;
1041 constexpr auto EAXAGCCOMPRESSOR_MAXONOFF
= 1UL;
1042 constexpr auto EAXAGCCOMPRESSOR_DEFAULTONOFF
= EAXAGCCOMPRESSOR_MAXONOFF
;
1047 extern const GUID EAX_AUTOWAH_EFFECT
;
1049 enum EAXAUTOWAH_PROPERTY
:
1053 EAXAUTOWAH_ALLPARAMETERS
,
1054 EAXAUTOWAH_ATTACKTIME
,
1055 EAXAUTOWAH_RELEASETIME
,
1056 EAXAUTOWAH_RESONANCE
,
1057 EAXAUTOWAH_PEAKLEVEL
,
1058 }; // EAXAUTOWAH_PROPERTY
1060 struct EAXAUTOWAHPROPERTIES
1062 float flAttackTime
; // Attack time (seconds)
1063 float flReleaseTime
; // Release time (seconds)
1064 long lResonance
; // Resonance (mB)
1065 long lPeakLevel
; // Peak level (mB)
1066 }; // EAXAUTOWAHPROPERTIES
1069 constexpr auto EAXAUTOWAH_MINATTACKTIME
= 0.0001F
;
1070 constexpr auto EAXAUTOWAH_MAXATTACKTIME
= 1.0F
;
1071 constexpr auto EAXAUTOWAH_DEFAULTATTACKTIME
= 0.06F
;
1073 constexpr auto EAXAUTOWAH_MINRELEASETIME
= 0.0001F
;
1074 constexpr auto EAXAUTOWAH_MAXRELEASETIME
= 1.0F
;
1075 constexpr auto EAXAUTOWAH_DEFAULTRELEASETIME
= 0.06F
;
1077 constexpr auto EAXAUTOWAH_MINRESONANCE
= 600L;
1078 constexpr auto EAXAUTOWAH_MAXRESONANCE
= 6000L;
1079 constexpr auto EAXAUTOWAH_DEFAULTRESONANCE
= 6000L;
1081 constexpr auto EAXAUTOWAH_MINPEAKLEVEL
= -9000L;
1082 constexpr auto EAXAUTOWAH_MAXPEAKLEVEL
= 9000L;
1083 constexpr auto EAXAUTOWAH_DEFAULTPEAKLEVEL
= 2100L;
1088 extern const GUID EAX_CHORUS_EFFECT
;
1091 enum EAXCHORUS_PROPERTY
:
1095 EAXCHORUS_ALLPARAMETERS
,
1102 }; // EAXCHORUS_PROPERTY
1107 EAX_CHORUS_SINUSOID
,
1108 EAX_CHORUS_TRIANGLE
,
1111 struct EAXCHORUSPROPERTIES
1113 unsigned long ulWaveform
; // Waveform selector - see enum above
1114 long lPhase
; // Phase (Degrees)
1115 float flRate
; // Rate (Hz)
1116 float flDepth
; // Depth (0 to 1)
1117 float flFeedback
; // Feedback (-1 to 1)
1118 float flDelay
; // Delay (seconds)
1119 }; // EAXCHORUSPROPERTIES
1122 constexpr auto EAXCHORUS_MINWAVEFORM
= 0UL;
1123 constexpr auto EAXCHORUS_MAXWAVEFORM
= 1UL;
1124 constexpr auto EAXCHORUS_DEFAULTWAVEFORM
= 1UL;
1126 constexpr auto EAXCHORUS_MINPHASE
= -180L;
1127 constexpr auto EAXCHORUS_MAXPHASE
= 180L;
1128 constexpr auto EAXCHORUS_DEFAULTPHASE
= 90L;
1130 constexpr auto EAXCHORUS_MINRATE
= 0.0F
;
1131 constexpr auto EAXCHORUS_MAXRATE
= 10.0F
;
1132 constexpr auto EAXCHORUS_DEFAULTRATE
= 1.1F
;
1134 constexpr auto EAXCHORUS_MINDEPTH
= 0.0F
;
1135 constexpr auto EAXCHORUS_MAXDEPTH
= 1.0F
;
1136 constexpr auto EAXCHORUS_DEFAULTDEPTH
= 0.1F
;
1138 constexpr auto EAXCHORUS_MINFEEDBACK
= -1.0F
;
1139 constexpr auto EAXCHORUS_MAXFEEDBACK
= 1.0F
;
1140 constexpr auto EAXCHORUS_DEFAULTFEEDBACK
= 0.25F
;
1142 constexpr auto EAXCHORUS_MINDELAY
= 0.0002F
;
1143 constexpr auto EAXCHORUS_MAXDELAY
= 0.016F
;
1144 constexpr auto EAXCHORUS_DEFAULTDELAY
= 0.016F
;
1147 // Distortion Effect
1149 extern const GUID EAX_DISTORTION_EFFECT
;
1151 enum EAXDISTORTION_PROPERTY
:
1155 EAXDISTORTION_ALLPARAMETERS
,
1158 EAXDISTORTION_LOWPASSCUTOFF
,
1159 EAXDISTORTION_EQCENTER
,
1160 EAXDISTORTION_EQBANDWIDTH
,
1161 }; // EAXDISTORTION_PROPERTY
1164 struct EAXDISTORTIONPROPERTIES
1166 float flEdge
; // Controls the shape of the distortion (0 to 1)
1167 long lGain
; // Controls the post distortion gain (mB)
1168 float flLowPassCutOff
; // Controls the cut-off of the filter pre-distortion (Hz)
1169 float flEQCenter
; // Controls the center frequency of the EQ post-distortion (Hz)
1170 float flEQBandwidth
; // Controls the bandwidth of the EQ post-distortion (Hz)
1171 }; // EAXDISTORTIONPROPERTIES
1174 constexpr auto EAXDISTORTION_MINEDGE
= 0.0F
;
1175 constexpr auto EAXDISTORTION_MAXEDGE
= 1.0F
;
1176 constexpr auto EAXDISTORTION_DEFAULTEDGE
= 0.2F
;
1178 constexpr auto EAXDISTORTION_MINGAIN
= -6000L;
1179 constexpr auto EAXDISTORTION_MAXGAIN
= 0L;
1180 constexpr auto EAXDISTORTION_DEFAULTGAIN
= -2600L;
1182 constexpr auto EAXDISTORTION_MINLOWPASSCUTOFF
= 80.0F
;
1183 constexpr auto EAXDISTORTION_MAXLOWPASSCUTOFF
= 24000.0F
;
1184 constexpr auto EAXDISTORTION_DEFAULTLOWPASSCUTOFF
= 8000.0F
;
1186 constexpr auto EAXDISTORTION_MINEQCENTER
= 80.0F
;
1187 constexpr auto EAXDISTORTION_MAXEQCENTER
= 24000.0F
;
1188 constexpr auto EAXDISTORTION_DEFAULTEQCENTER
= 3600.0F
;
1190 constexpr auto EAXDISTORTION_MINEQBANDWIDTH
= 80.0F
;
1191 constexpr auto EAXDISTORTION_MAXEQBANDWIDTH
= 24000.0F
;
1192 constexpr auto EAXDISTORTION_DEFAULTEQBANDWIDTH
= 3600.0F
;
1197 extern const GUID EAX_ECHO_EFFECT
;
1200 enum EAXECHO_PROPERTY
:
1204 EAXECHO_ALLPARAMETERS
,
1210 }; // EAXECHO_PROPERTY
1213 struct EAXECHOPROPERTIES
1215 float flDelay
; // Controls the initial delay time (seconds)
1216 float flLRDelay
; // Controls the delay time between the first and second taps (seconds)
1217 float flDamping
; // Controls a low-pass filter that dampens the echoes (0 to 1)
1218 float flFeedback
; // Controls the duration of echo repetition (0 to 1)
1219 float flSpread
; // Controls the left-right spread of the echoes
1220 }; // EAXECHOPROPERTIES
1223 constexpr auto EAXECHO_MINDAMPING
= 0.0F
;
1224 constexpr auto EAXECHO_MAXDAMPING
= 0.99F
;
1225 constexpr auto EAXECHO_DEFAULTDAMPING
= 0.5F
;
1227 constexpr auto EAXECHO_MINDELAY
= 0.002F
;
1228 constexpr auto EAXECHO_MAXDELAY
= 0.207F
;
1229 constexpr auto EAXECHO_DEFAULTDELAY
= 0.1F
;
1231 constexpr auto EAXECHO_MINLRDELAY
= 0.0F
;
1232 constexpr auto EAXECHO_MAXLRDELAY
= 0.404F
;
1233 constexpr auto EAXECHO_DEFAULTLRDELAY
= 0.1F
;
1235 constexpr auto EAXECHO_MINFEEDBACK
= 0.0F
;
1236 constexpr auto EAXECHO_MAXFEEDBACK
= 1.0F
;
1237 constexpr auto EAXECHO_DEFAULTFEEDBACK
= 0.5F
;
1239 constexpr auto EAXECHO_MINSPREAD
= -1.0F
;
1240 constexpr auto EAXECHO_MAXSPREAD
= 1.0F
;
1241 constexpr auto EAXECHO_DEFAULTSPREAD
= -1.0F
;
1246 extern const GUID EAX_EQUALIZER_EFFECT
;
1249 enum EAXEQUALIZER_PROPERTY
:
1253 EAXEQUALIZER_ALLPARAMETERS
,
1254 EAXEQUALIZER_LOWGAIN
,
1255 EAXEQUALIZER_LOWCUTOFF
,
1256 EAXEQUALIZER_MID1GAIN
,
1257 EAXEQUALIZER_MID1CENTER
,
1258 EAXEQUALIZER_MID1WIDTH
,
1259 EAXEQUALIZER_MID2GAIN
,
1260 EAXEQUALIZER_MID2CENTER
,
1261 EAXEQUALIZER_MID2WIDTH
,
1262 EAXEQUALIZER_HIGHGAIN
,
1263 EAXEQUALIZER_HIGHCUTOFF
,
1264 }; // EAXEQUALIZER_PROPERTY
1267 struct EAXEQUALIZERPROPERTIES
1269 long lLowGain
; // (mB)
1270 float flLowCutOff
; // (Hz)
1271 long lMid1Gain
; // (mB)
1272 float flMid1Center
; // (Hz)
1273 float flMid1Width
; // (octaves)
1274 long lMid2Gain
; // (mB)
1275 float flMid2Center
; // (Hz)
1276 float flMid2Width
; // (octaves)
1277 long lHighGain
; // (mB)
1278 float flHighCutOff
; // (Hz)
1279 }; // EAXEQUALIZERPROPERTIES
1282 constexpr auto EAXEQUALIZER_MINLOWGAIN
= -1800L;
1283 constexpr auto EAXEQUALIZER_MAXLOWGAIN
= 1800L;
1284 constexpr auto EAXEQUALIZER_DEFAULTLOWGAIN
= 0L;
1286 constexpr auto EAXEQUALIZER_MINLOWCUTOFF
= 50.0F
;
1287 constexpr auto EAXEQUALIZER_MAXLOWCUTOFF
= 800.0F
;
1288 constexpr auto EAXEQUALIZER_DEFAULTLOWCUTOFF
= 200.0F
;
1290 constexpr auto EAXEQUALIZER_MINMID1GAIN
= -1800L;
1291 constexpr auto EAXEQUALIZER_MAXMID1GAIN
= 1800L;
1292 constexpr auto EAXEQUALIZER_DEFAULTMID1GAIN
= 0L;
1294 constexpr auto EAXEQUALIZER_MINMID1CENTER
= 200.0F
;
1295 constexpr auto EAXEQUALIZER_MAXMID1CENTER
= 3000.0F
;
1296 constexpr auto EAXEQUALIZER_DEFAULTMID1CENTER
= 500.0F
;
1298 constexpr auto EAXEQUALIZER_MINMID1WIDTH
= 0.01F
;
1299 constexpr auto EAXEQUALIZER_MAXMID1WIDTH
= 1.0F
;
1300 constexpr auto EAXEQUALIZER_DEFAULTMID1WIDTH
= 1.0F
;
1302 constexpr auto EAXEQUALIZER_MINMID2GAIN
= -1800L;
1303 constexpr auto EAXEQUALIZER_MAXMID2GAIN
= 1800L;
1304 constexpr auto EAXEQUALIZER_DEFAULTMID2GAIN
= 0L;
1306 constexpr auto EAXEQUALIZER_MINMID2CENTER
= 1000.0F
;
1307 constexpr auto EAXEQUALIZER_MAXMID2CENTER
= 8000.0F
;
1308 constexpr auto EAXEQUALIZER_DEFAULTMID2CENTER
= 3000.0F
;
1310 constexpr auto EAXEQUALIZER_MINMID2WIDTH
= 0.01F
;
1311 constexpr auto EAXEQUALIZER_MAXMID2WIDTH
= 1.0F
;
1312 constexpr auto EAXEQUALIZER_DEFAULTMID2WIDTH
= 1.0F
;
1314 constexpr auto EAXEQUALIZER_MINHIGHGAIN
= -1800L;
1315 constexpr auto EAXEQUALIZER_MAXHIGHGAIN
= 1800L;
1316 constexpr auto EAXEQUALIZER_DEFAULTHIGHGAIN
= 0L;
1318 constexpr auto EAXEQUALIZER_MINHIGHCUTOFF
= 4000.0F
;
1319 constexpr auto EAXEQUALIZER_MAXHIGHCUTOFF
= 16000.0F
;
1320 constexpr auto EAXEQUALIZER_DEFAULTHIGHCUTOFF
= 6000.0F
;
1325 extern const GUID EAX_FLANGER_EFFECT
;
1327 enum EAXFLANGER_PROPERTY
:
1331 EAXFLANGER_ALLPARAMETERS
,
1332 EAXFLANGER_WAVEFORM
,
1336 EAXFLANGER_FEEDBACK
,
1338 }; // EAXFLANGER_PROPERTY
1343 EAX_FLANGER_SINUSOID
,
1344 EAX_FLANGER_TRIANGLE
,
1347 struct EAXFLANGERPROPERTIES
1349 unsigned long ulWaveform
; // Waveform selector - see enum above
1350 long lPhase
; // Phase (Degrees)
1351 float flRate
; // Rate (Hz)
1352 float flDepth
; // Depth (0 to 1)
1353 float flFeedback
; // Feedback (0 to 1)
1354 float flDelay
; // Delay (seconds)
1355 }; // EAXFLANGERPROPERTIES
1358 constexpr auto EAXFLANGER_MINWAVEFORM
= 0UL;
1359 constexpr auto EAXFLANGER_MAXWAVEFORM
= 1UL;
1360 constexpr auto EAXFLANGER_DEFAULTWAVEFORM
= 1UL;
1362 constexpr auto EAXFLANGER_MINPHASE
= -180L;
1363 constexpr auto EAXFLANGER_MAXPHASE
= 180L;
1364 constexpr auto EAXFLANGER_DEFAULTPHASE
= 0L;
1366 constexpr auto EAXFLANGER_MINRATE
= 0.0F
;
1367 constexpr auto EAXFLANGER_MAXRATE
= 10.0F
;
1368 constexpr auto EAXFLANGER_DEFAULTRATE
= 0.27F
;
1370 constexpr auto EAXFLANGER_MINDEPTH
= 0.0F
;
1371 constexpr auto EAXFLANGER_MAXDEPTH
= 1.0F
;
1372 constexpr auto EAXFLANGER_DEFAULTDEPTH
= 1.0F
;
1374 constexpr auto EAXFLANGER_MINFEEDBACK
= -1.0F
;
1375 constexpr auto EAXFLANGER_MAXFEEDBACK
= 1.0F
;
1376 constexpr auto EAXFLANGER_DEFAULTFEEDBACK
= -0.5F
;
1378 constexpr auto EAXFLANGER_MINDELAY
= 0.0002F
;
1379 constexpr auto EAXFLANGER_MAXDELAY
= 0.004F
;
1380 constexpr auto EAXFLANGER_DEFAULTDELAY
= 0.002F
;
1383 // Frequency Shifter Effect
1385 extern const GUID EAX_FREQUENCYSHIFTER_EFFECT
;
1387 enum EAXFREQUENCYSHIFTER_PROPERTY
:
1390 EAXFREQUENCYSHIFTER_NONE
,
1391 EAXFREQUENCYSHIFTER_ALLPARAMETERS
,
1392 EAXFREQUENCYSHIFTER_FREQUENCY
,
1393 EAXFREQUENCYSHIFTER_LEFTDIRECTION
,
1394 EAXFREQUENCYSHIFTER_RIGHTDIRECTION
,
1395 }; // EAXFREQUENCYSHIFTER_PROPERTY
1400 EAX_FREQUENCYSHIFTER_DOWN
,
1401 EAX_FREQUENCYSHIFTER_UP
,
1402 EAX_FREQUENCYSHIFTER_OFF
1405 struct EAXFREQUENCYSHIFTERPROPERTIES
1407 float flFrequency
; // (Hz)
1408 unsigned long ulLeftDirection
; // see enum above
1409 unsigned long ulRightDirection
; // see enum above
1410 }; // EAXFREQUENCYSHIFTERPROPERTIES
1413 constexpr auto EAXFREQUENCYSHIFTER_MINFREQUENCY
= 0.0F
;
1414 constexpr auto EAXFREQUENCYSHIFTER_MAXFREQUENCY
= 24000.0F
;
1415 constexpr auto EAXFREQUENCYSHIFTER_DEFAULTFREQUENCY
= EAXFREQUENCYSHIFTER_MINFREQUENCY
;
1417 constexpr auto EAXFREQUENCYSHIFTER_MINLEFTDIRECTION
= 0UL;
1418 constexpr auto EAXFREQUENCYSHIFTER_MAXLEFTDIRECTION
= 2UL;
1419 constexpr auto EAXFREQUENCYSHIFTER_DEFAULTLEFTDIRECTION
= EAXFREQUENCYSHIFTER_MINLEFTDIRECTION
;
1421 constexpr auto EAXFREQUENCYSHIFTER_MINRIGHTDIRECTION
= 0UL;
1422 constexpr auto EAXFREQUENCYSHIFTER_MAXRIGHTDIRECTION
= 2UL;
1423 constexpr auto EAXFREQUENCYSHIFTER_DEFAULTRIGHTDIRECTION
= EAXFREQUENCYSHIFTER_MINRIGHTDIRECTION
;
1426 // Vocal Morpher Effect
1428 extern const GUID EAX_VOCALMORPHER_EFFECT
;
1430 enum EAXVOCALMORPHER_PROPERTY
:
1433 EAXVOCALMORPHER_NONE
,
1434 EAXVOCALMORPHER_ALLPARAMETERS
,
1435 EAXVOCALMORPHER_PHONEMEA
,
1436 EAXVOCALMORPHER_PHONEMEACOARSETUNING
,
1437 EAXVOCALMORPHER_PHONEMEB
,
1438 EAXVOCALMORPHER_PHONEMEBCOARSETUNING
,
1439 EAXVOCALMORPHER_WAVEFORM
,
1440 EAXVOCALMORPHER_RATE
,
1441 }; // EAXVOCALMORPHER_PROPERTY
1481 EAX_VOCALMORPHER_SINUSOID
,
1482 EAX_VOCALMORPHER_TRIANGLE
,
1483 EAX_VOCALMORPHER_SAWTOOTH
1486 // Use this structure for EAXVOCALMORPHER_ALLPARAMETERS
1487 struct EAXVOCALMORPHERPROPERTIES
1489 unsigned long ulPhonemeA
; // see enum above
1490 long lPhonemeACoarseTuning
; // (semitones)
1491 unsigned long ulPhonemeB
; // see enum above
1492 long lPhonemeBCoarseTuning
; // (semitones)
1493 unsigned long ulWaveform
; // Waveform selector - see enum above
1494 float flRate
; // (Hz)
1495 }; // EAXVOCALMORPHERPROPERTIES
1498 constexpr auto EAXVOCALMORPHER_MINPHONEMEA
= 0UL;
1499 constexpr auto EAXVOCALMORPHER_MAXPHONEMEA
= 29UL;
1500 constexpr auto EAXVOCALMORPHER_DEFAULTPHONEMEA
= EAXVOCALMORPHER_MINPHONEMEA
;
1502 constexpr auto EAXVOCALMORPHER_MINPHONEMEACOARSETUNING
= -24L;
1503 constexpr auto EAXVOCALMORPHER_MAXPHONEMEACOARSETUNING
= 24L;
1504 constexpr auto EAXVOCALMORPHER_DEFAULTPHONEMEACOARSETUNING
= 0L;
1506 constexpr auto EAXVOCALMORPHER_MINPHONEMEB
= 0UL;
1507 constexpr auto EAXVOCALMORPHER_MAXPHONEMEB
= 29UL;
1508 constexpr auto EAXVOCALMORPHER_DEFAULTPHONEMEB
= 10UL;
1510 constexpr auto EAXVOCALMORPHER_MINPHONEMEBCOARSETUNING
= -24L;
1511 constexpr auto EAXVOCALMORPHER_MAXPHONEMEBCOARSETUNING
= 24L;
1512 constexpr auto EAXVOCALMORPHER_DEFAULTPHONEMEBCOARSETUNING
= 0L;
1514 constexpr auto EAXVOCALMORPHER_MINWAVEFORM
= 0UL;
1515 constexpr auto EAXVOCALMORPHER_MAXWAVEFORM
= 2UL;
1516 constexpr auto EAXVOCALMORPHER_DEFAULTWAVEFORM
= EAXVOCALMORPHER_MINWAVEFORM
;
1518 constexpr auto EAXVOCALMORPHER_MINRATE
= 0.0F
;
1519 constexpr auto EAXVOCALMORPHER_MAXRATE
= 10.0F
;
1520 constexpr auto EAXVOCALMORPHER_DEFAULTRATE
= 1.41F
;
1523 // Pitch Shifter Effect
1525 extern const GUID EAX_PITCHSHIFTER_EFFECT
;
1527 enum EAXPITCHSHIFTER_PROPERTY
:
1530 EAXPITCHSHIFTER_NONE
,
1531 EAXPITCHSHIFTER_ALLPARAMETERS
,
1532 EAXPITCHSHIFTER_COARSETUNE
,
1533 EAXPITCHSHIFTER_FINETUNE
,
1534 }; // EAXPITCHSHIFTER_PROPERTY
1536 struct EAXPITCHSHIFTERPROPERTIES
1538 long lCoarseTune
; // Amount of pitch shift (semitones)
1539 long lFineTune
; // Amount of pitch shift (cents)
1540 }; // EAXPITCHSHIFTERPROPERTIES
1543 constexpr auto EAXPITCHSHIFTER_MINCOARSETUNE
= -12L;
1544 constexpr auto EAXPITCHSHIFTER_MAXCOARSETUNE
= 12L;
1545 constexpr auto EAXPITCHSHIFTER_DEFAULTCOARSETUNE
= 12L;
1547 constexpr auto EAXPITCHSHIFTER_MINFINETUNE
= -50L;
1548 constexpr auto EAXPITCHSHIFTER_MAXFINETUNE
= 50L;
1549 constexpr auto EAXPITCHSHIFTER_DEFAULTFINETUNE
= 0L;
1552 // Ring Modulator Effect
1554 extern const GUID EAX_RINGMODULATOR_EFFECT
;
1556 enum EAXRINGMODULATOR_PROPERTY
:
1559 EAXRINGMODULATOR_NONE
,
1560 EAXRINGMODULATOR_ALLPARAMETERS
,
1561 EAXRINGMODULATOR_FREQUENCY
,
1562 EAXRINGMODULATOR_HIGHPASSCUTOFF
,
1563 EAXRINGMODULATOR_WAVEFORM
,
1564 }; // EAXRINGMODULATOR_PROPERTY
1569 EAX_RINGMODULATOR_SINUSOID
,
1570 EAX_RINGMODULATOR_SAWTOOTH
,
1571 EAX_RINGMODULATOR_SQUARE
,
1574 // Use this structure for EAXRINGMODULATOR_ALLPARAMETERS
1575 struct EAXRINGMODULATORPROPERTIES
1577 float flFrequency
; // Frequency of modulation (Hz)
1578 float flHighPassCutOff
; // Cut-off frequency of high-pass filter (Hz)
1579 unsigned long ulWaveform
; // Waveform selector - see enum above
1580 }; // EAXRINGMODULATORPROPERTIES
1583 constexpr auto EAXRINGMODULATOR_MINFREQUENCY
= 0.0F
;
1584 constexpr auto EAXRINGMODULATOR_MAXFREQUENCY
= 8000.0F
;
1585 constexpr auto EAXRINGMODULATOR_DEFAULTFREQUENCY
= 440.0F
;
1587 constexpr auto EAXRINGMODULATOR_MINHIGHPASSCUTOFF
= 0.0F
;
1588 constexpr auto EAXRINGMODULATOR_MAXHIGHPASSCUTOFF
= 24000.0F
;
1589 constexpr auto EAXRINGMODULATOR_DEFAULTHIGHPASSCUTOFF
= 800.0F
;
1591 constexpr auto EAXRINGMODULATOR_MINWAVEFORM
= 0UL;
1592 constexpr auto EAXRINGMODULATOR_MAXWAVEFORM
= 2UL;
1593 constexpr auto EAXRINGMODULATOR_DEFAULTWAVEFORM
= EAXRINGMODULATOR_MINWAVEFORM
;
1596 using LPEAXSET
= ALenum(AL_APIENTRY
*)(
1597 const GUID
* property_set_id
,
1599 ALuint property_source_id
,
1600 ALvoid
* property_buffer
,
1601 ALuint property_size
);
1603 using LPEAXGET
= ALenum(AL_APIENTRY
*)(
1604 const GUID
* property_set_id
,
1606 ALuint property_source_id
,
1607 ALvoid
* property_buffer
,
1608 ALuint property_size
);
1611 #endif // !EAX_API_INCLUDED