efx.h 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756
  1. #ifndef __efx_h_
  2. #define __efx_h_
  3. /**
  4. * OpenAL cross platform effects extension audio library
  5. * Copyright (C) 2005-2006 by authors.
  6. * This library is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Library General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 2 of the License, or (at your option) any later version.
  10. *
  11. * This library is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * Library General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Library General Public
  17. * License along with this library; if not, write to the
  18. * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  19. * Boston, MA 02111-1307, USA.
  20. * Or go to http://www.gnu.org/copyleft/lgpl.html
  21. */
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. #define ALC_EXT_EFX_NAME "ALC_EXT_EFX"
  26. /**
  27. * Context definitions to be used with alcCreateContext.
  28. * These values must be unique and not conflict with other
  29. * al context values.
  30. */
  31. #define ALC_EFX_MAJOR_VERSION 0x20001
  32. #define ALC_EFX_MINOR_VERSION 0x20002
  33. #define ALC_MAX_AUXILIARY_SENDS 0x20003
  34. /**
  35. * Listener definitions to be used with alListener functions.
  36. * These values must be unique and not conflict with other
  37. * al listener values.
  38. */
  39. #define AL_METERS_PER_UNIT 0x20004
  40. /**
  41. * Source definitions to be used with alSource functions.
  42. * These values must be unique and not conflict with other
  43. * al source values.
  44. */
  45. #define AL_DIRECT_FILTER 0x20005
  46. #define AL_AUXILIARY_SEND_FILTER 0x20006
  47. #define AL_AIR_ABSORPTION_FACTOR 0x20007
  48. #define AL_ROOM_ROLLOFF_FACTOR 0x20008
  49. #define AL_CONE_OUTER_GAINHF 0x20009
  50. #define AL_DIRECT_FILTER_GAINHF_AUTO 0x2000A
  51. #define AL_AUXILIARY_SEND_FILTER_GAIN_AUTO 0x2000B
  52. #define AL_AUXILIARY_SEND_FILTER_GAINHF_AUTO 0x2000C
  53. /**
  54. * Effect object definitions to be used with alEffect functions.
  55. *
  56. * Effect parameter value definitions, ranges, and defaults
  57. * appear farther down in this file.
  58. */
  59. /* Reverb Parameters */
  60. #define AL_REVERB_DENSITY 0x0001
  61. #define AL_REVERB_DIFFUSION 0x0002
  62. #define AL_REVERB_GAIN 0x0003
  63. #define AL_REVERB_GAINHF 0x0004
  64. #define AL_REVERB_DECAY_TIME 0x0005
  65. #define AL_REVERB_DECAY_HFRATIO 0x0006
  66. #define AL_REVERB_REFLECTIONS_GAIN 0x0007
  67. #define AL_REVERB_REFLECTIONS_DELAY 0x0008
  68. #define AL_REVERB_LATE_REVERB_GAIN 0x0009
  69. #define AL_REVERB_LATE_REVERB_DELAY 0x000A
  70. #define AL_REVERB_AIR_ABSORPTION_GAINHF 0x000B
  71. #define AL_REVERB_ROOM_ROLLOFF_FACTOR 0x000C
  72. #define AL_REVERB_DECAY_HFLIMIT 0x000D
  73. /* Chorus Parameters */
  74. #define AL_CHORUS_WAVEFORM 0x0001
  75. #define AL_CHORUS_PHASE 0x0002
  76. #define AL_CHORUS_RATE 0x0003
  77. #define AL_CHORUS_DEPTH 0x0004
  78. #define AL_CHORUS_FEEDBACK 0x0005
  79. #define AL_CHORUS_DELAY 0x0006
  80. /* Distortion Parameters */
  81. #define AL_DISTORTION_EDGE 0x0001
  82. #define AL_DISTORTION_GAIN 0x0002
  83. #define AL_DISTORTION_LOWPASS_CUTOFF 0x0003
  84. #define AL_DISTORTION_EQCENTER 0x0004
  85. #define AL_DISTORTION_EQBANDWIDTH 0x0005
  86. /* Echo Parameters */
  87. #define AL_ECHO_DELAY 0x0001
  88. #define AL_ECHO_LRDELAY 0x0002
  89. #define AL_ECHO_DAMPING 0x0003
  90. #define AL_ECHO_FEEDBACK 0x0004
  91. #define AL_ECHO_SPREAD 0x0005
  92. /* Flanger Parameters */
  93. #define AL_FLANGER_WAVEFORM 0x0001
  94. #define AL_FLANGER_PHASE 0x0002
  95. #define AL_FLANGER_RATE 0x0003
  96. #define AL_FLANGER_DEPTH 0x0004
  97. #define AL_FLANGER_FEEDBACK 0x0005
  98. #define AL_FLANGER_DELAY 0x0006
  99. /* Frequencyshifter Parameters */
  100. #define AL_FREQUENCY_SHIFTER_FREQUENCY 0x0001
  101. #define AL_FREQUENCY_SHIFTER_LEFT_DIRECTION 0x0002
  102. #define AL_FREQUENCY_SHIFTER_RIGHT_DIRECTION 0x0003
  103. /* Vocalmorpher Parameters */
  104. #define AL_VOCAL_MORPHER_PHONEMEA 0x0001
  105. #define AL_VOCAL_MORPHER_PHONEMEA_COARSE_TUNING 0x0002
  106. #define AL_VOCAL_MORPHER_PHONEMEB 0x0003
  107. #define AL_VOCAL_MORPHER_PHONEMEB_COARSE_TUNING 0x0004
  108. #define AL_VOCAL_MORPHER_WAVEFORM 0x0005
  109. #define AL_VOCAL_MORPHER_RATE 0x0006
  110. /* Pitchshifter Parameters */
  111. #define AL_PITCH_SHIFTER_COARSE_TUNE 0x0001
  112. #define AL_PITCH_SHIFTER_FINE_TUNE 0x0002
  113. /* Ringmodulator Parameters */
  114. #define AL_RING_MODULATOR_FREQUENCY 0x0001
  115. #define AL_RING_MODULATOR_HIGHPASS_CUTOFF 0x0002
  116. #define AL_RING_MODULATOR_WAVEFORM 0x0003
  117. /* Autowah Parameters */
  118. #define AL_AUTOWAH_ATTACK_TIME 0x0001
  119. #define AL_AUTOWAH_RELEASE_TIME 0x0002
  120. #define AL_AUTOWAH_RESONANCE 0x0003
  121. #define AL_AUTOWAH_PEAK_GAIN 0x0004
  122. /* Compressor Parameters */
  123. #define AL_COMPRESSOR_ONOFF 0x0001
  124. /* Equalizer Parameters */
  125. #define AL_EQUALIZER_LOW_GAIN 0x0001
  126. #define AL_EQUALIZER_LOW_CUTOFF 0x0002
  127. #define AL_EQUALIZER_MID1_GAIN 0x0003
  128. #define AL_EQUALIZER_MID1_CENTER 0x0004
  129. #define AL_EQUALIZER_MID1_WIDTH 0x0005
  130. #define AL_EQUALIZER_MID2_GAIN 0x0006
  131. #define AL_EQUALIZER_MID2_CENTER 0x0007
  132. #define AL_EQUALIZER_MID2_WIDTH 0x0008
  133. #define AL_EQUALIZER_HIGH_GAIN 0x0009
  134. #define AL_EQUALIZER_HIGH_CUTOFF 0x000A
  135. /* Effect type */
  136. #define AL_EFFECT_FIRST_PARAMETER 0x0000
  137. #define AL_EFFECT_LAST_PARAMETER 0x8000
  138. #define AL_EFFECT_TYPE 0x8001
  139. /* Effect type definitions to be used with AL_EFFECT_TYPE. */
  140. #define AL_EFFECT_NULL 0x0000 /* Can also be used as an Effect Object ID */
  141. #define AL_EFFECT_REVERB 0x0001
  142. #define AL_EFFECT_CHORUS 0x0002
  143. #define AL_EFFECT_DISTORTION 0x0003
  144. #define AL_EFFECT_ECHO 0x0004
  145. #define AL_EFFECT_FLANGER 0x0005
  146. #define AL_EFFECT_FREQUENCY_SHIFTER 0x0006
  147. #define AL_EFFECT_VOCAL_MORPHER 0x0007
  148. #define AL_EFFECT_PITCH_SHIFTER 0x0008
  149. #define AL_EFFECT_RING_MODULATOR 0x0009
  150. #define AL_EFFECT_AUTOWAH 0x000A
  151. #define AL_EFFECT_COMPRESSOR 0x000B
  152. #define AL_EFFECT_EQUALIZER 0x000C
  153. /**
  154. * Auxiliary Slot object definitions to be used with alAuxiliaryEffectSlot functions.
  155. */
  156. #define AL_EFFECTSLOT_EFFECT 0x0001
  157. #define AL_EFFECTSLOT_GAIN 0x0002
  158. #define AL_EFFECTSLOT_AUXILIARY_SEND_AUTO 0x0003
  159. /**
  160. * Value to be used as an Auxiliary Slot ID to disable a source send..
  161. */
  162. #define AL_EFFECTSLOT_NULL 0x0000
  163. /**
  164. * Filter object definitions to be used with alFilter functions.
  165. */
  166. /* Lowpass parameters. */
  167. #define AL_LOWPASS_GAIN 0x0001
  168. #define AL_LOWPASS_GAINHF 0x0002
  169. /* Highpass Parameters */
  170. #define AL_HIGHPASS_GAIN 0x0001
  171. #define AL_HIGHPASS_GAINLF 0x0002
  172. /* Bandpass Parameters */
  173. #define AL_BANDPASS_GAIN 0x0001
  174. #define AL_BANDPASS_GAINLF 0x0002
  175. #define AL_BANDPASS_GAINHF 0x0003
  176. /* Filter type */
  177. #define AL_FILTER_FIRST_PARAMETER 0x0000
  178. #define AL_FILTER_LAST_PARAMETER 0x8000
  179. #define AL_FILTER_TYPE 0x8001
  180. /* Filter type definitions to be used with AL_FILTER_TYPE. */
  181. #define AL_FILTER_NULL 0x0000 /* Can also be used as a Filter Object ID */
  182. #define AL_FILTER_LOWPASS 0x0001
  183. #define AL_FILTER_HIGHPASS 0x0002
  184. #define AL_FILTER_BANDPASS 0x0003
  185. /**
  186. * Effect object functions.
  187. */
  188. /* Create Effect objects. */
  189. typedef void (__cdecl *LPALGENEFFECTS)( ALsizei n, ALuint* effects );
  190. /* Delete Effect objects. */
  191. typedef void (__cdecl *LPALDELETEEFFECTS)( ALsizei n, ALuint* effects );
  192. /* Verify a handle is a valid Effect. */
  193. typedef ALboolean (__cdecl *LPALISEFFECT)( ALuint eid );
  194. /* Set an integer parameter for an Effect object. */
  195. typedef void (__cdecl *LPALEFFECTI)( ALuint eid, ALenum param, ALint value);
  196. typedef void (__cdecl *LPALEFFECTIV)( ALuint eid, ALenum param, ALint* values );
  197. /* Set a floating point parameter for an Effect object. */
  198. typedef void (__cdecl *LPALEFFECTF)( ALuint eid, ALenum param, ALfloat value);
  199. typedef void (__cdecl *LPALEFFECTFV)( ALuint eid, ALenum param, ALfloat* values );
  200. /* Get an integer parameter for an Effect object. */
  201. typedef void (__cdecl *LPALGETEFFECTI)( ALuint eid, ALenum pname, ALint* value );
  202. typedef void (__cdecl *LPALGETEFFECTIV)( ALuint eid, ALenum pname, ALint* values );
  203. /* Get a floating point parameter for an Effect object. */
  204. typedef void (__cdecl *LPALGETEFFECTF)( ALuint eid, ALenum pname, ALfloat* value );
  205. typedef void (__cdecl *LPALGETEFFECTFV)( ALuint eid, ALenum pname, ALfloat* values );
  206. /**
  207. * Filter object functions
  208. */
  209. /* Create Filter objects. */
  210. typedef void (__cdecl *LPALGENFILTERS)( ALsizei n, ALuint* filters );
  211. /* Delete Filter objects. */
  212. typedef void (__cdecl *LPALDELETEFILTERS)( ALsizei n, ALuint* filters );
  213. /* Verify a handle is a valid Filter. */
  214. typedef ALboolean (__cdecl *LPALISFILTER)( ALuint fid );
  215. /* Set an integer parameter for a Filter object. */
  216. typedef void (__cdecl *LPALFILTERI)( ALuint fid, ALenum param, ALint value );
  217. typedef void (__cdecl *LPALFILTERIV)( ALuint fid, ALenum param, ALint* values );
  218. /* Set a floating point parameter for an Filter object. */
  219. typedef void (__cdecl *LPALFILTERF)( ALuint fid, ALenum param, ALfloat value);
  220. typedef void (__cdecl *LPALFILTERFV)( ALuint fid, ALenum param, ALfloat* values );
  221. /* Get an integer parameter for a Filter object. */
  222. typedef void (__cdecl *LPALGETFILTERI)( ALuint fid, ALenum pname, ALint* value );
  223. typedef void (__cdecl *LPALGETFILTERIV)( ALuint fid, ALenum pname, ALint* values );
  224. /* Get a floating point parameter for a Filter object. */
  225. typedef void (__cdecl *LPALGETFILTERF)( ALuint fid, ALenum pname, ALfloat* value );
  226. typedef void (__cdecl *LPALGETFILTERFV)( ALuint fid, ALenum pname, ALfloat* values );
  227. /**
  228. * Auxiliary Slot object functions
  229. */
  230. /* Create Auxiliary Slot objects. */
  231. typedef void (__cdecl *LPALGENAUXILIARYEFFECTSLOTS)( ALsizei n, ALuint* slots );
  232. /* Delete Auxiliary Slot objects. */
  233. typedef void (__cdecl *LPALDELETEAUXILIARYEFFECTSLOTS)( ALsizei n, ALuint* slots );
  234. /* Verify a handle is a valid Auxiliary Slot. */
  235. typedef ALboolean (__cdecl *LPALISAUXILIARYEFFECTSLOT)( ALuint slot );
  236. /* Set an integer parameter for a Auxiliary Slot object. */
  237. typedef void (__cdecl *LPALAUXILIARYEFFECTSLOTI)( ALuint asid, ALenum param, ALint value );
  238. typedef void (__cdecl *LPALAUXILIARYEFFECTSLOTIV)( ALuint asid, ALenum param, ALint* values );
  239. /* Set a floating point parameter for an Auxiliary Slot object. */
  240. typedef void (__cdecl *LPALAUXILIARYEFFECTSLOTF)( ALuint asid, ALenum param, ALfloat value );
  241. typedef void (__cdecl *LPALAUXILIARYEFFECTSLOTFV)( ALuint asid, ALenum param, ALfloat* values );
  242. /* Get an integer parameter for a Auxiliary Slot object. */
  243. typedef void (__cdecl *LPALGETAUXILIARYEFFECTSLOTI)( ALuint asid, ALenum pname, ALint* value );
  244. typedef void (__cdecl *LPALGETAUXILIARYEFFECTSLOTIV)( ALuint asid, ALenum pname, ALint* values );
  245. /* Get a floating point parameter for a Auxiliary Slot object. */
  246. typedef void (__cdecl *LPALGETAUXILIARYEFFECTSLOTF)( ALuint asid, ALenum pname, ALfloat* value );
  247. typedef void (__cdecl *LPALGETAUXILIARYEFFECTSLOTFV)( ALuint asid, ALenum pname, ALfloat* values );
  248. /**********************************************************
  249. * Filter ranges and defaults.
  250. */
  251. /**
  252. * Lowpass filter
  253. */
  254. #define LOWPASS_MIN_GAIN 0.0f
  255. #define LOWPASS_MAX_GAIN 1.0f
  256. #define LOWPASS_DEFAULT_GAIN 1.0f
  257. #define LOWPASS_MIN_GAINHF 0.0f
  258. #define LOWPASS_MAX_GAINHF 1.0f
  259. #define LOWPASS_DEFAULT_GAINHF 1.0f
  260. /**
  261. * Highpass filter
  262. */
  263. #define HIGHPASS_MIN_GAIN 0.0f
  264. #define HIGHPASS_MAX_GAIN 1.0f
  265. #define HIGHPASS_DEFAULT_GAIN 1.0f
  266. #define HIGHPASS_MIN_GAINLF 0.0f
  267. #define HIGHPASS_MAX_GAINLF 1.0f
  268. #define HIGHPASS_DEFAULT_GAINLF 1.0f
  269. /**
  270. * Bandpass filter
  271. */
  272. #define BANDPASS_MIN_GAIN 0.0f
  273. #define BANDPASS_MAX_GAIN 1.0f
  274. #define BANDPASS_DEFAULT_GAIN 1.0f
  275. #define BANDPASS_MIN_GAINHF 0.0f
  276. #define BANDPASS_MAX_GAINHF 1.0f
  277. #define BANDPASS_DEFAULT_GAINHF 1.0f
  278. #define BANDPASS_MIN_GAINLF 0.0f
  279. #define BANDPASS_MAX_GAINLF 1.0f
  280. #define BANDPASS_DEFAULT_GAINLF 1.0f
  281. /**********************************************************
  282. * Effect parameter structures, value definitions, ranges and defaults.
  283. */
  284. /**
  285. * AL reverb effect parameter ranges and defaults
  286. */
  287. #define AL_REVERB_MIN_DENSITY 0.0f
  288. #define AL_REVERB_MAX_DENSITY 1.0f
  289. #define AL_REVERB_DEFAULT_DENSITY 1.0f
  290. #define AL_REVERB_MIN_DIFFUSION 0.0f
  291. #define AL_REVERB_MAX_DIFFUSION 1.0f
  292. #define AL_REVERB_DEFAULT_DIFFUSION 1.0f
  293. #define AL_REVERB_MIN_GAIN 0.0f
  294. #define AL_REVERB_MAX_GAIN 1.0f
  295. #define AL_REVERB_DEFAULT_GAIN 0.32f
  296. #define AL_REVERB_MIN_GAINHF 0.0f
  297. #define AL_REVERB_MAX_GAINHF 1.0f
  298. #define AL_REVERB_DEFAULT_GAINHF 0.89f
  299. #define AL_REVERB_MIN_DECAY_TIME 0.1f
  300. #define AL_REVERB_MAX_DECAY_TIME 20.0f
  301. #define AL_REVERB_DEFAULT_DECAY_TIME 1.49f
  302. #define AL_REVERB_MIN_DECAY_HFRATIO 0.1f
  303. #define AL_REVERB_MAX_DECAY_HFRATIO 2.0f
  304. #define AL_REVERB_DEFAULT_DECAY_HFRATIO 0.83f
  305. #define AL_REVERB_MIN_REFLECTIONS_GAIN 0.0f
  306. #define AL_REVERB_MAX_REFLECTIONS_GAIN 3.16f
  307. #define AL_REVERB_DEFAULT_REFLECTIONS_GAIN 0.05f
  308. #define AL_REVERB_MIN_REFLECTIONS_DELAY 0.0f
  309. #define AL_REVERB_MAX_REFLECTIONS_DELAY 0.3f
  310. #define AL_REVERB_DEFAULT_REFLECTIONS_DELAY 0.007f
  311. #define AL_REVERB_MIN_LATE_REVERB_GAIN 0.0f
  312. #define AL_REVERB_MAX_LATE_REVERB_GAIN 10.0f
  313. #define AL_REVERB_DEFAULT_LATE_REVERB_GAIN 1.26f
  314. #define AL_REVERB_MIN_LATE_REVERB_DELAY 0.0f
  315. #define AL_REVERB_MAX_LATE_REVERB_DELAY 0.1f
  316. #define AL_REVERB_DEFAULT_LATE_REVERB_DELAY 0.011f
  317. #define AL_REVERB_MIN_AIR_ABSORPTION_GAINHF 0.892f
  318. #define AL_REVERB_MAX_AIR_ABSORPTION_GAINHF 1.0f
  319. #define AL_REVERB_DEFAULT_AIR_ABSORPTION_GAINHF 0.994f
  320. #define AL_REVERB_MIN_ROOM_ROLLOFF_FACTOR 0.0f
  321. #define AL_REVERB_MAX_ROOM_ROLLOFF_FACTOR 10.0f
  322. #define AL_REVERB_DEFAULT_ROOM_ROLLOFF_FACTOR 0.0f
  323. #define AL_REVERB_MIN_DECAY_HFLIMIT AL_FALSE
  324. #define AL_REVERB_MAX_DECAY_HFLIMIT AL_TRUE
  325. #define AL_REVERB_DEFAULT_DECAY_HFLIMIT AL_TRUE
  326. /**
  327. * AL chorus effect parameter ranges and defaults
  328. */
  329. #define AL_CHORUS_MIN_WAVEFORM 0
  330. #define AL_CHORUS_MAX_WAVEFORM 1
  331. #define AL_CHORUS_DEFAULT_WAVEFORM 1
  332. #define AL_CHORUS_WAVEFORM_SINUSOID 0
  333. #define AL_CHORUS_WAVEFORM_TRIANGLE 1
  334. #define AL_CHORUS_MIN_PHASE (-180)
  335. #define AL_CHORUS_MAX_PHASE 180
  336. #define AL_CHORUS_DEFAULT_PHASE 90
  337. #define AL_CHORUS_MIN_RATE 0.0f
  338. #define AL_CHORUS_MAX_RATE 10.0f
  339. #define AL_CHORUS_DEFAULT_RATE 1.1f
  340. #define AL_CHORUS_MIN_DEPTH 0.0f
  341. #define AL_CHORUS_MAX_DEPTH 1.0f
  342. #define AL_CHORUS_DEFAULT_DEPTH 0.1f
  343. #define AL_CHORUS_MIN_FEEDBACK (-1.0f)
  344. #define AL_CHORUS_MAX_FEEDBACK 1.0f
  345. #define AL_CHORUS_DEFAULT_FEEDBACK 0.25f
  346. #define AL_CHORUS_MIN_DELAY 0.0f
  347. #define AL_CHORUS_MAX_DELAY 0.016f
  348. #define AL_CHORUS_DEFAULT_DELAY 0.016f
  349. /**
  350. * AL distortion effect parameter ranges and defaults
  351. */
  352. #define AL_DISTORTION_MIN_EDGE 0.0f
  353. #define AL_DISTORTION_MAX_EDGE 1.0f
  354. #define AL_DISTORTION_DEFAULT_EDGE 0.2f
  355. #define AL_DISTORTION_MIN_GAIN 0.01f
  356. #define AL_DISTORTION_MAX_GAIN 1.0f
  357. #define AL_DISTORTION_DEFAULT_GAIN 0.05f
  358. #define AL_DISTORTION_MIN_LOWPASS_CUTOFF 80.0f
  359. #define AL_DISTORTION_MAX_LOWPASS_CUTOFF 24000.0f
  360. #define AL_DISTORTION_DEFAULT_LOWPASS_CUTOFF 8000.0f
  361. #define AL_DISTORTION_MIN_EQCENTER 80.0f
  362. #define AL_DISTORTION_MAX_EQCENTER 24000.0f
  363. #define AL_DISTORTION_DEFAULT_EQCENTER 3600.0f
  364. #define AL_DISTORTION_MIN_EQBANDWIDTH 80.0f
  365. #define AL_DISTORTION_MAX_EQBANDWIDTH 24000.0f
  366. #define AL_DISTORTION_DEFAULT_EQBANDWIDTH 3600.0f
  367. /**
  368. * AL echo effect parameter ranges and defaults
  369. */
  370. #define AL_ECHO_MIN_DELAY 0.0f
  371. #define AL_ECHO_MAX_DELAY 0.207f
  372. #define AL_ECHO_DEFAULT_DELAY 0.1f
  373. #define AL_ECHO_MIN_LRDELAY 0.0f
  374. #define AL_ECHO_MAX_LRDELAY 0.404f
  375. #define AL_ECHO_DEFAULT_LRDELAY 0.1f
  376. #define AL_ECHO_MIN_DAMPING 0.0f
  377. #define AL_ECHO_MAX_DAMPING 0.99f
  378. #define AL_ECHO_DEFAULT_DAMPING 0.5f
  379. #define AL_ECHO_MIN_FEEDBACK 0.0f
  380. #define AL_ECHO_MAX_FEEDBACK 1.0f
  381. #define AL_ECHO_DEFAULT_FEEDBACK 0.5f
  382. #define AL_ECHO_MIN_SPREAD (-1.0f)
  383. #define AL_ECHO_MAX_SPREAD 1.0f
  384. #define AL_ECHO_DEFAULT_SPREAD (-1.0f)
  385. /**
  386. * AL flanger effect parameter ranges and defaults
  387. */
  388. #define AL_FLANGER_MIN_WAVEFORM 0
  389. #define AL_FLANGER_MAX_WAVEFORM 1
  390. #define AL_FLANGER_DEFAULT_WAVEFORM 1
  391. #define AL_FLANGER_WAVEFORM_SINUSOID 0
  392. #define AL_FLANGER_WAVEFORM_TRIANGLE 1
  393. #define AL_FLANGER_MIN_PHASE (-180)
  394. #define AL_FLANGER_MAX_PHASE 180
  395. #define AL_FLANGER_DEFAULT_PHASE 0
  396. #define AL_FLANGER_MIN_RATE 0.0f
  397. #define AL_FLANGER_MAX_RATE 10.0f
  398. #define AL_FLANGER_DEFAULT_RATE 0.27f
  399. #define AL_FLANGER_MIN_DEPTH 0.0f
  400. #define AL_FLANGER_MAX_DEPTH 1.0f
  401. #define AL_FLANGER_DEFAULT_DEPTH 1.0f
  402. #define AL_FLANGER_MIN_FEEDBACK (-1.0f)
  403. #define AL_FLANGER_MAX_FEEDBACK 1.0f
  404. #define AL_FLANGER_DEFAULT_FEEDBACK (-0.5f)
  405. #define AL_FLANGER_MIN_DELAY 0.0f
  406. #define AL_FLANGER_MAX_DELAY 0.004f
  407. #define AL_FLANGER_DEFAULT_DELAY 0.002f
  408. /**
  409. * AL frequency shifter effect parameter ranges and defaults
  410. */
  411. #define AL_FREQUENCY_SHIFTER_MIN_FREQUENCY 0.0f
  412. #define AL_FREQUENCY_SHIFTER_MAX_FREQUENCY 24000.0f
  413. #define AL_FREQUENCY_SHIFTER_DEFAULT_FREQUENCY 0.0f
  414. #define AL_FREQUENCY_SHIFTER_MIN_LEFT_DIRECTION 0
  415. #define AL_FREQUENCY_SHIFTER_MAX_LEFT_DIRECTION 2
  416. #define AL_FREQUENCY_SHIFTER_DEFAULT_LEFT_DIRECTION 0
  417. #define AL_FREQUENCY_SHIFTER_MIN_RIGHT_DIRECTION 0
  418. #define AL_FREQUENCY_SHIFTER_MAX_RIGHT_DIRECTION 2
  419. #define AL_FREQUENCY_SHIFTER_DEFAULT_RIGHT_DIRECTION 0
  420. #define AL_FREQUENCY_SHIFTER_DIRECTION_DOWN 0
  421. #define AL_FREQUENCY_SHIFTER_DIRECTION_UP 1
  422. #define AL_FREQUENCY_SHIFTER_DIRECTION_OFF 2
  423. /**
  424. * AL vocal morpher effect parameter ranges and defaults
  425. */
  426. #define AL_VOCAL_MORPHER_MIN_PHONEMEA 0
  427. #define AL_VOCAL_MORPHER_MAX_PHONEMEA 29
  428. #define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA 0
  429. #define AL_VOCAL_MORPHER_MIN_PHONEMEA_COARSE_TUNING (-24)
  430. #define AL_VOCAL_MORPHER_MAX_PHONEMEA_COARSE_TUNING 24
  431. #define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA_COARSE_TUNING 0
  432. #define AL_VOCAL_MORPHER_MIN_PHONEMEB 0
  433. #define AL_VOCAL_MORPHER_MAX_PHONEMEB 29
  434. #define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB 10
  435. #define AL_VOCAL_MORPHER_PHONEME_A 0
  436. #define AL_VOCAL_MORPHER_PHONEME_E 1
  437. #define AL_VOCAL_MORPHER_PHONEME_I 2
  438. #define AL_VOCAL_MORPHER_PHONEME_O 3
  439. #define AL_VOCAL_MORPHER_PHONEME_U 4
  440. #define AL_VOCAL_MORPHER_PHONEME_AA 5
  441. #define AL_VOCAL_MORPHER_PHONEME_AE 6
  442. #define AL_VOCAL_MORPHER_PHONEME_AH 7
  443. #define AL_VOCAL_MORPHER_PHONEME_AO 8
  444. #define AL_VOCAL_MORPHER_PHONEME_EH 9
  445. #define AL_VOCAL_MORPHER_PHONEME_ER 10
  446. #define AL_VOCAL_MORPHER_PHONEME_IH 11
  447. #define AL_VOCAL_MORPHER_PHONEME_IY 12
  448. #define AL_VOCAL_MORPHER_PHONEME_UH 13
  449. #define AL_VOCAL_MORPHER_PHONEME_UW 14
  450. #define AL_VOCAL_MORPHER_PHONEME_B 15
  451. #define AL_VOCAL_MORPHER_PHONEME_D 16
  452. #define AL_VOCAL_MORPHER_PHONEME_F 17
  453. #define AL_VOCAL_MORPHER_PHONEME_G 18
  454. #define AL_VOCAL_MORPHER_PHONEME_J 19
  455. #define AL_VOCAL_MORPHER_PHONEME_K 20
  456. #define AL_VOCAL_MORPHER_PHONEME_L 21
  457. #define AL_VOCAL_MORPHER_PHONEME_M 22
  458. #define AL_VOCAL_MORPHER_PHONEME_N 23
  459. #define AL_VOCAL_MORPHER_PHONEME_P 24
  460. #define AL_VOCAL_MORPHER_PHONEME_R 25
  461. #define AL_VOCAL_MORPHER_PHONEME_S 26
  462. #define AL_VOCAL_MORPHER_PHONEME_T 27
  463. #define AL_VOCAL_MORPHER_PHONEME_V 28
  464. #define AL_VOCAL_MORPHER_PHONEME_Z 29
  465. #define AL_VOCAL_MORPHER_MIN_PHONEMEB_COARSE_TUNING (-24)
  466. #define AL_VOCAL_MORPHER_MAX_PHONEMEB_COARSE_TUNING 24
  467. #define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB_COARSE_TUNING 0
  468. #define AL_VOCAL_MORPHER_MIN_WAVEFORM 0
  469. #define AL_VOCAL_MORPHER_MAX_WAVEFORM 2
  470. #define AL_VOCAL_MORPHER_DEFAULT_WAVEFORM 0
  471. #define AL_VOCAL_MORPHER_WAVEFORM_SINUSOID 0
  472. #define AL_VOCAL_MORPHER_WAVEFORM_TRIANGLE 1
  473. #define AL_VOCAL_MORPHER_WAVEFORM_SAWTOOTH 2
  474. #define AL_VOCAL_MORPHER_MIN_RATE 0.0f
  475. #define AL_VOCAL_MORPHER_MAX_RATE 10.0f
  476. #define AL_VOCAL_MORPHER_DEFAULT_RATE 1.41f
  477. /**
  478. * AL pitch shifter effect parameter ranges and defaults
  479. */
  480. #define AL_PITCH_SHIFTER_MIN_COARSE_TUNE (-12)
  481. #define AL_PITCH_SHIFTER_MAX_COARSE_TUNE 12
  482. #define AL_PITCH_SHIFTER_DEFAULT_COARSE_TUNE 12
  483. #define AL_PITCH_SHIFTER_MIN_FINE_TUNE (-50)
  484. #define AL_PITCH_SHIFTER_MAX_FINE_TUNE 50
  485. #define AL_PITCH_SHIFTER_DEFAULT_FINE_TUNE 0
  486. /**
  487. * AL ring modulator effect parameter ranges and defaults
  488. */
  489. #define AL_RING_MODULATOR_MIN_FREQUENCY 0.0f
  490. #define AL_RING_MODULATOR_MAX_FREQUENCY 8000.0f
  491. #define AL_RING_MODULATOR_DEFAULT_FREQUENCY 440.0f
  492. #define AL_RING_MODULATOR_MIN_HIGHPASS_CUTOFF 0.0f
  493. #define AL_RING_MODULATOR_MAX_HIGHPASS_CUTOFF 24000.0f
  494. #define AL_RING_MODULATOR_DEFAULT_HIGHPASS_CUTOFF 800.0f
  495. #define AL_RING_MODULATOR_MIN_WAVEFORM 0
  496. #define AL_RING_MODULATOR_MAX_WAVEFORM 2
  497. #define AL_RING_MODULATOR_DEFAULT_WAVEFORM 0
  498. #define AL_RING_MODULATOR_SINUSOID 0
  499. #define AL_RING_MODULATOR_SAWTOOTH 1
  500. #define AL_RING_MODULATOR_SQUARE 2
  501. /**
  502. * AL autowah effect parameter ranges and defaults
  503. */
  504. #define AL_AUTOWAH_MIN_ATTACK_TIME 0.0001f
  505. #define AL_AUTOWAH_MAX_ATTACK_TIME 1.0f
  506. #define AL_AUTOWAH_DEFAULT_ATTACK_TIME 0.06f
  507. #define AL_AUTOWAH_MIN_RELEASE_TIME 0.0001f
  508. #define AL_AUTOWAH_MAX_RELEASE_TIME 1.0f
  509. #define AL_AUTOWAH_DEFAULT_RELEASE_TIME 0.06f
  510. #define AL_AUTOWAH_MIN_RESONANCE 2.0f
  511. #define AL_AUTOWAH_MAX_RESONANCE 1000.0f
  512. #define AL_AUTOWAH_DEFAULT_RESONANCE 1000.0f
  513. #define AL_AUTOWAH_MIN_PEAK_GAIN 0.00003f
  514. #define AL_AUTOWAH_MAX_PEAK_GAIN 31621.0f
  515. #define AL_AUTOWAH_DEFAULT_PEAK_GAIN 11.22f
  516. /**
  517. * AL compressor effect parameter ranges and defaults
  518. */
  519. #define AL_COMPRESSOR_MIN_ONOFF 0
  520. #define AL_COMPRESSOR_MAX_ONOFF 1
  521. #define AL_COMPRESSOR_DEFAULT_ONOFF 1
  522. /**
  523. * AL equalizer effect parameter ranges and defaults
  524. */
  525. #define AL_EQUALIZER_MIN_LOW_GAIN 0.126f
  526. #define AL_EQUALIZER_MAX_LOW_GAIN 7.943f
  527. #define AL_EQUALIZER_DEFAULT_LOW_GAIN 1.0f
  528. #define AL_EQUALIZER_MIN_LOW_CUTOFF 50.0f
  529. #define AL_EQUALIZER_MAX_LOW_CUTOFF 800.0f
  530. #define AL_EQUALIZER_DEFAULT_LOW_CUTOFF 200.0f
  531. #define AL_EQUALIZER_MIN_MID1_GAIN 0.126f
  532. #define AL_EQUALIZER_MAX_MID1_GAIN 7.943f
  533. #define AL_EQUALIZER_DEFAULT_MID1_GAIN 1.0f
  534. #define AL_EQUALIZER_MIN_MID1_CENTER 200.0f
  535. #define AL_EQUALIZER_MAX_MID1_CENTER 3000.0f
  536. #define AL_EQUALIZER_DEFAULT_MID1_CENTER 500.0f
  537. #define AL_EQUALIZER_MIN_MID1_WIDTH 0.01f
  538. #define AL_EQUALIZER_MAX_MID1_WIDTH 1.0f
  539. #define AL_EQUALIZER_DEFAULT_MID1_WIDTH 1.0f
  540. #define AL_EQUALIZER_MIN_MID2_GAIN 0.126f
  541. #define AL_EQUALIZER_MAX_MID2_GAIN 7.943f
  542. #define AL_EQUALIZER_DEFAULT_MID2_GAIN 1.0f
  543. #define AL_EQUALIZER_MIN_MID2_CENTER 1000.0f
  544. #define AL_EQUALIZER_MAX_MID2_CENTER 8000.0f
  545. #define AL_EQUALIZER_DEFAULT_MID2_CENTER 3000.0f
  546. #define AL_EQUALIZER_MIN_MID2_WIDTH 0.01f
  547. #define AL_EQUALIZER_MAX_MID2_WIDTH 1.0f
  548. #define AL_EQUALIZER_DEFAULT_MID2_WIDTH 1.0f
  549. #define AL_EQUALIZER_MIN_HIGH_GAIN 0.126f
  550. #define AL_EQUALIZER_MAX_HIGH_GAIN 7.943f
  551. #define AL_EQUALIZER_DEFAULT_HIGH_GAIN 1.0f
  552. #define AL_EQUALIZER_MIN_HIGH_CUTOFF 4000.0f
  553. #define AL_EQUALIZER_MAX_HIGH_CUTOFF 16000.0f
  554. #define AL_EQUALIZER_DEFAULT_HIGH_CUTOFF 6000.0f
  555. /**********************************************************
  556. * Source parameter value definitions, ranges and defaults.
  557. */
  558. #define AL_MIN_AIR_ABSORPTION_FACTOR 0.0f
  559. #define AL_MAX_AIR_ABSORPTION_FACTOR 10.0f
  560. #define AL_DEFAULT_AIR_ABSORPTION_FACTOR 0.0f
  561. #define AL_MIN_ROOM_ROLLOFF_FACTOR 0.0f
  562. #define AL_MAX_ROOM_ROLLOFF_FACTOR 10.0f
  563. #define AL_DEFAULT_ROOM_ROLLOFF_FACTOR 0.0f
  564. #define AL_MIN_CONE_OUTER_GAINHF 0.0f
  565. #define AL_MAX_CONE_OUTER_GAINHF 1.0f
  566. #define AL_DEFAULT_CONE_OUTER_GAINHF 1.0f
  567. #define AL_MIN_DIRECT_FILTER_GAINHF_AUTO AL_FALSE
  568. #define AL_MAX_DIRECT_FILTER_GAINHF_AUTO AL_TRUE
  569. #define AL_DEFAULT_DIRECT_FILTER_GAINHF_AUTO AL_TRUE
  570. #define AL_MIN_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_FALSE
  571. #define AL_MAX_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE
  572. #define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE
  573. #define AL_MIN_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_FALSE
  574. #define AL_MAX_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE
  575. #define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE
  576. /**********************************************************
  577. * Listener parameter value definitions, ranges and defaults.
  578. */
  579. #define AL_MIN_METERS_PER_UNIT FLT_MIN
  580. #define AL_MAX_METERS_PER_UNIT FLT_MAX
  581. #define AL_DEFAULT_METERS_PER_UNIT 1.0f
  582. #ifdef __cplusplus
  583. } /* extern "C" */
  584. #endif
  585. #endif /* __efx_h_ */