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