api.cpp 29 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621
  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. //
  7. #include "config.h"
  8. #include <algorithm>
  9. #include "api.h"
  10. const GUID DSPROPSETID_EAX_ReverbProperties =
  11. {
  12. 0x4A4E6FC1,
  13. 0xC341,
  14. 0x11D1,
  15. {0xB7, 0x3A, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}
  16. };
  17. const GUID DSPROPSETID_EAXBUFFER_ReverbProperties =
  18. {
  19. 0x4A4E6FC0,
  20. 0xC341,
  21. 0x11D1,
  22. {0xB7, 0x3A, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}
  23. };
  24. const GUID DSPROPSETID_EAX20_ListenerProperties =
  25. {
  26. 0x306A6A8,
  27. 0xB224,
  28. 0x11D2,
  29. {0x99, 0xE5, 0x00, 0x00, 0xE8, 0xD8, 0xC7, 0x22}
  30. };
  31. const GUID DSPROPSETID_EAX20_BufferProperties =
  32. {
  33. 0x306A6A7,
  34. 0xB224,
  35. 0x11D2,
  36. {0x99, 0xE5, 0x00, 0x00, 0xE8, 0xD8, 0xC7, 0x22}
  37. };
  38. const GUID DSPROPSETID_EAX30_ListenerProperties =
  39. {
  40. 0xA8FA6882,
  41. 0xB476,
  42. 0x11D3,
  43. {0xBD, 0xB9, 0x00, 0xC0, 0xF0, 0x2D, 0xDF, 0x87}
  44. };
  45. const GUID DSPROPSETID_EAX30_BufferProperties =
  46. {
  47. 0xA8FA6881,
  48. 0xB476,
  49. 0x11D3,
  50. {0xBD, 0xB9, 0x00, 0xC0, 0xF0, 0x2D, 0xDF, 0x87}
  51. };
  52. const GUID EAX_NULL_GUID =
  53. {
  54. 0x00000000,
  55. 0x0000,
  56. 0x0000,
  57. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
  58. };
  59. const GUID EAX_PrimaryFXSlotID =
  60. {
  61. 0xF317866D,
  62. 0x924C,
  63. 0x450C,
  64. {0x86, 0x1B, 0xE6, 0xDA, 0xA2, 0x5E, 0x7C, 0x20}
  65. };
  66. const GUID EAXPROPERTYID_EAX40_Context =
  67. {
  68. 0x1D4870AD,
  69. 0xDEF,
  70. 0x43C0,
  71. {0xA4, 0xC, 0x52, 0x36, 0x32, 0x29, 0x63, 0x42}
  72. };
  73. const GUID EAXPROPERTYID_EAX50_Context =
  74. {
  75. 0x57E13437,
  76. 0xB932,
  77. 0x4AB2,
  78. {0xB8, 0xBD, 0x52, 0x66, 0xC1, 0xA8, 0x87, 0xEE}
  79. };
  80. const GUID EAXPROPERTYID_EAX40_FXSlot0 =
  81. {
  82. 0xC4D79F1E,
  83. 0xF1AC,
  84. 0x436B,
  85. {0xA8, 0x1D, 0xA7, 0x38, 0xE7, 0x04, 0x54, 0x69}
  86. };
  87. const GUID EAXPROPERTYID_EAX50_FXSlot0 =
  88. {
  89. 0x91F9590F,
  90. 0xC388,
  91. 0x407A,
  92. {0x84, 0xB0, 0x1B, 0xAE, 0xE, 0xF7, 0x1A, 0xBC}
  93. };
  94. const GUID EAXPROPERTYID_EAX40_FXSlot1 =
  95. {
  96. 0x8C00E96,
  97. 0x74BE,
  98. 0x4491,
  99. {0x93, 0xAA, 0xE8, 0xAD, 0x35, 0xA4, 0x91, 0x17}
  100. };
  101. const GUID EAXPROPERTYID_EAX50_FXSlot1 =
  102. {
  103. 0x8F5F7ACA,
  104. 0x9608,
  105. 0x4965,
  106. {0x81, 0x37, 0x82, 0x13, 0xC7, 0xB9, 0xD9, 0xDE}
  107. };
  108. const GUID EAXPROPERTYID_EAX40_FXSlot2 =
  109. {
  110. 0x1D433B88,
  111. 0xF0F6,
  112. 0x4637,
  113. {0x91, 0x9F, 0x60, 0xE7, 0xE0, 0x6B, 0x5E, 0xDD}
  114. };
  115. const GUID EAXPROPERTYID_EAX50_FXSlot2 =
  116. {
  117. 0x3C0F5252,
  118. 0x9834,
  119. 0x46F0,
  120. {0xA1, 0xD8, 0x5B, 0x95, 0xC4, 0xA0, 0xA, 0x30}
  121. };
  122. const GUID EAXPROPERTYID_EAX40_FXSlot3 =
  123. {
  124. 0xEFFF08EA,
  125. 0xC7D8,
  126. 0x44AB,
  127. {0x93, 0xAD, 0x6D, 0xBD, 0x5F, 0x91, 0x00, 0x64}
  128. };
  129. const GUID EAXPROPERTYID_EAX50_FXSlot3 =
  130. {
  131. 0xE2EB0EAA,
  132. 0xE806,
  133. 0x45E7,
  134. {0x9F, 0x86, 0x06, 0xC1, 0x57, 0x1A, 0x6F, 0xA3}
  135. };
  136. const GUID EAXPROPERTYID_EAX40_Source =
  137. {
  138. 0x1B86B823,
  139. 0x22DF,
  140. 0x4EAE,
  141. {0x8B, 0x3C, 0x12, 0x78, 0xCE, 0x54, 0x42, 0x27}
  142. };
  143. const GUID EAXPROPERTYID_EAX50_Source =
  144. {
  145. 0x5EDF82F0,
  146. 0x24A7,
  147. 0x4F38,
  148. {0x8E, 0x64, 0x2F, 0x09, 0xCA, 0x05, 0xDE, 0xE1}
  149. };
  150. const GUID EAX_REVERB_EFFECT =
  151. {
  152. 0xCF95C8F,
  153. 0xA3CC,
  154. 0x4849,
  155. {0xB0, 0xB6, 0x83, 0x2E, 0xCC, 0x18, 0x22, 0xDF}
  156. };
  157. const GUID EAX_AGCCOMPRESSOR_EFFECT =
  158. {
  159. 0xBFB7A01E,
  160. 0x7825,
  161. 0x4039,
  162. {0x92, 0x7F, 0x03, 0xAA, 0xBD, 0xA0, 0xC5, 0x60}
  163. };
  164. const GUID EAX_AUTOWAH_EFFECT =
  165. {
  166. 0xEC3130C0,
  167. 0xAC7A,
  168. 0x11D2,
  169. {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1}
  170. };
  171. const GUID EAX_CHORUS_EFFECT =
  172. {
  173. 0xDE6D6FE0,
  174. 0xAC79,
  175. 0x11D2,
  176. {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1}
  177. };
  178. const GUID EAX_DISTORTION_EFFECT =
  179. {
  180. 0x975A4CE0,
  181. 0xAC7E,
  182. 0x11D2,
  183. {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1}
  184. };
  185. const GUID EAX_ECHO_EFFECT =
  186. {
  187. 0xE9F1BC0,
  188. 0xAC82,
  189. 0x11D2,
  190. {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1}
  191. };
  192. const GUID EAX_EQUALIZER_EFFECT =
  193. {
  194. 0x65F94CE0,
  195. 0x9793,
  196. 0x11D3,
  197. {0x93, 0x9D, 0x00, 0xC0, 0xF0, 0x2D, 0xD6, 0xF0}
  198. };
  199. const GUID EAX_FLANGER_EFFECT =
  200. {
  201. 0xA70007C0,
  202. 0x7D2,
  203. 0x11D3,
  204. {0x9B, 0x1E, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1}
  205. };
  206. const GUID EAX_FREQUENCYSHIFTER_EFFECT =
  207. {
  208. 0xDC3E1880,
  209. 0x9212,
  210. 0x11D3,
  211. {0x93, 0x9D, 0x00, 0xC0, 0xF0, 0x2D, 0xD6, 0xF0}
  212. };
  213. const GUID EAX_VOCALMORPHER_EFFECT =
  214. {
  215. 0xE41CF10C,
  216. 0x3383,
  217. 0x11D2,
  218. {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1}
  219. };
  220. const GUID EAX_PITCHSHIFTER_EFFECT =
  221. {
  222. 0xE7905100,
  223. 0xAFB2,
  224. 0x11D2,
  225. {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1}
  226. };
  227. const GUID EAX_RINGMODULATOR_EFFECT =
  228. {
  229. 0xB89FE60,
  230. 0xAFB5,
  231. 0x11D2,
  232. {0x88, 0xDD, 0x00, 0xA0, 0x24, 0xD1, 0x3C, 0xE1}
  233. };
  234. const GUID EAX40CONTEXT_DEFAULTPRIMARYFXSLOTID = EAXPROPERTYID_EAX40_FXSlot0;
  235. const GUID EAX50CONTEXT_DEFAULTPRIMARYFXSLOTID = EAXPROPERTYID_EAX50_FXSlot0;
  236. const EAX40ACTIVEFXSLOTS EAX40SOURCE_DEFAULTACTIVEFXSLOTID = EAX40ACTIVEFXSLOTS
  237. {{
  238. EAX_NULL_GUID,
  239. EAXPROPERTYID_EAX40_FXSlot0,
  240. }};
  241. const EAX50ACTIVEFXSLOTS EAX50SOURCE_3DDEFAULTACTIVEFXSLOTID = EAX50ACTIVEFXSLOTS
  242. {{
  243. EAX_NULL_GUID,
  244. EAX_PrimaryFXSlotID,
  245. EAX_NULL_GUID,
  246. EAX_NULL_GUID,
  247. }};
  248. const EAX50ACTIVEFXSLOTS EAX50SOURCE_2DDEFAULTACTIVEFXSLOTID = EAX50ACTIVEFXSLOTS
  249. {{
  250. EAX_NULL_GUID,
  251. EAX_NULL_GUID,
  252. EAX_NULL_GUID,
  253. EAX_NULL_GUID,
  254. }};
  255. // EAX1 =====================================================================
  256. namespace {
  257. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_GENERIC = {EAX_ENVIRONMENT_GENERIC, 0.5F, 1.493F, 0.5F};
  258. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_PADDEDCELL = {EAX_ENVIRONMENT_PADDEDCELL, 0.25F, 0.1F, 0.0F};
  259. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_ROOM = {EAX_ENVIRONMENT_ROOM, 0.417F, 0.4F, 0.666F};
  260. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_BATHROOM = {EAX_ENVIRONMENT_BATHROOM, 0.653F, 1.499F, 0.166F};
  261. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_LIVINGROOM = {EAX_ENVIRONMENT_LIVINGROOM, 0.208F, 0.478F, 0.0F};
  262. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_STONEROOM = {EAX_ENVIRONMENT_STONEROOM, 0.5F, 2.309F, 0.888F};
  263. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_AUDITORIUM = {EAX_ENVIRONMENT_AUDITORIUM, 0.403F, 4.279F, 0.5F};
  264. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_CONCERTHALL = {EAX_ENVIRONMENT_CONCERTHALL, 0.5F, 3.961F, 0.5F};
  265. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_CAVE = {EAX_ENVIRONMENT_CAVE, 0.5F, 2.886F, 1.304F};
  266. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_ARENA = {EAX_ENVIRONMENT_ARENA, 0.361F, 7.284F, 0.332F};
  267. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_HANGAR = {EAX_ENVIRONMENT_HANGAR, 0.5F, 10.0F, 0.3F};
  268. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_CARPETTEDHALLWAY = {EAX_ENVIRONMENT_CARPETEDHALLWAY, 0.153F, 0.259F, 2.0F};
  269. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_HALLWAY = {EAX_ENVIRONMENT_HALLWAY, 0.361F, 1.493F, 0.0F};
  270. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_STONECORRIDOR = {EAX_ENVIRONMENT_STONECORRIDOR, 0.444F, 2.697F, 0.638F};
  271. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_ALLEY = {EAX_ENVIRONMENT_ALLEY, 0.25F, 1.752F, 0.776F};
  272. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_FOREST = {EAX_ENVIRONMENT_FOREST, 0.111F, 3.145F, 0.472F};
  273. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_CITY = {EAX_ENVIRONMENT_CITY, 0.111F, 2.767F, 0.224F};
  274. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_MOUNTAINS = {EAX_ENVIRONMENT_MOUNTAINS, 0.194F, 7.841F, 0.472F};
  275. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_QUARRY = {EAX_ENVIRONMENT_QUARRY, 1.0F, 1.499F, 0.5F};
  276. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_PLAIN = {EAX_ENVIRONMENT_PLAIN, 0.097F, 2.767F, 0.224F};
  277. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_PARKINGLOT = {EAX_ENVIRONMENT_PARKINGLOT, 0.208F, 1.652F, 1.5F};
  278. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_SEWERPIPE = {EAX_ENVIRONMENT_SEWERPIPE, 0.652F, 2.886F, 0.25F};
  279. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_UNDERWATER = {EAX_ENVIRONMENT_UNDERWATER, 1.0F, 1.499F, 0.0F};
  280. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_DRUGGED = {EAX_ENVIRONMENT_DRUGGED, 0.875F, 8.392F, 1.388F};
  281. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_DIZZY = {EAX_ENVIRONMENT_DIZZY, 0.139F, 17.234F, 0.666F};
  282. constexpr EAX_REVERBPROPERTIES EAX1REVERB_PRESET_PSYCHOTIC = {EAX_ENVIRONMENT_PSYCHOTIC, 0.486F, 7.563F, 0.806F};
  283. } // namespace
  284. const Eax1ReverbPresets EAX1REVERB_PRESETS{{
  285. EAX1REVERB_PRESET_GENERIC,
  286. EAX1REVERB_PRESET_PADDEDCELL,
  287. EAX1REVERB_PRESET_ROOM,
  288. EAX1REVERB_PRESET_BATHROOM,
  289. EAX1REVERB_PRESET_LIVINGROOM,
  290. EAX1REVERB_PRESET_STONEROOM,
  291. EAX1REVERB_PRESET_AUDITORIUM,
  292. EAX1REVERB_PRESET_CONCERTHALL,
  293. EAX1REVERB_PRESET_CAVE,
  294. EAX1REVERB_PRESET_ARENA,
  295. EAX1REVERB_PRESET_HANGAR,
  296. EAX1REVERB_PRESET_CARPETTEDHALLWAY,
  297. EAX1REVERB_PRESET_HALLWAY,
  298. EAX1REVERB_PRESET_STONECORRIDOR,
  299. EAX1REVERB_PRESET_ALLEY,
  300. EAX1REVERB_PRESET_FOREST,
  301. EAX1REVERB_PRESET_CITY,
  302. EAX1REVERB_PRESET_MOUNTAINS,
  303. EAX1REVERB_PRESET_QUARRY,
  304. EAX1REVERB_PRESET_PLAIN,
  305. EAX1REVERB_PRESET_PARKINGLOT,
  306. EAX1REVERB_PRESET_SEWERPIPE,
  307. EAX1REVERB_PRESET_UNDERWATER,
  308. EAX1REVERB_PRESET_DRUGGED,
  309. EAX1REVERB_PRESET_DIZZY,
  310. EAX1REVERB_PRESET_PSYCHOTIC,
  311. }};
  312. // EAX2 =====================================================================
  313. namespace {
  314. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_GENERIC{
  315. EAX2LISTENER_DEFAULTROOM,
  316. EAX2LISTENER_DEFAULTROOMHF,
  317. EAX2LISTENER_DEFAULTROOMROLLOFFFACTOR,
  318. EAX2LISTENER_DEFAULTDECAYTIME,
  319. EAX2LISTENER_DEFAULTDECAYHFRATIO,
  320. EAX2LISTENER_DEFAULTREFLECTIONS,
  321. EAX2LISTENER_DEFAULTREFLECTIONSDELAY,
  322. EAX2LISTENER_DEFAULTREVERB,
  323. EAX2LISTENER_DEFAULTREVERBDELAY,
  324. EAX2LISTENER_DEFAULTENVIRONMENT,
  325. EAX2LISTENER_DEFAULTENVIRONMENTSIZE,
  326. EAX2LISTENER_DEFAULTENVIRONMENTDIFFUSION,
  327. EAX2LISTENER_DEFAULTAIRABSORPTIONHF,
  328. EAX2LISTENER_DEFAULTFLAGS,
  329. };
  330. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_PADDEDCELL{
  331. -1'000L,
  332. -6'000L,
  333. 0.0F,
  334. 0.17F,
  335. 0.1F,
  336. -1'204L,
  337. 0.001F,
  338. 207L,
  339. 0.002F,
  340. EAX2_ENVIRONMENT_PADDEDCELL,
  341. 1.4F,
  342. 1.0F,
  343. -5.0F,
  344. EAX2LISTENER_DEFAULTFLAGS,
  345. };
  346. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_ROOM{
  347. -1'000L,
  348. -454L,
  349. 0.0F,
  350. 0.4F,
  351. 0.83F,
  352. -1'646L,
  353. 0.002F,
  354. 53L,
  355. 0.003F,
  356. EAX2_ENVIRONMENT_ROOM,
  357. 1.9F,
  358. 1.0F,
  359. -5.0F,
  360. EAX2LISTENER_DEFAULTFLAGS,
  361. };
  362. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_BATHROOM{
  363. -1'000L,
  364. -1'200L,
  365. 0.0F,
  366. 1.49F,
  367. 0.54F,
  368. -370L,
  369. 0.007F,
  370. 1'030L,
  371. 0.011F,
  372. EAX2_ENVIRONMENT_BATHROOM,
  373. 1.4F,
  374. 1.0F,
  375. -5.0F,
  376. EAX2LISTENER_DEFAULTFLAGS,
  377. };
  378. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_LIVINGROOM{
  379. -1'000L,
  380. -6'000L,
  381. 0.0F,
  382. 0.5F,
  383. 0.1F,
  384. -1'376L,
  385. 0.003F,
  386. -1'104L,
  387. 0.004F,
  388. EAX2_ENVIRONMENT_LIVINGROOM,
  389. 2.5F,
  390. 1.0F,
  391. -5.0F,
  392. EAX2LISTENER_DEFAULTFLAGS,
  393. };
  394. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_STONEROOM{
  395. -1'000L,
  396. -300L,
  397. 0.0F,
  398. 2.31F,
  399. 0.64F,
  400. -711L,
  401. 0.012F,
  402. 83L,
  403. 0.017F,
  404. EAX2_ENVIRONMENT_STONEROOM,
  405. 11.6F,
  406. 1.0F,
  407. -5.0F,
  408. EAX2LISTENER_DEFAULTFLAGS,
  409. };
  410. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_AUDITORIUM{
  411. -1'000L,
  412. -476L,
  413. 0.0F,
  414. 4.32F,
  415. 0.59F,
  416. -789L,
  417. 0.02F,
  418. -289L,
  419. 0.03F,
  420. EAX2_ENVIRONMENT_AUDITORIUM,
  421. 21.6F,
  422. 1.0F,
  423. -5.0F,
  424. EAX2LISTENER_DEFAULTFLAGS,
  425. };
  426. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_CONCERTHALL{
  427. -1'000L,
  428. -500L,
  429. 0.0F,
  430. 3.92F,
  431. 0.7F,
  432. -1'230L,
  433. 0.02F,
  434. -2L,
  435. 0.029F,
  436. EAX2_ENVIRONMENT_CONCERTHALL,
  437. 19.6F,
  438. 1.0F,
  439. -5.0F,
  440. EAX2LISTENER_DEFAULTFLAGS,
  441. };
  442. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_CAVE{
  443. -1'000L,
  444. 0L,
  445. 0.0F,
  446. 2.91F,
  447. 1.3F,
  448. -602L,
  449. 0.015F,
  450. -302L,
  451. 0.022F,
  452. EAX2_ENVIRONMENT_CAVE,
  453. 14.6F,
  454. 1.0F,
  455. -5.0F,
  456. EAX2LISTENERFLAGS_DECAYTIMESCALE |
  457. EAX2LISTENERFLAGS_REFLECTIONSSCALE |
  458. EAX2LISTENERFLAGS_REFLECTIONSDELAYSCALE |
  459. EAX2LISTENERFLAGS_REVERBSCALE |
  460. EAX2LISTENERFLAGS_REVERBDELAYSCALE,
  461. };
  462. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_ARENA{
  463. -1'000L,
  464. -698L,
  465. 0.0F,
  466. 7.24F,
  467. 0.33F,
  468. -1'166L,
  469. 0.02F,
  470. 16L,
  471. 0.03F,
  472. EAX2_ENVIRONMENT_ARENA,
  473. 36.2F,
  474. 1.0F,
  475. -5.0F,
  476. EAX2LISTENER_DEFAULTFLAGS,
  477. };
  478. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_HANGAR{
  479. -1'000L,
  480. -1'000L,
  481. 0.0F,
  482. 10.05F,
  483. 0.23F,
  484. -602L,
  485. 0.02F,
  486. 198L,
  487. 0.03F,
  488. EAX2_ENVIRONMENT_HANGAR,
  489. 50.3F,
  490. 1.0F,
  491. -5.0F,
  492. EAX2LISTENER_DEFAULTFLAGS,
  493. };
  494. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_CARPETTEDHALLWAY{
  495. -1'000L,
  496. -4'000L,
  497. 0.0F,
  498. 0.3F,
  499. 0.1F,
  500. -1'831L,
  501. 0.002F,
  502. -1'630L,
  503. 0.03F,
  504. EAX2_ENVIRONMENT_CARPETEDHALLWAY,
  505. 1.9F,
  506. 1.0F,
  507. -5.0F,
  508. EAX2LISTENER_DEFAULTFLAGS,
  509. };
  510. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_HALLWAY{
  511. -1'000L,
  512. -300L,
  513. 0.0F,
  514. 1.49F,
  515. 0.59F,
  516. -1'219L,
  517. 0.007F,
  518. 441L,
  519. 0.011F,
  520. EAX2_ENVIRONMENT_HALLWAY,
  521. 1.8F,
  522. 1.0F,
  523. -5.0F,
  524. EAX2LISTENER_DEFAULTFLAGS,
  525. };
  526. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_STONECORRIDOR{
  527. -1'000L,
  528. -237L,
  529. 0.0F,
  530. 2.7F,
  531. 0.79F,
  532. -1'214L,
  533. 0.013F,
  534. 395L,
  535. 0.02F,
  536. EAX2_ENVIRONMENT_STONECORRIDOR,
  537. 13.5F,
  538. 1.0F,
  539. -5.0F,
  540. EAX2LISTENER_DEFAULTFLAGS,
  541. };
  542. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_ALLEY{
  543. -1'000L,
  544. -270L,
  545. 0.0F,
  546. 1.49F,
  547. 0.86F,
  548. -1'204L,
  549. 0.007F,
  550. -4L,
  551. 0.011F,
  552. EAX2_ENVIRONMENT_ALLEY,
  553. 7.5F,
  554. 0.3F,
  555. -5.0F,
  556. EAX2LISTENER_DEFAULTFLAGS,
  557. };
  558. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_FOREST{
  559. -1'000L,
  560. -3'300L,
  561. 0.0F,
  562. 1.49F,
  563. 0.54F,
  564. -2'560L,
  565. 0.162F,
  566. -229L,
  567. 0.088F,
  568. EAX2_ENVIRONMENT_FOREST,
  569. 38.0F,
  570. 0.3F,
  571. -5.0F,
  572. EAX2LISTENER_DEFAULTFLAGS,
  573. };
  574. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_CITY{
  575. -1'000L,
  576. -800L,
  577. 0.0F,
  578. 1.49F,
  579. 0.67F,
  580. -2'273L,
  581. 0.007F,
  582. -1'691L,
  583. 0.011F,
  584. EAX2_ENVIRONMENT_CITY,
  585. 7.5F,
  586. 0.5F,
  587. -5.0F,
  588. EAX2LISTENER_DEFAULTFLAGS,
  589. };
  590. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_MOUNTAINS{
  591. -1'000L,
  592. -2'500L,
  593. 0.0F,
  594. 1.49F,
  595. 0.21F,
  596. -2'780L,
  597. 0.3F,
  598. -1'434L,
  599. 0.1F,
  600. EAX2_ENVIRONMENT_MOUNTAINS,
  601. 100.0F,
  602. 0.27F,
  603. -5.0F,
  604. EAX2LISTENERFLAGS_DECAYTIMESCALE |
  605. EAX2LISTENERFLAGS_REFLECTIONSSCALE |
  606. EAX2LISTENERFLAGS_REFLECTIONSDELAYSCALE |
  607. EAX2LISTENERFLAGS_REVERBSCALE |
  608. EAX2LISTENERFLAGS_REVERBDELAYSCALE,
  609. };
  610. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_QUARRY{
  611. -1'000L,
  612. -1'000L,
  613. 0.0F,
  614. 1.49F,
  615. 0.83F,
  616. -10'000L,
  617. 0.061F,
  618. 500L,
  619. 0.025F,
  620. EAX2_ENVIRONMENT_QUARRY,
  621. 17.5F,
  622. 1.0F,
  623. -5.0F,
  624. EAX2LISTENER_DEFAULTFLAGS,
  625. };
  626. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_PLAIN{
  627. -1'000L,
  628. -2'000L,
  629. 0.0F,
  630. 1.49F,
  631. 0.5F,
  632. -2'466L,
  633. 0.179F,
  634. -1'926L,
  635. 0.1F,
  636. EAX2_ENVIRONMENT_PLAIN,
  637. 42.5F,
  638. 0.21F,
  639. -5.0F,
  640. EAX2LISTENER_DEFAULTFLAGS,
  641. };
  642. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_PARKINGLOT{
  643. -1'000L,
  644. 0L,
  645. 0.0F,
  646. 1.65F,
  647. 1.5F,
  648. -1'363L,
  649. 0.008F,
  650. -1'153L,
  651. 0.012F,
  652. EAX2_ENVIRONMENT_PARKINGLOT,
  653. 8.3F,
  654. 1.0F,
  655. -5.0F,
  656. EAX2LISTENERFLAGS_DECAYTIMESCALE |
  657. EAX2LISTENERFLAGS_REFLECTIONSSCALE |
  658. EAX2LISTENERFLAGS_REFLECTIONSDELAYSCALE |
  659. EAX2LISTENERFLAGS_REVERBSCALE |
  660. EAX2LISTENERFLAGS_REVERBDELAYSCALE,
  661. };
  662. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_SEWERPIPE{
  663. -1'000L,
  664. -1'000L,
  665. 0.0F,
  666. 2.81F,
  667. 0.14F,
  668. 429L,
  669. 0.014F,
  670. 1'023L,
  671. 0.021F,
  672. EAX2_ENVIRONMENT_SEWERPIPE,
  673. 1.7F,
  674. 0.8F,
  675. -5.0F,
  676. EAX2LISTENER_DEFAULTFLAGS,
  677. };
  678. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_UNDERWATER{
  679. -1'000L,
  680. -4'000L,
  681. 0.0F,
  682. 1.49F,
  683. 0.1F,
  684. -449L,
  685. 0.007F,
  686. 1'700L,
  687. 0.011F,
  688. EAX2_ENVIRONMENT_UNDERWATER,
  689. 1.8F,
  690. 1.0F,
  691. -5.0F,
  692. EAX2LISTENER_DEFAULTFLAGS,
  693. };
  694. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_DRUGGED{
  695. -1'000L,
  696. 0L,
  697. 0.0F,
  698. 8.39F,
  699. 1.39F,
  700. -115L,
  701. 0.002F,
  702. 985L,
  703. 0.03F,
  704. EAX2_ENVIRONMENT_DRUGGED,
  705. 1.9F,
  706. 0.5F,
  707. -5.0F,
  708. EAX2LISTENERFLAGS_DECAYTIMESCALE |
  709. EAX2LISTENERFLAGS_REFLECTIONSSCALE |
  710. EAX2LISTENERFLAGS_REFLECTIONSDELAYSCALE |
  711. EAX2LISTENERFLAGS_REVERBSCALE |
  712. EAX2LISTENERFLAGS_REVERBDELAYSCALE,
  713. };
  714. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_DIZZY{
  715. -1'000L,
  716. -400L,
  717. 0.0F,
  718. 17.23F,
  719. 0.56F,
  720. -1'713L,
  721. 0.02F,
  722. -613L,
  723. 0.03F,
  724. EAX2_ENVIRONMENT_DIZZY,
  725. 1.8F,
  726. 0.6F,
  727. -5.0F,
  728. EAX2LISTENERFLAGS_DECAYTIMESCALE |
  729. EAX2LISTENERFLAGS_REFLECTIONSSCALE |
  730. EAX2LISTENERFLAGS_REFLECTIONSDELAYSCALE |
  731. EAX2LISTENERFLAGS_REVERBSCALE |
  732. EAX2LISTENERFLAGS_REVERBDELAYSCALE,
  733. };
  734. constexpr EAX20LISTENERPROPERTIES EAX2REVERB_PRESET_PSYCHOTIC{
  735. -1'000L,
  736. -151L,
  737. 0.0F,
  738. 7.56F,
  739. 0.91F,
  740. -626L,
  741. 0.02F,
  742. 774L,
  743. 0.03F,
  744. EAX2_ENVIRONMENT_PSYCHOTIC,
  745. 1.0F,
  746. 0.5F,
  747. -5.0F,
  748. EAX2LISTENERFLAGS_DECAYTIMESCALE |
  749. EAX2LISTENERFLAGS_REFLECTIONSSCALE |
  750. EAX2LISTENERFLAGS_REFLECTIONSDELAYSCALE |
  751. EAX2LISTENERFLAGS_REVERBSCALE |
  752. EAX2LISTENERFLAGS_REVERBDELAYSCALE,
  753. };
  754. } // namespace
  755. const Eax2ReverbPresets EAX2REVERB_PRESETS{
  756. EAX2REVERB_PRESET_GENERIC,
  757. EAX2REVERB_PRESET_PADDEDCELL,
  758. EAX2REVERB_PRESET_ROOM,
  759. EAX2REVERB_PRESET_BATHROOM,
  760. EAX2REVERB_PRESET_LIVINGROOM,
  761. EAX2REVERB_PRESET_STONEROOM,
  762. EAX2REVERB_PRESET_AUDITORIUM,
  763. EAX2REVERB_PRESET_CONCERTHALL,
  764. EAX2REVERB_PRESET_CAVE,
  765. EAX2REVERB_PRESET_ARENA,
  766. EAX2REVERB_PRESET_HANGAR,
  767. EAX2REVERB_PRESET_CARPETTEDHALLWAY,
  768. EAX2REVERB_PRESET_HALLWAY,
  769. EAX2REVERB_PRESET_STONECORRIDOR,
  770. EAX2REVERB_PRESET_ALLEY,
  771. EAX2REVERB_PRESET_FOREST,
  772. EAX2REVERB_PRESET_CITY,
  773. EAX2REVERB_PRESET_MOUNTAINS,
  774. EAX2REVERB_PRESET_QUARRY,
  775. EAX2REVERB_PRESET_PLAIN,
  776. EAX2REVERB_PRESET_PARKINGLOT,
  777. EAX2REVERB_PRESET_SEWERPIPE,
  778. EAX2REVERB_PRESET_UNDERWATER,
  779. EAX2REVERB_PRESET_DRUGGED,
  780. EAX2REVERB_PRESET_DIZZY,
  781. EAX2REVERB_PRESET_PSYCHOTIC,
  782. };
  783. // EAX3+ ====================================================================
  784. namespace {
  785. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_GENERIC =
  786. {
  787. EAXREVERB_DEFAULTENVIRONMENT,
  788. EAXREVERB_DEFAULTENVIRONMENTSIZE,
  789. EAXREVERB_DEFAULTENVIRONMENTDIFFUSION,
  790. EAXREVERB_DEFAULTROOM,
  791. EAXREVERB_DEFAULTROOMHF,
  792. EAXREVERB_DEFAULTROOMLF,
  793. EAXREVERB_DEFAULTDECAYTIME,
  794. EAXREVERB_DEFAULTDECAYHFRATIO,
  795. EAXREVERB_DEFAULTDECAYLFRATIO,
  796. EAXREVERB_DEFAULTREFLECTIONS,
  797. EAXREVERB_DEFAULTREFLECTIONSDELAY,
  798. EAXREVERB_DEFAULTREFLECTIONSPAN,
  799. EAXREVERB_DEFAULTREVERB,
  800. EAXREVERB_DEFAULTREVERBDELAY,
  801. EAXREVERB_DEFAULTREVERBPAN,
  802. EAXREVERB_DEFAULTECHOTIME,
  803. EAXREVERB_DEFAULTECHODEPTH,
  804. EAXREVERB_DEFAULTMODULATIONTIME,
  805. EAXREVERB_DEFAULTMODULATIONDEPTH,
  806. EAXREVERB_DEFAULTAIRABSORPTIONHF,
  807. EAXREVERB_DEFAULTHFREFERENCE,
  808. EAXREVERB_DEFAULTLFREFERENCE,
  809. EAXREVERB_DEFAULTROOMROLLOFFFACTOR,
  810. EAXREVERB_DEFAULTFLAGS,
  811. };
  812. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_PADDEDCELL =
  813. {
  814. EAX_ENVIRONMENT_PADDEDCELL,
  815. 1.4F,
  816. 1.0F,
  817. -1'000L,
  818. -6'000L,
  819. 0L,
  820. 0.17F,
  821. 0.10F,
  822. 1.0F,
  823. -1'204L,
  824. 0.001F,
  825. EAXVECTOR{},
  826. 207L,
  827. 0.002F,
  828. EAXVECTOR{},
  829. 0.250F,
  830. 0.0F,
  831. 0.250F,
  832. 0.0F,
  833. -5.0F,
  834. 5'000.0F,
  835. 250.0F,
  836. 0.0F,
  837. 0x3FUL,
  838. };
  839. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_ROOM =
  840. {
  841. EAX_ENVIRONMENT_ROOM,
  842. 1.9F,
  843. 1.0F,
  844. -1'000L,
  845. -454L,
  846. 0L,
  847. 0.40F,
  848. 0.83F,
  849. 1.0F,
  850. -1'646L,
  851. 0.002F,
  852. EAXVECTOR{},
  853. 53L,
  854. 0.003F,
  855. EAXVECTOR{},
  856. 0.250F,
  857. 0.0F,
  858. 0.250F,
  859. 0.0F,
  860. -5.0F,
  861. 5'000.0F,
  862. 250.0F,
  863. 0.0F,
  864. 0x3FUL,
  865. };
  866. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_BATHROOM =
  867. {
  868. EAX_ENVIRONMENT_BATHROOM,
  869. 1.4F,
  870. 1.0F,
  871. -1'000L,
  872. -1'200L,
  873. 0L,
  874. 1.49F,
  875. 0.54F,
  876. 1.0F,
  877. -370L,
  878. 0.007F,
  879. EAXVECTOR{},
  880. 1'030L,
  881. 0.011F,
  882. EAXVECTOR{},
  883. 0.250F,
  884. 0.0F,
  885. 0.250F,
  886. 0.0F,
  887. -5.0F,
  888. 5'000.0F,
  889. 250.0F,
  890. 0.0F,
  891. 0x3FUL,
  892. };
  893. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_LIVINGROOM =
  894. {
  895. EAX_ENVIRONMENT_LIVINGROOM,
  896. 2.5F,
  897. 1.0F,
  898. -1'000L,
  899. -6'000L,
  900. 0L,
  901. 0.50F,
  902. 0.10F,
  903. 1.0F,
  904. -1'376,
  905. 0.003F,
  906. EAXVECTOR{},
  907. -1'104L,
  908. 0.004F,
  909. EAXVECTOR{},
  910. 0.250F,
  911. 0.0F,
  912. 0.250F,
  913. 0.0F,
  914. -5.0F,
  915. 5'000.0F,
  916. 250.0F,
  917. 0.0F,
  918. 0x3FUL,
  919. };
  920. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_STONEROOM =
  921. {
  922. EAX_ENVIRONMENT_STONEROOM,
  923. 11.6F,
  924. 1.0F,
  925. -1'000L,
  926. -300L,
  927. 0L,
  928. 2.31F,
  929. 0.64F,
  930. 1.0F,
  931. -711L,
  932. 0.012F,
  933. EAXVECTOR{},
  934. 83L,
  935. 0.017F,
  936. EAXVECTOR{},
  937. 0.250F,
  938. 0.0F,
  939. 0.250F,
  940. 0.0F,
  941. -5.0F,
  942. 5'000.0F,
  943. 250.0F,
  944. 0.0F,
  945. 0x3FUL,
  946. };
  947. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_AUDITORIUM =
  948. {
  949. EAX_ENVIRONMENT_AUDITORIUM,
  950. 21.6F,
  951. 1.0F,
  952. -1'000L,
  953. -476L,
  954. 0L,
  955. 4.32F,
  956. 0.59F,
  957. 1.0F,
  958. -789L,
  959. 0.020F,
  960. EAXVECTOR{},
  961. -289L,
  962. 0.030F,
  963. EAXVECTOR{},
  964. 0.250F,
  965. 0.0F,
  966. 0.250F,
  967. 0.0F,
  968. -5.0F,
  969. 5'000.0F,
  970. 250.0F,
  971. 0.0F,
  972. 0x3FUL,
  973. };
  974. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_CONCERTHALL =
  975. {
  976. EAX_ENVIRONMENT_CONCERTHALL,
  977. 19.6F,
  978. 1.0F,
  979. -1'000L,
  980. -500L,
  981. 0L,
  982. 3.92F,
  983. 0.70F,
  984. 1.0F,
  985. -1'230L,
  986. 0.020F,
  987. EAXVECTOR{},
  988. -2L,
  989. 0.029F,
  990. EAXVECTOR{},
  991. 0.250F,
  992. 0.0F,
  993. 0.250F,
  994. 0.0F,
  995. -5.0F,
  996. 5'000.0F,
  997. 250.0F,
  998. 0.0F,
  999. 0x3FUL,
  1000. };
  1001. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_CAVE =
  1002. {
  1003. EAX_ENVIRONMENT_CAVE,
  1004. 14.6F,
  1005. 1.0F,
  1006. -1'000L,
  1007. 0L,
  1008. 0L,
  1009. 2.91F,
  1010. 1.30F,
  1011. 1.0F,
  1012. -602L,
  1013. 0.015F,
  1014. EAXVECTOR{},
  1015. -302L,
  1016. 0.022F,
  1017. EAXVECTOR{},
  1018. 0.250F,
  1019. 0.0F,
  1020. 0.250F,
  1021. 0.0F,
  1022. -5.0F,
  1023. 5'000.0F,
  1024. 250.0F,
  1025. 0.0F,
  1026. 0x1FUL,
  1027. };
  1028. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_ARENA =
  1029. {
  1030. EAX_ENVIRONMENT_ARENA,
  1031. 36.2F,
  1032. 1.0F,
  1033. -1'000L,
  1034. -698L,
  1035. 0L,
  1036. 7.24F,
  1037. 0.33F,
  1038. 1.0F,
  1039. -1'166L,
  1040. 0.020F,
  1041. EAXVECTOR{},
  1042. 16L,
  1043. 0.030F,
  1044. EAXVECTOR{},
  1045. 0.250F,
  1046. 0.0F,
  1047. 0.250F,
  1048. 0.0F,
  1049. -5.0F,
  1050. 5'000.0F,
  1051. 250.0F,
  1052. 0.0F,
  1053. 0x3FUL,
  1054. };
  1055. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_HANGAR =
  1056. {
  1057. EAX_ENVIRONMENT_HANGAR,
  1058. 50.3F,
  1059. 1.0F,
  1060. -1'000L,
  1061. -1'000L,
  1062. 0L,
  1063. 10.05F,
  1064. 0.23F,
  1065. 1.0F,
  1066. -602L,
  1067. 0.020F,
  1068. EAXVECTOR{},
  1069. 198L,
  1070. 0.030F,
  1071. EAXVECTOR{},
  1072. 0.250F,
  1073. 0.0F,
  1074. 0.250F,
  1075. 0.0F,
  1076. -5.0F,
  1077. 5'000.0F,
  1078. 250.0F,
  1079. 0.0F,
  1080. 0x3FUL,
  1081. };
  1082. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_CARPETTEDHALLWAY =
  1083. {
  1084. EAX_ENVIRONMENT_CARPETEDHALLWAY,
  1085. 1.9F,
  1086. 1.0F,
  1087. -1'000L,
  1088. -4'000L,
  1089. 0L,
  1090. 0.30F,
  1091. 0.10F,
  1092. 1.0F,
  1093. -1'831L,
  1094. 0.002F,
  1095. EAXVECTOR{},
  1096. -1'630L,
  1097. 0.030F,
  1098. EAXVECTOR{},
  1099. 0.250F,
  1100. 0.0F,
  1101. 0.250F,
  1102. 0.0F,
  1103. -5.0F,
  1104. 5'000.0F,
  1105. 250.0F,
  1106. 0.0F,
  1107. 0x3FUL,
  1108. };
  1109. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_HALLWAY =
  1110. {
  1111. EAX_ENVIRONMENT_HALLWAY,
  1112. 1.8F,
  1113. 1.0F,
  1114. -1'000L,
  1115. -300L,
  1116. 0L,
  1117. 1.49F,
  1118. 0.59F,
  1119. 1.0F,
  1120. -1'219L,
  1121. 0.007F,
  1122. EAXVECTOR{},
  1123. 441L,
  1124. 0.011F,
  1125. EAXVECTOR{},
  1126. 0.250F,
  1127. 0.0F,
  1128. 0.250F,
  1129. 0.0F,
  1130. -5.0F,
  1131. 5'000.0F,
  1132. 250.0F,
  1133. 0.0F,
  1134. 0x3FUL,
  1135. };
  1136. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_STONECORRIDOR =
  1137. {
  1138. EAX_ENVIRONMENT_STONECORRIDOR,
  1139. 13.5F,
  1140. 1.0F,
  1141. -1'000L,
  1142. -237L,
  1143. 0L,
  1144. 2.70F,
  1145. 0.79F,
  1146. 1.0F,
  1147. -1'214L,
  1148. 0.013F,
  1149. EAXVECTOR{},
  1150. 395L,
  1151. 0.020F,
  1152. EAXVECTOR{},
  1153. 0.250F,
  1154. 0.0F,
  1155. 0.250F,
  1156. 0.0F,
  1157. -5.0F,
  1158. 5'000.0F,
  1159. 250.0F,
  1160. 0.0F,
  1161. 0x3FUL,
  1162. };
  1163. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_ALLEY =
  1164. {
  1165. EAX_ENVIRONMENT_ALLEY,
  1166. 7.5F,
  1167. 0.300F,
  1168. -1'000L,
  1169. -270L,
  1170. 0L,
  1171. 1.49F,
  1172. 0.86F,
  1173. 1.0F,
  1174. -1'204L,
  1175. 0.007F,
  1176. EAXVECTOR{},
  1177. -4L,
  1178. 0.011F,
  1179. EAXVECTOR{},
  1180. 0.125F,
  1181. 0.950F,
  1182. 0.250F,
  1183. 0.0F,
  1184. -5.0F,
  1185. 5'000.0F,
  1186. 250.0F,
  1187. 0.0F,
  1188. 0x3FUL,
  1189. };
  1190. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_FOREST =
  1191. {
  1192. EAX_ENVIRONMENT_FOREST,
  1193. 38.0F,
  1194. 0.300F,
  1195. -1'000L,
  1196. -3'300L,
  1197. 0L,
  1198. 1.49F,
  1199. 0.54F,
  1200. 1.0F,
  1201. -2'560L,
  1202. 0.162F,
  1203. EAXVECTOR{},
  1204. -229L,
  1205. 0.088F,
  1206. EAXVECTOR{},
  1207. 0.125F,
  1208. 1.0F,
  1209. 0.250F,
  1210. 0.0F,
  1211. -5.0F,
  1212. 5'000.0F,
  1213. 250.0F,
  1214. 0.0F,
  1215. 0x3FUL,
  1216. };
  1217. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_CITY =
  1218. {
  1219. EAX_ENVIRONMENT_CITY,
  1220. 7.5F,
  1221. 0.500F,
  1222. -1'000L,
  1223. -800L,
  1224. 0L,
  1225. 1.49F,
  1226. 0.67F,
  1227. 1.0F,
  1228. -2'273L,
  1229. 0.007F,
  1230. EAXVECTOR{},
  1231. -1'691L,
  1232. 0.011F,
  1233. EAXVECTOR{},
  1234. 0.250F,
  1235. 0.0F,
  1236. 0.250F,
  1237. 0.0F,
  1238. -5.0F,
  1239. 5'000.0F,
  1240. 250.0F,
  1241. 0.0F,
  1242. 0x3FUL,
  1243. };
  1244. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_MOUNTAINS =
  1245. {
  1246. EAX_ENVIRONMENT_MOUNTAINS,
  1247. 100.0F,
  1248. 0.270F,
  1249. -1'000L,
  1250. -2'500L,
  1251. 0L,
  1252. 1.49F,
  1253. 0.21F,
  1254. 1.0F,
  1255. -2'780L,
  1256. 0.300F,
  1257. EAXVECTOR{},
  1258. -1'434L,
  1259. 0.100F,
  1260. EAXVECTOR{},
  1261. 0.250F,
  1262. 1.0F,
  1263. 0.250F,
  1264. 0.0F,
  1265. -5.0F,
  1266. 5'000.0F,
  1267. 250.0F,
  1268. 0.0F,
  1269. 0x1FUL,
  1270. };
  1271. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_QUARRY =
  1272. {
  1273. EAX_ENVIRONMENT_QUARRY,
  1274. 17.5F,
  1275. 1.0F,
  1276. -1'000L,
  1277. -1'000L,
  1278. 0L,
  1279. 1.49F,
  1280. 0.83F,
  1281. 1.0F,
  1282. -10'000L,
  1283. 0.061F,
  1284. EAXVECTOR{},
  1285. 500L,
  1286. 0.025F,
  1287. EAXVECTOR{},
  1288. 0.125F,
  1289. 0.700F,
  1290. 0.250F,
  1291. 0.0F,
  1292. -5.0F,
  1293. 5'000.0F,
  1294. 250.0F,
  1295. 0.0F,
  1296. 0x3FUL,
  1297. };
  1298. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_PLAIN =
  1299. {
  1300. EAX_ENVIRONMENT_PLAIN,
  1301. 42.5F,
  1302. 0.210F,
  1303. -1'000L,
  1304. -2'000L,
  1305. 0L,
  1306. 1.49F,
  1307. 0.50F,
  1308. 1.0F,
  1309. -2'466L,
  1310. 0.179F,
  1311. EAXVECTOR{},
  1312. -1'926L,
  1313. 0.100F,
  1314. EAXVECTOR{},
  1315. 0.250F,
  1316. 1.0F,
  1317. 0.250F,
  1318. 0.0F,
  1319. -5.0F,
  1320. 5'000.0F,
  1321. 250.0F,
  1322. 0.0F,
  1323. 0x3FUL,
  1324. };
  1325. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_PARKINGLOT =
  1326. {
  1327. EAX_ENVIRONMENT_PARKINGLOT,
  1328. 8.3F,
  1329. 1.0F,
  1330. -1'000L,
  1331. 0L,
  1332. 0L,
  1333. 1.65F,
  1334. 1.50F,
  1335. 1.0F,
  1336. -1'363L,
  1337. 0.008F,
  1338. EAXVECTOR{},
  1339. -1'153L,
  1340. 0.012F,
  1341. EAXVECTOR{},
  1342. 0.250F,
  1343. 0.0F,
  1344. 0.250F,
  1345. 0.0F,
  1346. -5.0F,
  1347. 5'000.0F,
  1348. 250.0F,
  1349. 0.0F,
  1350. 0x1FUL,
  1351. };
  1352. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_SEWERPIPE =
  1353. {
  1354. EAX_ENVIRONMENT_SEWERPIPE,
  1355. 1.7F,
  1356. 0.800F,
  1357. -1'000L,
  1358. -1'000L,
  1359. 0L,
  1360. 2.81F,
  1361. 0.14F,
  1362. 1.0F,
  1363. 429L,
  1364. 0.014F,
  1365. EAXVECTOR{},
  1366. 1'023L,
  1367. 0.021F,
  1368. EAXVECTOR{},
  1369. 0.250F,
  1370. 0.0F,
  1371. 0.250F,
  1372. 0.0F,
  1373. -5.0F,
  1374. 5'000.0F,
  1375. 250.0F,
  1376. 0.0F,
  1377. 0x3FUL,
  1378. };
  1379. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_UNDERWATER =
  1380. {
  1381. EAX_ENVIRONMENT_UNDERWATER,
  1382. 1.8F,
  1383. 1.0F,
  1384. -1'000L,
  1385. -4'000L,
  1386. 0L,
  1387. 1.49F,
  1388. 0.10F,
  1389. 1.0F,
  1390. -449L,
  1391. 0.007F,
  1392. EAXVECTOR{},
  1393. 1'700L,
  1394. 0.011F,
  1395. EAXVECTOR{},
  1396. 0.250F,
  1397. 0.0F,
  1398. 1.180F,
  1399. 0.348F,
  1400. -5.0F,
  1401. 5'000.0F,
  1402. 250.0F,
  1403. 0.0F,
  1404. 0x3FUL,
  1405. };
  1406. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_DRUGGED =
  1407. {
  1408. EAX_ENVIRONMENT_DRUGGED,
  1409. 1.9F,
  1410. 0.500F,
  1411. -1'000L,
  1412. 0L,
  1413. 0L,
  1414. 8.39F,
  1415. 1.39F,
  1416. 1.0F,
  1417. -115L,
  1418. 0.002F,
  1419. EAXVECTOR{},
  1420. 985L,
  1421. 0.030F,
  1422. EAXVECTOR{},
  1423. 0.250F,
  1424. 0.0F,
  1425. 0.250F,
  1426. 1.0F,
  1427. -5.0F,
  1428. 5'000.0F,
  1429. 250.0F,
  1430. 0.0F,
  1431. 0x1FUL,
  1432. };
  1433. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_DIZZY =
  1434. {
  1435. EAX_ENVIRONMENT_DIZZY,
  1436. 1.8F,
  1437. 0.600F,
  1438. -1'000L,
  1439. -400L,
  1440. 0L,
  1441. 17.23F,
  1442. 0.56F,
  1443. 1.0F,
  1444. -1'713L,
  1445. 0.020F,
  1446. EAXVECTOR{},
  1447. -613L,
  1448. 0.030F,
  1449. EAXVECTOR{},
  1450. 0.250F,
  1451. 1.0F,
  1452. 0.810F,
  1453. 0.310F,
  1454. -5.0F,
  1455. 5'000.0F,
  1456. 250.0F,
  1457. 0.0F,
  1458. 0x1FUL,
  1459. };
  1460. constexpr EAXREVERBPROPERTIES EAXREVERB_PRESET_PSYCHOTIC =
  1461. {
  1462. EAX_ENVIRONMENT_PSYCHOTIC,
  1463. 1.0F,
  1464. 0.500F,
  1465. -1'000L,
  1466. -151L,
  1467. 0L,
  1468. 7.56F,
  1469. 0.91F,
  1470. 1.0F,
  1471. -626L,
  1472. 0.020F,
  1473. EAXVECTOR{},
  1474. 774L,
  1475. 0.030F,
  1476. EAXVECTOR{},
  1477. 0.250F,
  1478. 0.0F,
  1479. 4.0F,
  1480. 1.0F,
  1481. -5.0F,
  1482. 5'000.0F,
  1483. 250.0F,
  1484. 0.0F,
  1485. 0x1FUL,
  1486. };
  1487. } // namespace
  1488. const EaxReverbPresets EAXREVERB_PRESETS{{
  1489. EAXREVERB_PRESET_GENERIC,
  1490. EAXREVERB_PRESET_PADDEDCELL,
  1491. EAXREVERB_PRESET_ROOM,
  1492. EAXREVERB_PRESET_BATHROOM,
  1493. EAXREVERB_PRESET_LIVINGROOM,
  1494. EAXREVERB_PRESET_STONEROOM,
  1495. EAXREVERB_PRESET_AUDITORIUM,
  1496. EAXREVERB_PRESET_CONCERTHALL,
  1497. EAXREVERB_PRESET_CAVE,
  1498. EAXREVERB_PRESET_ARENA,
  1499. EAXREVERB_PRESET_HANGAR,
  1500. EAXREVERB_PRESET_CARPETTEDHALLWAY,
  1501. EAXREVERB_PRESET_HALLWAY,
  1502. EAXREVERB_PRESET_STONECORRIDOR,
  1503. EAXREVERB_PRESET_ALLEY,
  1504. EAXREVERB_PRESET_FOREST,
  1505. EAXREVERB_PRESET_CITY,
  1506. EAXREVERB_PRESET_MOUNTAINS,
  1507. EAXREVERB_PRESET_QUARRY,
  1508. EAXREVERB_PRESET_PLAIN,
  1509. EAXREVERB_PRESET_PARKINGLOT,
  1510. EAXREVERB_PRESET_SEWERPIPE,
  1511. EAXREVERB_PRESET_UNDERWATER,
  1512. EAXREVERB_PRESET_DRUGGED,
  1513. EAXREVERB_PRESET_DIZZY,
  1514. EAXREVERB_PRESET_PSYCHOTIC,
  1515. }};