diff options
author | Boris I. Bendovsky <[email protected]> | 2022-01-30 14:47:32 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2022-01-30 04:47:32 -0800 |
commit | 19ed994dc30ed84ea7cbbb5152577669fc25caf6 (patch) | |
tree | f68933bf8f778806618bd6c0b1bf9ced1b0ccf08 /al/effects/effects.cpp | |
parent | 619249371a40f03cf988d1f5750d643df797c485 (diff) |
Add EAX extensions (EAX 2.0-5.0, X-RAM) (#632)
* Add EAX extensions (EAX 2.0-5.0, X-RAM)
* Comment out C++17 leftovers
* Remove everything related to patching
* Update alsoftrc.sample
* Rewrite integration
* Fix GCC compilation under Linux
* Always reset EAX effect properties when loading it into FX slot
Diffstat (limited to 'al/effects/effects.cpp')
-rw-r--r-- | al/effects/effects.cpp | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/al/effects/effects.cpp b/al/effects/effects.cpp new file mode 100644 index 00000000..55abfdc5 --- /dev/null +++ b/al/effects/effects.cpp @@ -0,0 +1,106 @@ +#if ALSOFT_EAX + + +#include <cassert> + +#include "AL/efx.h" + +#include "effects.h" + + +EaxEffectUPtr eax_create_eax_null_effect(); + +EaxEffectUPtr eax_create_eax_chorus_effect( + EffectProps& al_effect_props); + +EaxEffectUPtr eax_create_eax_distortion_effect( + EffectProps& al_effect_props); + +EaxEffectUPtr eax_create_eax_echo_effect( + EffectProps& al_effect_props); + +EaxEffectUPtr eax_create_eax_flanger_effect( + EffectProps& al_effect_props); + +EaxEffectUPtr eax_create_eax_frequency_shifter_effect( + EffectProps& al_effect_props); + +EaxEffectUPtr eax_create_eax_vocal_morpher_effect( + EffectProps& al_effect_props); + +EaxEffectUPtr eax_create_eax_pitch_shifter_effect( + EffectProps& al_effect_props); + +EaxEffectUPtr eax_create_eax_ring_modulator_effect( + EffectProps& al_effect_props); + +EaxEffectUPtr eax_create_eax_auto_wah_effect( + EffectProps& al_effect_props); + +EaxEffectUPtr eax_create_eax_compressor_effect( + EffectProps& al_effect_props); + +EaxEffectUPtr eax_create_eax_equalizer_effect( + EffectProps& al_effect_props); + +EaxEffectUPtr eax_create_eax_reverb_effect( + EffectProps& al_effect_props); + + +EaxEffectUPtr eax_create_eax_effect( + ALenum al_effect_type, + EffectProps& al_effect_props) +{ +#define EAX_PREFIX "[EAX_MAKE_EAX_EFFECT] " + + switch (al_effect_type) + { + case AL_EFFECT_NULL: + return eax_create_eax_null_effect(); + + case AL_EFFECT_CHORUS: + return eax_create_eax_chorus_effect(al_effect_props); + + case AL_EFFECT_DISTORTION: + return eax_create_eax_distortion_effect(al_effect_props); + + case AL_EFFECT_ECHO: + return eax_create_eax_echo_effect(al_effect_props); + + case AL_EFFECT_FLANGER: + return eax_create_eax_flanger_effect(al_effect_props); + + case AL_EFFECT_FREQUENCY_SHIFTER: + return eax_create_eax_frequency_shifter_effect(al_effect_props); + + case AL_EFFECT_VOCAL_MORPHER: + return eax_create_eax_vocal_morpher_effect(al_effect_props); + + case AL_EFFECT_PITCH_SHIFTER: + return eax_create_eax_pitch_shifter_effect(al_effect_props); + + case AL_EFFECT_RING_MODULATOR: + return eax_create_eax_ring_modulator_effect(al_effect_props); + + case AL_EFFECT_AUTOWAH: + return eax_create_eax_auto_wah_effect(al_effect_props); + + case AL_EFFECT_COMPRESSOR: + return eax_create_eax_compressor_effect(al_effect_props); + + case AL_EFFECT_EQUALIZER: + return eax_create_eax_equalizer_effect(al_effect_props); + + case AL_EFFECT_EAXREVERB: + return eax_create_eax_reverb_effect(al_effect_props); + + default: + assert(false && "Unsupported AL effect type."); + return nullptr; + } + +#undef EAX_PREFIX +} + + +#endif // ALSOFT_EAX |