Reject older versions of PipeWire than built against
[openal-soft.git] / al / eax_api.cpp
blob6b1f7fcf660e13864eb2be7d787f58610f71f5af
1 //
2 // EAX API.
3 //
4 // Based on headers `eax[2-5].h` included in Doom 3 source code:
5 // https://github.com/id-Software/DOOM-3/tree/master/neo/openal/include
6 //
8 #include "config.h"
10 #include <algorithm>
12 #include "al/eax_api.h"
15 const GUID DSPROPSETID_EAX_ReverbProperties =
17 0x4A4E6FC1,
18 0xC341,
19 0x11D1,
20 {0xB7, 0x3A, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}
23 const GUID DSPROPSETID_EAXBUFFER_ReverbProperties =
25 0x4A4E6FC0,
26 0xC341,
27 0x11D1,
28 {0xB7, 0x3A, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}
31 const GUID DSPROPSETID_EAX20_ListenerProperties =
33 0x306A6A8,
34 0xB224,
35 0x11D2,
36 {0x99, 0xE5, 0x00, 0x00, 0xE8, 0xD8, 0xC7, 0x22}
39 const GUID DSPROPSETID_EAX20_BufferProperties =
41 0x306A6A7,
42 0xB224,
43 0x11D2,
44 {0x99, 0xE5, 0x00, 0x00, 0xE8, 0xD8, 0xC7, 0x22}
47 const GUID DSPROPSETID_EAX30_ListenerProperties =
49 0xA8FA6882,
50 0xB476,
51 0x11D3,
52 {0xBD, 0xB9, 0x00, 0xC0, 0xF0, 0x2D, 0xDF, 0x87}
55 const GUID DSPROPSETID_EAX30_BufferProperties =
57 0xA8FA6881,
58 0xB476,
59 0x11D3,
60 {0xBD, 0xB9, 0x00, 0xC0, 0xF0, 0x2D, 0xDF, 0x87}
63 const GUID EAX_NULL_GUID =
65 0x00000000,
66 0x0000,
67 0x0000,
68 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
71 const GUID EAX_PrimaryFXSlotID =
73 0xF317866D,
74 0x924C,
75 0x450C,
76 {0x86, 0x1B, 0xE6, 0xDA, 0xA2, 0x5E, 0x7C, 0x20}
79 const GUID EAXPROPERTYID_EAX40_Context =
81 0x1D4870AD,
82 0xDEF,
83 0x43C0,
84 {0xA4, 0xC, 0x52, 0x36, 0x32, 0x29, 0x63, 0x42}
87 const GUID EAXPROPERTYID_EAX50_Context =
89 0x57E13437,
90 0xB932,
91 0x4AB2,
92 {0xB8, 0xBD, 0x52, 0x66, 0xC1, 0xA8, 0x87, 0xEE}
95 const GUID EAXPROPERTYID_EAX40_FXSlot0 =
97 0xC4D79F1E,
98 0xF1AC,
99 0x436B,
100 {0xA8, 0x1D, 0xA7, 0x38, 0xE7, 0x04, 0x54, 0x69}
103 const GUID EAXPROPERTYID_EAX50_FXSlot0 =
105 0x91F9590F,
106 0xC388,
107 0x407A,
108 {0x84, 0xB0, 0x1B, 0xAE, 0xE, 0xF7, 0x1A, 0xBC}
111 const GUID EAXPROPERTYID_EAX40_FXSlot1 =
113 0x8C00E96,
114 0x74BE,
115 0x4491,
116 {0x93, 0xAA, 0xE8, 0xAD, 0x35, 0xA4, 0x91, 0x17}
119 const GUID EAXPROPERTYID_EAX50_FXSlot1 =
121 0x8F5F7ACA,
122 0x9608,
123 0x4965,
124 {0x81, 0x37, 0x82, 0x13, 0xC7, 0xB9, 0xD9, 0xDE}
127 const GUID EAXPROPERTYID_EAX40_FXSlot2 =
129 0x1D433B88,
130 0xF0F6,
131 0x4637,
132 {0x91, 0x9F, 0x60, 0xE7, 0xE0, 0x6B, 0x5E, 0xDD}
135 const GUID EAXPROPERTYID_EAX50_FXSlot2 =
137 0x3C0F5252,
138 0x9834,
139 0x46F0,
140 {0xA1, 0xD8, 0x5B, 0x95, 0xC4, 0xA0, 0xA, 0x30}
143 const GUID EAXPROPERTYID_EAX40_FXSlot3 =
145 0xEFFF08EA,
146 0xC7D8,
147 0x44AB,
148 {0x93, 0xAD, 0x6D, 0xBD, 0x5F, 0x91, 0x00, 0x64}
151 const GUID EAXPROPERTYID_EAX50_FXSlot3 =
153 0xE2EB0EAA,
154 0xE806,
155 0x45E7,
156 {0x9F, 0x86, 0x06, 0xC1, 0x57, 0x1A, 0x6F, 0xA3}
159 const GUID EAXPROPERTYID_EAX40_Source =
161 0x1B86B823,
162 0x22DF,
163 0x4EAE,
164 {0x8B, 0x3C, 0x12, 0x78, 0xCE, 0x54, 0x42, 0x27}
167 const GUID EAXPROPERTYID_EAX50_Source =
169 0x5EDF82F0,
170 0x24A7,
171 0x4F38,
172 {0x8E, 0x64, 0x2F, 0x09, 0xCA, 0x05, 0xDE, 0xE1}
175 const GUID EAX_REVERB_EFFECT =
177 0xCF95C8F,
178 0xA3CC,
179 0x4849,
180 {0xB0, 0xB6, 0x83, 0x2E, 0xCC, 0x18, 0x22, 0xDF}
183 const GUID EAX_AGCCOMPRESSOR_EFFECT =
185 0xBFB7A01E,
186 0x7825,
187 0x4039,
188 {0x92, 0x7F, 0x03, 0xAA, 0xBD, 0xA0, 0xC5, 0x60}
191 const GUID EAX_AUTOWAH_EFFECT =
193 0xEC3130C0,
194 0xAC7A,
195 0x11D2,
196 {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1}
199 const GUID EAX_CHORUS_EFFECT =
201 0xDE6D6FE0,
202 0xAC79,
203 0x11D2,
204 {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1}
207 const GUID EAX_DISTORTION_EFFECT =
209 0x975A4CE0,
210 0xAC7E,
211 0x11D2,
212 {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1}
215 const GUID EAX_ECHO_EFFECT =
217 0xE9F1BC0,
218 0xAC82,
219 0x11D2,
220 {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1}
223 const GUID EAX_EQUALIZER_EFFECT =
225 0x65F94CE0,
226 0x9793,
227 0x11D3,
228 {0x93, 0x9D, 0x00, 0xC0, 0xF0, 0x2D, 0xD6, 0xF0}
231 const GUID EAX_FLANGER_EFFECT =
233 0xA70007C0,
234 0x7D2,
235 0x11D3,
236 {0x9B, 0x1E, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1}
239 const GUID EAX_FREQUENCYSHIFTER_EFFECT =
241 0xDC3E1880,
242 0x9212,
243 0x11D3,
244 {0x93, 0x9D, 0x00, 0xC0, 0xF0, 0x2D, 0xD6, 0xF0}
247 const GUID EAX_VOCALMORPHER_EFFECT =
249 0xE41CF10C,
250 0x3383,
251 0x11D2,
252 {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1}
255 const GUID EAX_PITCHSHIFTER_EFFECT =
257 0xE7905100,
258 0xAFB2,
259 0x11D2,
260 {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1}
263 const GUID EAX_RINGMODULATOR_EFFECT =
265 0xB89FE60,
266 0xAFB5,
267 0x11D2,
268 {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1}
272 bool operator==(
273 const EAX40CONTEXTPROPERTIES& lhs,
274 const EAX40CONTEXTPROPERTIES& rhs) noexcept
276 return
277 lhs.guidPrimaryFXSlotID == rhs.guidPrimaryFXSlotID &&
278 lhs.flDistanceFactor == rhs.flDistanceFactor &&
279 lhs.flAirAbsorptionHF == rhs.flAirAbsorptionHF &&
280 lhs.flHFReference == rhs.flHFReference;
283 bool operator==(
284 const EAX50CONTEXTPROPERTIES& lhs,
285 const EAX50CONTEXTPROPERTIES& rhs) noexcept
287 return
288 static_cast<const EAX40CONTEXTPROPERTIES&>(lhs) == static_cast<const EAX40CONTEXTPROPERTIES&>(rhs) &&
289 lhs.flMacroFXFactor == rhs.flMacroFXFactor;
293 const GUID EAXCONTEXT_DEFAULTPRIMARYFXSLOTID = EAXPROPERTYID_EAX40_FXSlot0;
295 bool operator==(
296 const EAX40FXSLOTPROPERTIES& lhs,
297 const EAX40FXSLOTPROPERTIES& rhs) noexcept
299 return
300 lhs.guidLoadEffect == rhs.guidLoadEffect &&
301 lhs.lVolume == rhs.lVolume &&
302 lhs.lLock == rhs.lLock &&
303 lhs.ulFlags == rhs.ulFlags;
306 bool operator==(
307 const EAX50FXSLOTPROPERTIES& lhs,
308 const EAX50FXSLOTPROPERTIES& rhs) noexcept
310 return
311 static_cast<const EAX40FXSLOTPROPERTIES&>(lhs) == static_cast<const EAX40FXSLOTPROPERTIES&>(rhs) &&
312 lhs.lOcclusion == rhs.lOcclusion &&
313 lhs.flOcclusionLFRatio == rhs.flOcclusionLFRatio;
316 const EAX50ACTIVEFXSLOTS EAX40SOURCE_DEFAULTACTIVEFXSLOTID = EAX50ACTIVEFXSLOTS
318 EAX_NULL_GUID,
319 EAXPROPERTYID_EAX40_FXSlot0,
322 bool operator==(
323 const EAX50ACTIVEFXSLOTS& lhs,
324 const EAX50ACTIVEFXSLOTS& rhs) noexcept
326 return std::equal(
327 std::cbegin(lhs.guidActiveFXSlots),
328 std::cend(lhs.guidActiveFXSlots),
329 std::begin(rhs.guidActiveFXSlots));
332 bool operator!=(
333 const EAX50ACTIVEFXSLOTS& lhs,
334 const EAX50ACTIVEFXSLOTS& rhs) noexcept
336 return !(lhs == rhs);
340 const EAX50ACTIVEFXSLOTS EAX50SOURCE_3DDEFAULTACTIVEFXSLOTID = EAX50ACTIVEFXSLOTS
342 EAX_NULL_GUID,
343 EAX_PrimaryFXSlotID,
344 EAX_NULL_GUID,
345 EAX_NULL_GUID,
349 const EAX50ACTIVEFXSLOTS EAX50SOURCE_2DDEFAULTACTIVEFXSLOTID = EAX50ACTIVEFXSLOTS
351 EAX_NULL_GUID,
352 EAX_NULL_GUID,
353 EAX_NULL_GUID,
354 EAX_NULL_GUID,
357 bool operator==(
358 const EAXREVERBPROPERTIES& lhs,
359 const EAXREVERBPROPERTIES& rhs) noexcept
361 return
362 lhs.ulEnvironment == rhs.ulEnvironment &&
363 lhs.flEnvironmentSize == rhs.flEnvironmentSize &&
364 lhs.flEnvironmentDiffusion == rhs.flEnvironmentDiffusion &&
365 lhs.lRoom == rhs.lRoom &&
366 lhs.lRoomHF == rhs.lRoomHF &&
367 lhs.lRoomLF == rhs.lRoomLF &&
368 lhs.flDecayTime == rhs.flDecayTime &&
369 lhs.flDecayHFRatio == rhs.flDecayHFRatio &&
370 lhs.flDecayLFRatio == rhs.flDecayLFRatio &&
371 lhs.lReflections == rhs.lReflections &&
372 lhs.flReflectionsDelay == rhs.flReflectionsDelay &&
373 lhs.vReflectionsPan == rhs.vReflectionsPan &&
374 lhs.lReverb == rhs.lReverb &&
375 lhs.flReverbDelay == rhs.flReverbDelay &&
376 lhs.vReverbPan == rhs.vReverbPan &&
377 lhs.flEchoTime == rhs.flEchoTime &&
378 lhs.flEchoDepth == rhs.flEchoDepth &&
379 lhs.flModulationTime == rhs.flModulationTime &&
380 lhs.flModulationDepth == rhs.flModulationDepth &&
381 lhs.flAirAbsorptionHF == rhs.flAirAbsorptionHF &&
382 lhs.flHFReference == rhs.flHFReference &&
383 lhs.flLFReference == rhs.flLFReference &&
384 lhs.flRoomRolloffFactor == rhs.flRoomRolloffFactor &&
385 lhs.ulFlags == rhs.ulFlags;
388 bool operator!=(
389 const EAXREVERBPROPERTIES& lhs,
390 const EAXREVERBPROPERTIES& rhs) noexcept
392 return !(lhs == rhs);
396 namespace {
398 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_GENERIC =
400 EAXREVERB_DEFAULTENVIRONMENT,
401 EAXREVERB_DEFAULTENVIRONMENTSIZE,
402 EAXREVERB_DEFAULTENVIRONMENTDIFFUSION,
403 EAXREVERB_DEFAULTROOM,
404 EAXREVERB_DEFAULTROOMHF,
405 EAXREVERB_DEFAULTROOMLF,
406 EAXREVERB_DEFAULTDECAYTIME,
407 EAXREVERB_DEFAULTDECAYHFRATIO,
408 EAXREVERB_DEFAULTDECAYLFRATIO,
409 EAXREVERB_DEFAULTREFLECTIONS,
410 EAXREVERB_DEFAULTREFLECTIONSDELAY,
411 EAXREVERB_DEFAULTREFLECTIONSPAN,
412 EAXREVERB_DEFAULTREVERB,
413 EAXREVERB_DEFAULTREVERBDELAY,
414 EAXREVERB_DEFAULTREVERBPAN,
415 EAXREVERB_DEFAULTECHOTIME,
416 EAXREVERB_DEFAULTECHODEPTH,
417 EAXREVERB_DEFAULTMODULATIONTIME,
418 EAXREVERB_DEFAULTMODULATIONDEPTH,
419 EAXREVERB_DEFAULTAIRABSORPTIONHF,
420 EAXREVERB_DEFAULTHFREFERENCE,
421 EAXREVERB_DEFAULTLFREFERENCE,
422 EAXREVERB_DEFAULTROOMROLLOFFFACTOR,
423 EAXREVERB_DEFAULTFLAGS,
426 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_PADDEDCELL =
428 EAX_ENVIRONMENT_PADDEDCELL,
429 1.4F,
430 1.0F,
431 -1'000L,
432 -6'000L,
434 0.17F,
435 0.10F,
436 1.0F,
437 -1'204L,
438 0.001F,
439 EAXVECTOR{},
440 207L,
441 0.002F,
442 EAXVECTOR{},
443 0.250F,
444 0.0F,
445 0.250F,
446 0.0F,
447 -5.0F,
448 5'000.0F,
449 250.0F,
450 0.0F,
451 0x3FUL,
454 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_ROOM =
456 EAX_ENVIRONMENT_ROOM,
457 1.9F,
458 1.0F,
459 -1'000L,
460 -454L,
462 0.40F,
463 0.83F,
464 1.0F,
465 -1'646L,
466 0.002F,
467 EAXVECTOR{},
468 53L,
469 0.003F,
470 EAXVECTOR{},
471 0.250F,
472 0.0F,
473 0.250F,
474 0.0F,
475 -5.0F,
476 5'000.0F,
477 250.0F,
478 0.0F,
479 0x3FUL,
482 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_BATHROOM =
484 EAX_ENVIRONMENT_BATHROOM,
485 1.4F,
486 1.0F,
487 -1'000L,
488 -1'200L,
490 1.49F,
491 0.54F,
492 1.0F,
493 -370L,
494 0.007F,
495 EAXVECTOR{},
496 1'030L,
497 0.011F,
498 EAXVECTOR{},
499 0.250F,
500 0.0F,
501 0.250F,
502 0.0F,
503 -5.0F,
504 5'000.0F,
505 250.0F,
506 0.0F,
507 0x3FUL,
510 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_LIVINGROOM =
512 EAX_ENVIRONMENT_LIVINGROOM,
513 2.5F,
514 1.0F,
515 -1'000L,
516 -6'000L,
518 0.50F,
519 0.10F,
520 1.0F,
521 -1'376,
522 0.003F,
523 EAXVECTOR{},
524 -1'104L,
525 0.004F,
526 EAXVECTOR{},
527 0.250F,
528 0.0F,
529 0.250F,
530 0.0F,
531 -5.0F,
532 5'000.0F,
533 250.0F,
534 0.0F,
535 0x3FUL,
538 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_STONEROOM =
540 EAX_ENVIRONMENT_STONEROOM,
541 11.6F,
542 1.0F,
543 -1'000L,
544 -300L,
546 2.31F,
547 0.64F,
548 1.0F,
549 -711L,
550 0.012F,
551 EAXVECTOR{},
552 83L,
553 0.017F,
554 EAXVECTOR{},
555 0.250F,
556 0.0F,
557 0.250F,
558 0.0F,
559 -5.0F,
560 5'000.0F,
561 250.0F,
562 0.0F,
563 0x3FUL,
566 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_AUDITORIUM =
568 EAX_ENVIRONMENT_AUDITORIUM,
569 21.6F,
570 1.0F,
571 -1'000L,
572 -476L,
574 4.32F,
575 0.59F,
576 1.0F,
577 -789L,
578 0.020F,
579 EAXVECTOR{},
580 -289L,
581 0.030F,
582 EAXVECTOR{},
583 0.250F,
584 0.0F,
585 0.250F,
586 0.0F,
587 -5.0F,
588 5'000.0F,
589 250.0F,
590 0.0F,
591 0x3FUL,
594 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_CONCERTHALL =
596 EAX_ENVIRONMENT_CONCERTHALL,
597 19.6F,
598 1.0F,
599 -1'000L,
600 -500L,
602 3.92F,
603 0.70F,
604 1.0F,
605 -1'230L,
606 0.020F,
607 EAXVECTOR{},
608 -2L,
609 0.029F,
610 EAXVECTOR{},
611 0.250F,
612 0.0F,
613 0.250F,
614 0.0F,
615 -5.0F,
616 5'000.0F,
617 250.0F,
618 0.0F,
619 0x3FUL,
622 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_CAVE =
624 EAX_ENVIRONMENT_CAVE,
625 14.6F,
626 1.0F,
627 -1'000L,
630 2.91F,
631 1.30F,
632 1.0F,
633 -602L,
634 0.015F,
635 EAXVECTOR{},
636 -302L,
637 0.022F,
638 EAXVECTOR{},
639 0.250F,
640 0.0F,
641 0.250F,
642 0.0F,
643 -5.0F,
644 5'000.0F,
645 250.0F,
646 0.0F,
647 0x1FUL,
650 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_ARENA =
652 EAX_ENVIRONMENT_ARENA,
653 36.2F,
654 1.0F,
655 -1'000L,
656 -698L,
658 7.24F,
659 0.33F,
660 1.0F,
661 -1'166L,
662 0.020F,
663 EAXVECTOR{},
664 16L,
665 0.030F,
666 EAXVECTOR{},
667 0.250F,
668 0.0F,
669 0.250F,
670 0.0F,
671 -5.0F,
672 5'000.0F,
673 250.0F,
674 0.0F,
675 0x3FUL,
678 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_HANGAR =
680 EAX_ENVIRONMENT_HANGAR,
681 50.3F,
682 1.0F,
683 -1'000L,
684 -1'000L,
686 10.05F,
687 0.23F,
688 1.0F,
689 -602L,
690 0.020F,
691 EAXVECTOR{},
692 198L,
693 0.030F,
694 EAXVECTOR{},
695 0.250F,
696 0.0F,
697 0.250F,
698 0.0F,
699 -5.0F,
700 5'000.0F,
701 250.0F,
702 0.0F,
703 0x3FUL,
706 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_CARPETTEDHALLWAY =
708 EAX_ENVIRONMENT_CARPETEDHALLWAY,
709 1.9F,
710 1.0F,
711 -1'000L,
712 -4'000L,
714 0.30F,
715 0.10F,
716 1.0F,
717 -1'831L,
718 0.002F,
719 EAXVECTOR{},
720 -1'630L,
721 0.030F,
722 EAXVECTOR{},
723 0.250F,
724 0.0F,
725 0.250F,
726 0.0F,
727 -5.0F,
728 5'000.0F,
729 250.0F,
730 0.0F,
731 0x3FUL,
734 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_HALLWAY =
736 EAX_ENVIRONMENT_HALLWAY,
737 1.8F,
738 1.0F,
739 -1'000L,
740 -300L,
742 1.49F,
743 0.59F,
744 1.0F,
745 -1'219L,
746 0.007F,
747 EAXVECTOR{},
748 441L,
749 0.011F,
750 EAXVECTOR{},
751 0.250F,
752 0.0F,
753 0.250F,
754 0.0F,
755 -5.0F,
756 5'000.0F,
757 250.0F,
758 0.0F,
759 0x3FUL,
762 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_STONECORRIDOR =
764 EAX_ENVIRONMENT_STONECORRIDOR,
765 13.5F,
766 1.0F,
767 -1'000L,
768 -237L,
770 2.70F,
771 0.79F,
772 1.0F,
773 -1'214L,
774 0.013F,
775 EAXVECTOR{},
776 395L,
777 0.020F,
778 EAXVECTOR{},
779 0.250F,
780 0.0F,
781 0.250F,
782 0.0F,
783 -5.0F,
784 5'000.0F,
785 250.0F,
786 0.0F,
787 0x3FUL,
790 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_ALLEY =
792 EAX_ENVIRONMENT_ALLEY,
793 7.5F,
794 0.300F,
795 -1'000L,
796 -270L,
798 1.49F,
799 0.86F,
800 1.0F,
801 -1'204L,
802 0.007F,
803 EAXVECTOR{},
804 -4L,
805 0.011F,
806 EAXVECTOR{},
807 0.125F,
808 0.950F,
809 0.250F,
810 0.0F,
811 -5.0F,
812 5'000.0F,
813 250.0F,
814 0.0F,
815 0x3FUL,
818 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_FOREST =
820 EAX_ENVIRONMENT_FOREST,
821 38.0F,
822 0.300F,
823 -1'000L,
824 -3'300L,
826 1.49F,
827 0.54F,
828 1.0F,
829 -2'560L,
830 0.162F,
831 EAXVECTOR{},
832 -229L,
833 0.088F,
834 EAXVECTOR{},
835 0.125F,
836 1.0F,
837 0.250F,
838 0.0F,
839 -5.0F,
840 5'000.0F,
841 250.0F,
842 0.0F,
843 0x3FUL,
846 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_CITY =
848 EAX_ENVIRONMENT_CITY,
849 7.5F,
850 0.500F,
851 -1'000L,
852 -800L,
854 1.49F,
855 0.67F,
856 1.0F,
857 -2'273L,
858 0.007F,
859 EAXVECTOR{},
860 -1'691L,
861 0.011F,
862 EAXVECTOR{},
863 0.250F,
864 0.0F,
865 0.250F,
866 0.0F,
867 -5.0F,
868 5'000.0F,
869 250.0F,
870 0.0F,
871 0x3FUL,
874 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_MOUNTAINS =
876 EAX_ENVIRONMENT_MOUNTAINS,
877 100.0F,
878 0.270F,
879 -1'000L,
880 -2'500L,
882 1.49F,
883 0.21F,
884 1.0F,
885 -2'780L,
886 0.300F,
887 EAXVECTOR{},
888 -1'434L,
889 0.100F,
890 EAXVECTOR{},
891 0.250F,
892 1.0F,
893 0.250F,
894 0.0F,
895 -5.0F,
896 5'000.0F,
897 250.0F,
898 0.0F,
899 0x1FUL,
902 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_QUARRY =
904 EAX_ENVIRONMENT_QUARRY,
905 17.5F,
906 1.0F,
907 -1'000L,
908 -1'000L,
910 1.49F,
911 0.83F,
912 1.0F,
913 -10'000L,
914 0.061F,
915 EAXVECTOR{},
916 500L,
917 0.025F,
918 EAXVECTOR{},
919 0.125F,
920 0.700F,
921 0.250F,
922 0.0F,
923 -5.0F,
924 5'000.0F,
925 250.0F,
926 0.0F,
927 0x3FUL,
930 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_PLAIN =
932 EAX_ENVIRONMENT_PLAIN,
933 42.5F,
934 0.210F,
935 -1'000L,
936 -2'000L,
938 1.49F,
939 0.50F,
940 1.0F,
941 -2'466L,
942 0.179F,
943 EAXVECTOR{},
944 -1'926L,
945 0.100F,
946 EAXVECTOR{},
947 0.250F,
948 1.0F,
949 0.250F,
950 0.0F,
951 -5.0F,
952 5'000.0F,
953 250.0F,
954 0.0F,
955 0x3FUL,
958 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_PARKINGLOT =
960 EAX_ENVIRONMENT_PARKINGLOT,
961 8.3F,
962 1.0F,
963 -1'000L,
966 1.65F,
967 1.50F,
968 1.0F,
969 -1'363L,
970 0.008F,
971 EAXVECTOR{},
972 -1'153L,
973 0.012F,
974 EAXVECTOR{},
975 0.250F,
976 0.0F,
977 0.250F,
978 0.0F,
979 -5.0F,
980 5'000.0F,
981 250.0F,
982 0.0F,
983 0x1FUL,
986 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_SEWERPIPE =
988 EAX_ENVIRONMENT_SEWERPIPE,
989 1.7F,
990 0.800F,
991 -1'000L,
992 -1'000L,
994 2.81F,
995 0.14F,
996 1.0F,
997 429L,
998 0.014F,
999 EAXVECTOR{},
1000 1'023L,
1001 0.021F,
1002 EAXVECTOR{},
1003 0.250F,
1004 0.0F,
1005 0.250F,
1006 0.0F,
1007 -5.0F,
1008 5'000.0F,
1009 250.0F,
1010 0.0F,
1011 0x3FUL,
1014 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_UNDERWATER =
1016 EAX_ENVIRONMENT_UNDERWATER,
1017 1.8F,
1018 1.0F,
1019 -1'000L,
1020 -4'000L,
1022 1.49F,
1023 0.10F,
1024 1.0F,
1025 -449L,
1026 0.007F,
1027 EAXVECTOR{},
1028 1'700L,
1029 0.011F,
1030 EAXVECTOR{},
1031 0.250F,
1032 0.0F,
1033 1.180F,
1034 0.348F,
1035 -5.0F,
1036 5'000.0F,
1037 250.0F,
1038 0.0F,
1039 0x3FUL,
1042 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_DRUGGED =
1044 EAX_ENVIRONMENT_DRUGGED,
1045 1.9F,
1046 0.500F,
1047 -1'000L,
1050 8.39F,
1051 1.39F,
1052 1.0F,
1053 -115L,
1054 0.002F,
1055 EAXVECTOR{},
1056 985L,
1057 0.030F,
1058 EAXVECTOR{},
1059 0.250F,
1060 0.0F,
1061 0.250F,
1062 1.0F,
1063 -5.0F,
1064 5'000.0F,
1065 250.0F,
1066 0.0F,
1067 0x1FUL,
1070 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_DIZZY =
1072 EAX_ENVIRONMENT_DIZZY,
1073 1.8F,
1074 0.600F,
1075 -1'000L,
1076 -400L,
1078 17.23F,
1079 0.56F,
1080 1.0F,
1081 -1'713L,
1082 0.020F,
1083 EAXVECTOR{},
1084 -613L,
1085 0.030F,
1086 EAXVECTOR{},
1087 0.250F,
1088 1.0F,
1089 0.810F,
1090 0.310F,
1091 -5.0F,
1092 5'000.0F,
1093 250.0F,
1094 0.0F,
1095 0x1FUL,
1098 constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_PSYCHOTIC =
1100 EAX_ENVIRONMENT_PSYCHOTIC,
1101 1.0F,
1102 0.500F,
1103 -1'000L,
1104 -151L,
1106 7.56F,
1107 0.91F,
1108 1.0F,
1109 -626L,
1110 0.020F,
1111 EAXVECTOR{},
1112 774L,
1113 0.030F,
1114 EAXVECTOR{},
1115 0.250F,
1116 0.0F,
1117 4.0F,
1118 1.0F,
1119 -5.0F,
1120 5'000.0F,
1121 250.0F,
1122 0.0F,
1123 0x1FUL,
1126 } // namespace
1128 const EaxReverbPresets EAXREVERB_PRESETS{{
1129 EAXREVERB_PRESET_GENERIC,
1130 EAXREVERB_PRESET_PADDEDCELL,
1131 EAXREVERB_PRESET_ROOM,
1132 EAXREVERB_PRESET_BATHROOM,
1133 EAXREVERB_PRESET_LIVINGROOM,
1134 EAXREVERB_PRESET_STONEROOM,
1135 EAXREVERB_PRESET_AUDITORIUM,
1136 EAXREVERB_PRESET_CONCERTHALL,
1137 EAXREVERB_PRESET_CAVE,
1138 EAXREVERB_PRESET_ARENA,
1139 EAXREVERB_PRESET_HANGAR,
1140 EAXREVERB_PRESET_CARPETTEDHALLWAY,
1141 EAXREVERB_PRESET_HALLWAY,
1142 EAXREVERB_PRESET_STONECORRIDOR,
1143 EAXREVERB_PRESET_ALLEY,
1144 EAXREVERB_PRESET_FOREST,
1145 EAXREVERB_PRESET_CITY,
1146 EAXREVERB_PRESET_MOUNTAINS,
1147 EAXREVERB_PRESET_QUARRY,
1148 EAXREVERB_PRESET_PLAIN,
1149 EAXREVERB_PRESET_PARKINGLOT,
1150 EAXREVERB_PRESET_SEWERPIPE,
1151 EAXREVERB_PRESET_UNDERWATER,
1152 EAXREVERB_PRESET_DRUGGED,
1153 EAXREVERB_PRESET_DIZZY,
1154 EAXREVERB_PRESET_PSYCHOTIC,
1157 namespace {
1158 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_GENERIC = {EAX_ENVIRONMENT_GENERIC, 0.5F, 1.493F, 0.5F};
1159 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_PADDEDCELL = {EAX_ENVIRONMENT_PADDEDCELL, 0.25F, 0.1F, 0.0F};
1160 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_ROOM = {EAX_ENVIRONMENT_ROOM, 0.417F, 0.4F, 0.666F};
1161 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_BATHROOM = {EAX_ENVIRONMENT_BATHROOM, 0.653F, 1.499F, 0.166F};
1162 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_LIVINGROOM = {EAX_ENVIRONMENT_LIVINGROOM, 0.208F, 0.478F, 0.0F};
1163 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_STONEROOM = {EAX_ENVIRONMENT_STONEROOM, 0.5F, 2.309F, 0.888F};
1164 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_AUDITORIUM = {EAX_ENVIRONMENT_AUDITORIUM, 0.403F, 4.279F, 0.5F};
1165 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_CONCERTHALL = {EAX_ENVIRONMENT_CONCERTHALL, 0.5F, 3.961F, 0.5F};
1166 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_CAVE = {EAX_ENVIRONMENT_CAVE, 0.5F, 2.886F, 1.304F};
1167 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_ARENA = {EAX_ENVIRONMENT_ARENA, 0.361F, 7.284F, 0.332F};
1168 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_HANGAR = {EAX_ENVIRONMENT_HANGAR, 0.5F, 10.0F, 0.3F};
1169 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_CARPETTEDHALLWAY = {EAX_ENVIRONMENT_CARPETEDHALLWAY, 0.153F, 0.259F, 2.0F};
1170 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_HALLWAY = {EAX_ENVIRONMENT_HALLWAY, 0.361F, 1.493F, 0.0F};
1171 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_STONECORRIDOR = {EAX_ENVIRONMENT_STONECORRIDOR, 0.444F, 2.697F, 0.638F};
1172 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_ALLEY = {EAX_ENVIRONMENT_ALLEY, 0.25F, 1.752F, 0.776F};
1173 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_FOREST = {EAX_ENVIRONMENT_FOREST, 0.111F, 3.145F, 0.472F};
1174 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_CITY = {EAX_ENVIRONMENT_CITY, 0.111F, 2.767F, 0.224F};
1175 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_MOUNTAINS = {EAX_ENVIRONMENT_MOUNTAINS, 0.194F, 7.841F, 0.472F};
1176 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_QUARRY = {EAX_ENVIRONMENT_QUARRY, 1.0F, 1.499F, 0.5F};
1177 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_PLAIN = {EAX_ENVIRONMENT_PLAIN, 0.097F, 2.767F, 0.224F};
1178 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_PARKINGLOT = {EAX_ENVIRONMENT_PARKINGLOT, 0.208F, 1.652F, 1.5F};
1179 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_SEWERPIPE = {EAX_ENVIRONMENT_SEWERPIPE, 0.652F, 2.886F, 0.25F};
1180 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_UNDERWATER = {EAX_ENVIRONMENT_UNDERWATER, 1.0F, 1.499F, 0.0F};
1181 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_DRUGGED = {EAX_ENVIRONMENT_DRUGGED, 0.875F, 8.392F, 1.388F};
1182 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_DIZZY = {EAX_ENVIRONMENT_DIZZY, 0.139F, 17.234F, 0.666F};
1183 constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_PSYCHOTIC = {EAX_ENVIRONMENT_PSYCHOTIC, 0.486F, 7.563F, 0.806F};
1184 } // namespace
1186 const Eax1ReverbPresets EAX1REVERB_PRESETS{{
1187 EAX1REVERB_PRESET_GENERIC,
1188 EAX1REVERB_PRESET_PADDEDCELL,
1189 EAX1REVERB_PRESET_ROOM,
1190 EAX1REVERB_PRESET_BATHROOM,
1191 EAX1REVERB_PRESET_LIVINGROOM,
1192 EAX1REVERB_PRESET_STONEROOM,
1193 EAX1REVERB_PRESET_AUDITORIUM,
1194 EAX1REVERB_PRESET_CONCERTHALL,
1195 EAX1REVERB_PRESET_CAVE,
1196 EAX1REVERB_PRESET_ARENA,
1197 EAX1REVERB_PRESET_HANGAR,
1198 EAX1REVERB_PRESET_CARPETTEDHALLWAY,
1199 EAX1REVERB_PRESET_HALLWAY,
1200 EAX1REVERB_PRESET_STONECORRIDOR,
1201 EAX1REVERB_PRESET_ALLEY,
1202 EAX1REVERB_PRESET_FOREST,
1203 EAX1REVERB_PRESET_CITY,
1204 EAX1REVERB_PRESET_MOUNTAINS,
1205 EAX1REVERB_PRESET_QUARRY,
1206 EAX1REVERB_PRESET_PLAIN,
1207 EAX1REVERB_PRESET_PARKINGLOT,
1208 EAX1REVERB_PRESET_SEWERPIPE,
1209 EAX1REVERB_PRESET_UNDERWATER,
1210 EAX1REVERB_PRESET_DRUGGED,
1211 EAX1REVERB_PRESET_DIZZY,
1212 EAX1REVERB_PRESET_PSYCHOTIC,