// // EAX API. // // Based on headers `eax[2-5].h` included in Doom 3 source code: // https://github.com/id-Software/DOOM-3/tree/master/neo/openal/include // #include "config.h" #include #include "al/eax_api.h" const GUID DSPROPSETID_EAX_ReverbProperties = { 0x4A4E6FC1, 0xC341, 0x11D1, {0xB7, 0x3A, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00} }; const GUID DSPROPSETID_EAXBUFFER_ReverbProperties = { 0x4A4E6FC0, 0xC341, 0x11D1, {0xB7, 0x3A, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00} }; const GUID DSPROPSETID_EAX20_ListenerProperties = { 0x306A6A8, 0xB224, 0x11D2, {0x99, 0xE5, 0x00, 0x00, 0xE8, 0xD8, 0xC7, 0x22} }; const GUID DSPROPSETID_EAX20_BufferProperties = { 0x306A6A7, 0xB224, 0x11D2, {0x99, 0xE5, 0x00, 0x00, 0xE8, 0xD8, 0xC7, 0x22} }; const GUID DSPROPSETID_EAX30_ListenerProperties = { 0xA8FA6882, 0xB476, 0x11D3, {0xBD, 0xB9, 0x00, 0xC0, 0xF0, 0x2D, 0xDF, 0x87} }; const GUID DSPROPSETID_EAX30_BufferProperties = { 0xA8FA6881, 0xB476, 0x11D3, {0xBD, 0xB9, 0x00, 0xC0, 0xF0, 0x2D, 0xDF, 0x87} }; const GUID EAX_NULL_GUID = { 0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} }; const GUID EAX_PrimaryFXSlotID = { 0xF317866D, 0x924C, 0x450C, {0x86, 0x1B, 0xE6, 0xDA, 0xA2, 0x5E, 0x7C, 0x20} }; const GUID EAXPROPERTYID_EAX40_Context = { 0x1D4870AD, 0xDEF, 0x43C0, {0xA4, 0xC, 0x52, 0x36, 0x32, 0x29, 0x63, 0x42} }; const GUID EAXPROPERTYID_EAX50_Context = { 0x57E13437, 0xB932, 0x4AB2, {0xB8, 0xBD, 0x52, 0x66, 0xC1, 0xA8, 0x87, 0xEE} }; const GUID EAXPROPERTYID_EAX40_FXSlot0 = { 0xC4D79F1E, 0xF1AC, 0x436B, {0xA8, 0x1D, 0xA7, 0x38, 0xE7, 0x04, 0x54, 0x69} }; const GUID EAXPROPERTYID_EAX50_FXSlot0 = { 0x91F9590F, 0xC388, 0x407A, {0x84, 0xB0, 0x1B, 0xAE, 0xE, 0xF7, 0x1A, 0xBC} }; const GUID EAXPROPERTYID_EAX40_FXSlot1 = { 0x8C00E96, 0x74BE, 0x4491, {0x93, 0xAA, 0xE8, 0xAD, 0x35, 0xA4, 0x91, 0x17} }; const GUID EAXPROPERTYID_EAX50_FXSlot1 = { 0x8F5F7ACA, 0x9608, 0x4965, {0x81, 0x37, 0x82, 0x13, 0xC7, 0xB9, 0xD9, 0xDE} }; const GUID EAXPROPERTYID_EAX40_FXSlot2 = { 0x1D433B88, 0xF0F6, 0x4637, {0x91, 0x9F, 0x60, 0xE7, 0xE0, 0x6B, 0x5E, 0xDD} }; const GUID EAXPROPERTYID_EAX50_FXSlot2 = { 0x3C0F5252, 0x9834, 0x46F0, {0xA1, 0xD8, 0x5B, 0x95, 0xC4, 0xA0, 0xA, 0x30} }; const GUID EAXPROPERTYID_EAX40_FXSlot3 = { 0xEFFF08EA, 0xC7D8, 0x44AB, {0x93, 0xAD, 0x6D, 0xBD, 0x5F, 0x91, 0x00, 0x64} }; const GUID EAXPROPERTYID_EAX50_FXSlot3 = { 0xE2EB0EAA, 0xE806, 0x45E7, {0x9F, 0x86, 0x06, 0xC1, 0x57, 0x1A, 0x6F, 0xA3} }; const GUID EAXPROPERTYID_EAX40_Source = { 0x1B86B823, 0x22DF, 0x4EAE, {0x8B, 0x3C, 0x12, 0x78, 0xCE, 0x54, 0x42, 0x27} }; const GUID EAXPROPERTYID_EAX50_Source = { 0x5EDF82F0, 0x24A7, 0x4F38, {0x8E, 0x64, 0x2F, 0x09, 0xCA, 0x05, 0xDE, 0xE1} }; const GUID EAX_REVERB_EFFECT = { 0xCF95C8F, 0xA3CC, 0x4849, {0xB0, 0xB6, 0x83, 0x2E, 0xCC, 0x18, 0x22, 0xDF} }; const GUID EAX_AGCCOMPRESSOR_EFFECT = { 0xBFB7A01E, 0x7825, 0x4039, {0x92, 0x7F, 0x03, 0xAA, 0xBD, 0xA0, 0xC5, 0x60} }; const GUID EAX_AUTOWAH_EFFECT = { 0xEC3130C0, 0xAC7A, 0x11D2, {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1} }; const GUID EAX_CHORUS_EFFECT = { 0xDE6D6FE0, 0xAC79, 0x11D2, {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1} }; const GUID EAX_DISTORTION_EFFECT = { 0x975A4CE0, 0xAC7E, 0x11D2, {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1} }; const GUID EAX_ECHO_EFFECT = { 0xE9F1BC0, 0xAC82, 0x11D2, {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1} }; const GUID EAX_EQUALIZER_EFFECT = { 0x65F94CE0, 0x9793, 0x11D3, {0x93, 0x9D, 0x00, 0xC0, 0xF0, 0x2D, 0xD6, 0xF0} }; const GUID EAX_FLANGER_EFFECT = { 0xA70007C0, 0x7D2, 0x11D3, {0x9B, 0x1E, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1} }; const GUID EAX_FREQUENCYSHIFTER_EFFECT = { 0xDC3E1880, 0x9212, 0x11D3, {0x93, 0x9D, 0x00, 0xC0, 0xF0, 0x2D, 0xD6, 0xF0} }; const GUID EAX_VOCALMORPHER_EFFECT = { 0xE41CF10C, 0x3383, 0x11D2, {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1} }; const GUID EAX_PITCHSHIFTER_EFFECT = { 0xE7905100, 0xAFB2, 0x11D2, {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1} }; const GUID EAX_RINGMODULATOR_EFFECT = { 0xB89FE60, 0xAFB5, 0x11D2, {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1} }; bool operator==( const EAX40CONTEXTPROPERTIES& lhs, const EAX40CONTEXTPROPERTIES& rhs) noexcept { return lhs.guidPrimaryFXSlotID == rhs.guidPrimaryFXSlotID && lhs.flDistanceFactor == rhs.flDistanceFactor && lhs.flAirAbsorptionHF == rhs.flAirAbsorptionHF && lhs.flHFReference == rhs.flHFReference; } bool operator==( const EAX50CONTEXTPROPERTIES& lhs, const EAX50CONTEXTPROPERTIES& rhs) noexcept { return static_cast(lhs) == static_cast(rhs) && lhs.flMacroFXFactor == rhs.flMacroFXFactor; } const GUID EAXCONTEXT_DEFAULTPRIMARYFXSLOTID = EAXPROPERTYID_EAX40_FXSlot0; bool operator==( const EAX40FXSLOTPROPERTIES& lhs, const EAX40FXSLOTPROPERTIES& rhs) noexcept { return lhs.guidLoadEffect == rhs.guidLoadEffect && lhs.lVolume == rhs.lVolume && lhs.lLock == rhs.lLock && lhs.ulFlags == rhs.ulFlags; } bool operator==( const EAX50FXSLOTPROPERTIES& lhs, const EAX50FXSLOTPROPERTIES& rhs) noexcept { return static_cast(lhs) == static_cast(rhs) && lhs.lOcclusion == rhs.lOcclusion && lhs.flOcclusionLFRatio == rhs.flOcclusionLFRatio; } const EAX50ACTIVEFXSLOTS EAX40SOURCE_DEFAULTACTIVEFXSLOTID = EAX50ACTIVEFXSLOTS {{ EAX_NULL_GUID, EAXPROPERTYID_EAX40_FXSlot0, }}; bool operator==( const EAX50ACTIVEFXSLOTS& lhs, const EAX50ACTIVEFXSLOTS& rhs) noexcept { return std::equal( std::cbegin(lhs.guidActiveFXSlots), std::cend(lhs.guidActiveFXSlots), std::begin(rhs.guidActiveFXSlots)); } bool operator!=( const EAX50ACTIVEFXSLOTS& lhs, const EAX50ACTIVEFXSLOTS& rhs) noexcept { return !(lhs == rhs); } const EAX50ACTIVEFXSLOTS EAX50SOURCE_3DDEFAULTACTIVEFXSLOTID = EAX50ACTIVEFXSLOTS {{ EAX_NULL_GUID, EAX_PrimaryFXSlotID, EAX_NULL_GUID, EAX_NULL_GUID, }}; const EAX50ACTIVEFXSLOTS EAX50SOURCE_2DDEFAULTACTIVEFXSLOTID = EAX50ACTIVEFXSLOTS {{ EAX_NULL_GUID, EAX_NULL_GUID, EAX_NULL_GUID, EAX_NULL_GUID, }}; bool operator==( const EAXREVERBPROPERTIES& lhs, const EAXREVERBPROPERTIES& rhs) noexcept { return lhs.ulEnvironment == rhs.ulEnvironment && lhs.flEnvironmentSize == rhs.flEnvironmentSize && lhs.flEnvironmentDiffusion == rhs.flEnvironmentDiffusion && lhs.lRoom == rhs.lRoom && lhs.lRoomHF == rhs.lRoomHF && lhs.lRoomLF == rhs.lRoomLF && lhs.flDecayTime == rhs.flDecayTime && lhs.flDecayHFRatio == rhs.flDecayHFRatio && lhs.flDecayLFRatio == rhs.flDecayLFRatio && lhs.lReflections == rhs.lReflections && lhs.flReflectionsDelay == rhs.flReflectionsDelay && lhs.vReflectionsPan == rhs.vReflectionsPan && lhs.lReverb == rhs.lReverb && lhs.flReverbDelay == rhs.flReverbDelay && lhs.vReverbPan == rhs.vReverbPan && lhs.flEchoTime == rhs.flEchoTime && lhs.flEchoDepth == rhs.flEchoDepth && lhs.flModulationTime == rhs.flModulationTime && lhs.flModulationDepth == rhs.flModulationDepth && lhs.flAirAbsorptionHF == rhs.flAirAbsorptionHF && lhs.flHFReference == rhs.flHFReference && lhs.flLFReference == rhs.flLFReference && lhs.flRoomRolloffFactor == rhs.flRoomRolloffFactor && lhs.ulFlags == rhs.ulFlags; } bool operator!=( const EAXREVERBPROPERTIES& lhs, const EAXREVERBPROPERTIES& rhs) noexcept { return !(lhs == rhs); } namespace { constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_GENERIC = { EAXREVERB_DEFAULTENVIRONMENT, EAXREVERB_DEFAULTENVIRONMENTSIZE, EAXREVERB_DEFAULTENVIRONMENTDIFFUSION, EAXREVERB_DEFAULTROOM, EAXREVERB_DEFAULTROOMHF, EAXREVERB_DEFAULTROOMLF, EAXREVERB_DEFAULTDECAYTIME, EAXREVERB_DEFAULTDECAYHFRATIO, EAXREVERB_DEFAULTDECAYLFRATIO, EAXREVERB_DEFAULTREFLECTIONS, EAXREVERB_DEFAULTREFLECTIONSDELAY, EAXREVERB_DEFAULTREFLECTIONSPAN, EAXREVERB_DEFAULTREVERB, EAXREVERB_DEFAULTREVERBDELAY, EAXREVERB_DEFAULTREVERBPAN, EAXREVERB_DEFAULTECHOTIME, EAXREVERB_DEFAULTECHODEPTH, EAXREVERB_DEFAULTMODULATIONTIME, EAXREVERB_DEFAULTMODULATIONDEPTH, EAXREVERB_DEFAULTAIRABSORPTIONHF, EAXREVERB_DEFAULTHFREFERENCE, EAXREVERB_DEFAULTLFREFERENCE, EAXREVERB_DEFAULTROOMROLLOFFFACTOR, EAXREVERB_DEFAULTFLAGS, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_PADDEDCELL = { EAX_ENVIRONMENT_PADDEDCELL, 1.4F, 1.0F, -1'000L, -6'000L, 0L, 0.17F, 0.10F, 1.0F, -1'204L, 0.001F, EAXVECTOR{}, 207L, 0.002F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_ROOM = { EAX_ENVIRONMENT_ROOM, 1.9F, 1.0F, -1'000L, -454L, 0L, 0.40F, 0.83F, 1.0F, -1'646L, 0.002F, EAXVECTOR{}, 53L, 0.003F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_BATHROOM = { EAX_ENVIRONMENT_BATHROOM, 1.4F, 1.0F, -1'000L, -1'200L, 0L, 1.49F, 0.54F, 1.0F, -370L, 0.007F, EAXVECTOR{}, 1'030L, 0.011F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_LIVINGROOM = { EAX_ENVIRONMENT_LIVINGROOM, 2.5F, 1.0F, -1'000L, -6'000L, 0L, 0.50F, 0.10F, 1.0F, -1'376, 0.003F, EAXVECTOR{}, -1'104L, 0.004F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_STONEROOM = { EAX_ENVIRONMENT_STONEROOM, 11.6F, 1.0F, -1'000L, -300L, 0L, 2.31F, 0.64F, 1.0F, -711L, 0.012F, EAXVECTOR{}, 83L, 0.017F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_AUDITORIUM = { EAX_ENVIRONMENT_AUDITORIUM, 21.6F, 1.0F, -1'000L, -476L, 0L, 4.32F, 0.59F, 1.0F, -789L, 0.020F, EAXVECTOR{}, -289L, 0.030F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_CONCERTHALL = { EAX_ENVIRONMENT_CONCERTHALL, 19.6F, 1.0F, -1'000L, -500L, 0L, 3.92F, 0.70F, 1.0F, -1'230L, 0.020F, EAXVECTOR{}, -2L, 0.029F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_CAVE = { EAX_ENVIRONMENT_CAVE, 14.6F, 1.0F, -1'000L, 0L, 0L, 2.91F, 1.30F, 1.0F, -602L, 0.015F, EAXVECTOR{}, -302L, 0.022F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x1FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_ARENA = { EAX_ENVIRONMENT_ARENA, 36.2F, 1.0F, -1'000L, -698L, 0L, 7.24F, 0.33F, 1.0F, -1'166L, 0.020F, EAXVECTOR{}, 16L, 0.030F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_HANGAR = { EAX_ENVIRONMENT_HANGAR, 50.3F, 1.0F, -1'000L, -1'000L, 0L, 10.05F, 0.23F, 1.0F, -602L, 0.020F, EAXVECTOR{}, 198L, 0.030F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_CARPETTEDHALLWAY = { EAX_ENVIRONMENT_CARPETEDHALLWAY, 1.9F, 1.0F, -1'000L, -4'000L, 0L, 0.30F, 0.10F, 1.0F, -1'831L, 0.002F, EAXVECTOR{}, -1'630L, 0.030F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_HALLWAY = { EAX_ENVIRONMENT_HALLWAY, 1.8F, 1.0F, -1'000L, -300L, 0L, 1.49F, 0.59F, 1.0F, -1'219L, 0.007F, EAXVECTOR{}, 441L, 0.011F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_STONECORRIDOR = { EAX_ENVIRONMENT_STONECORRIDOR, 13.5F, 1.0F, -1'000L, -237L, 0L, 2.70F, 0.79F, 1.0F, -1'214L, 0.013F, EAXVECTOR{}, 395L, 0.020F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_ALLEY = { EAX_ENVIRONMENT_ALLEY, 7.5F, 0.300F, -1'000L, -270L, 0L, 1.49F, 0.86F, 1.0F, -1'204L, 0.007F, EAXVECTOR{}, -4L, 0.011F, EAXVECTOR{}, 0.125F, 0.950F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_FOREST = { EAX_ENVIRONMENT_FOREST, 38.0F, 0.300F, -1'000L, -3'300L, 0L, 1.49F, 0.54F, 1.0F, -2'560L, 0.162F, EAXVECTOR{}, -229L, 0.088F, EAXVECTOR{}, 0.125F, 1.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_CITY = { EAX_ENVIRONMENT_CITY, 7.5F, 0.500F, -1'000L, -800L, 0L, 1.49F, 0.67F, 1.0F, -2'273L, 0.007F, EAXVECTOR{}, -1'691L, 0.011F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_MOUNTAINS = { EAX_ENVIRONMENT_MOUNTAINS, 100.0F, 0.270F, -1'000L, -2'500L, 0L, 1.49F, 0.21F, 1.0F, -2'780L, 0.300F, EAXVECTOR{}, -1'434L, 0.100F, EAXVECTOR{}, 0.250F, 1.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x1FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_QUARRY = { EAX_ENVIRONMENT_QUARRY, 17.5F, 1.0F, -1'000L, -1'000L, 0L, 1.49F, 0.83F, 1.0F, -10'000L, 0.061F, EAXVECTOR{}, 500L, 0.025F, EAXVECTOR{}, 0.125F, 0.700F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_PLAIN = { EAX_ENVIRONMENT_PLAIN, 42.5F, 0.210F, -1'000L, -2'000L, 0L, 1.49F, 0.50F, 1.0F, -2'466L, 0.179F, EAXVECTOR{}, -1'926L, 0.100F, EAXVECTOR{}, 0.250F, 1.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_PARKINGLOT = { EAX_ENVIRONMENT_PARKINGLOT, 8.3F, 1.0F, -1'000L, 0L, 0L, 1.65F, 1.50F, 1.0F, -1'363L, 0.008F, EAXVECTOR{}, -1'153L, 0.012F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x1FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_SEWERPIPE = { EAX_ENVIRONMENT_SEWERPIPE, 1.7F, 0.800F, -1'000L, -1'000L, 0L, 2.81F, 0.14F, 1.0F, 429L, 0.014F, EAXVECTOR{}, 1'023L, 0.021F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 0.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_UNDERWATER = { EAX_ENVIRONMENT_UNDERWATER, 1.8F, 1.0F, -1'000L, -4'000L, 0L, 1.49F, 0.10F, 1.0F, -449L, 0.007F, EAXVECTOR{}, 1'700L, 0.011F, EAXVECTOR{}, 0.250F, 0.0F, 1.180F, 0.348F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x3FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_DRUGGED = { EAX_ENVIRONMENT_DRUGGED, 1.9F, 0.500F, -1'000L, 0L, 0L, 8.39F, 1.39F, 1.0F, -115L, 0.002F, EAXVECTOR{}, 985L, 0.030F, EAXVECTOR{}, 0.250F, 0.0F, 0.250F, 1.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x1FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_DIZZY = { EAX_ENVIRONMENT_DIZZY, 1.8F, 0.600F, -1'000L, -400L, 0L, 17.23F, 0.56F, 1.0F, -1'713L, 0.020F, EAXVECTOR{}, -613L, 0.030F, EAXVECTOR{}, 0.250F, 1.0F, 0.810F, 0.310F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x1FUL, }; constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_PSYCHOTIC = { EAX_ENVIRONMENT_PSYCHOTIC, 1.0F, 0.500F, -1'000L, -151L, 0L, 7.56F, 0.91F, 1.0F, -626L, 0.020F, EAXVECTOR{}, 774L, 0.030F, EAXVECTOR{}, 0.250F, 0.0F, 4.0F, 1.0F, -5.0F, 5'000.0F, 250.0F, 0.0F, 0x1FUL, }; } // namespace const EaxReverbPresets EAXREVERB_PRESETS{{ EAXREVERB_PRESET_GENERIC, EAXREVERB_PRESET_PADDEDCELL, EAXREVERB_PRESET_ROOM, EAXREVERB_PRESET_BATHROOM, EAXREVERB_PRESET_LIVINGROOM, EAXREVERB_PRESET_STONEROOM, EAXREVERB_PRESET_AUDITORIUM, EAXREVERB_PRESET_CONCERTHALL, EAXREVERB_PRESET_CAVE, EAXREVERB_PRESET_ARENA, EAXREVERB_PRESET_HANGAR, EAXREVERB_PRESET_CARPETTEDHALLWAY, EAXREVERB_PRESET_HALLWAY, EAXREVERB_PRESET_STONECORRIDOR, EAXREVERB_PRESET_ALLEY, EAXREVERB_PRESET_FOREST, EAXREVERB_PRESET_CITY, EAXREVERB_PRESET_MOUNTAINS, EAXREVERB_PRESET_QUARRY, EAXREVERB_PRESET_PLAIN, EAXREVERB_PRESET_PARKINGLOT, EAXREVERB_PRESET_SEWERPIPE, EAXREVERB_PRESET_UNDERWATER, EAXREVERB_PRESET_DRUGGED, EAXREVERB_PRESET_DIZZY, EAXREVERB_PRESET_PSYCHOTIC, }}; namespace { constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_GENERIC = {EAX_ENVIRONMENT_GENERIC, 0.5F, 1.493F, 0.5F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_PADDEDCELL = {EAX_ENVIRONMENT_PADDEDCELL, 0.25F, 0.1F, 0.0F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_ROOM = {EAX_ENVIRONMENT_ROOM, 0.417F, 0.4F, 0.666F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_BATHROOM = {EAX_ENVIRONMENT_BATHROOM, 0.653F, 1.499F, 0.166F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_LIVINGROOM = {EAX_ENVIRONMENT_LIVINGROOM, 0.208F, 0.478F, 0.0F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_STONEROOM = {EAX_ENVIRONMENT_STONEROOM, 0.5F, 2.309F, 0.888F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_AUDITORIUM = {EAX_ENVIRONMENT_AUDITORIUM, 0.403F, 4.279F, 0.5F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_CONCERTHALL = {EAX_ENVIRONMENT_CONCERTHALL, 0.5F, 3.961F, 0.5F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_CAVE = {EAX_ENVIRONMENT_CAVE, 0.5F, 2.886F, 1.304F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_ARENA = {EAX_ENVIRONMENT_ARENA, 0.361F, 7.284F, 0.332F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_HANGAR = {EAX_ENVIRONMENT_HANGAR, 0.5F, 10.0F, 0.3F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_CARPETTEDHALLWAY = {EAX_ENVIRONMENT_CARPETEDHALLWAY, 0.153F, 0.259F, 2.0F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_HALLWAY = {EAX_ENVIRONMENT_HALLWAY, 0.361F, 1.493F, 0.0F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_STONECORRIDOR = {EAX_ENVIRONMENT_STONECORRIDOR, 0.444F, 2.697F, 0.638F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_ALLEY = {EAX_ENVIRONMENT_ALLEY, 0.25F, 1.752F, 0.776F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_FOREST = {EAX_ENVIRONMENT_FOREST, 0.111F, 3.145F, 0.472F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_CITY = {EAX_ENVIRONMENT_CITY, 0.111F, 2.767F, 0.224F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_MOUNTAINS = {EAX_ENVIRONMENT_MOUNTAINS, 0.194F, 7.841F, 0.472F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_QUARRY = {EAX_ENVIRONMENT_QUARRY, 1.0F, 1.499F, 0.5F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_PLAIN = {EAX_ENVIRONMENT_PLAIN, 0.097F, 2.767F, 0.224F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_PARKINGLOT = {EAX_ENVIRONMENT_PARKINGLOT, 0.208F, 1.652F, 1.5F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_SEWERPIPE = {EAX_ENVIRONMENT_SEWERPIPE, 0.652F, 2.886F, 0.25F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_UNDERWATER = {EAX_ENVIRONMENT_UNDERWATER, 1.0F, 1.499F, 0.0F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_DRUGGED = {EAX_ENVIRONMENT_DRUGGED, 0.875F, 8.392F, 1.388F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_DIZZY = {EAX_ENVIRONMENT_DIZZY, 0.139F, 17.234F, 0.666F}; constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_PSYCHOTIC = {EAX_ENVIRONMENT_PSYCHOTIC, 0.486F, 7.563F, 0.806F}; } // namespace const Eax1ReverbPresets EAX1REVERB_PRESETS{{ EAX1REVERB_PRESET_GENERIC, EAX1REVERB_PRESET_PADDEDCELL, EAX1REVERB_PRESET_ROOM, EAX1REVERB_PRESET_BATHROOM, EAX1REVERB_PRESET_LIVINGROOM, EAX1REVERB_PRESET_STONEROOM, EAX1REVERB_PRESET_AUDITORIUM, EAX1REVERB_PRESET_CONCERTHALL, EAX1REVERB_PRESET_CAVE, EAX1REVERB_PRESET_ARENA, EAX1REVERB_PRESET_HANGAR, EAX1REVERB_PRESET_CARPETTEDHALLWAY, EAX1REVERB_PRESET_HALLWAY, EAX1REVERB_PRESET_STONECORRIDOR, EAX1REVERB_PRESET_ALLEY, EAX1REVERB_PRESET_FOREST, EAX1REVERB_PRESET_CITY, EAX1REVERB_PRESET_MOUNTAINS, EAX1REVERB_PRESET_QUARRY, EAX1REVERB_PRESET_PLAIN, EAX1REVERB_PRESET_PARKINGLOT, EAX1REVERB_PRESET_SEWERPIPE, EAX1REVERB_PRESET_UNDERWATER, EAX1REVERB_PRESET_DRUGGED, EAX1REVERB_PRESET_DIZZY, EAX1REVERB_PRESET_PSYCHOTIC, }};