aboutsummaryrefslogtreecommitdiffstats
path: root/al/effects/effects.cpp
diff options
context:
space:
mode:
authorBoris I. Bendovsky <[email protected]>2022-01-30 14:47:32 +0200
committerGitHub <[email protected]>2022-01-30 04:47:32 -0800
commit19ed994dc30ed84ea7cbbb5152577669fc25caf6 (patch)
treef68933bf8f778806618bd6c0b1bf9ced1b0ccf08 /al/effects/effects.cpp
parent619249371a40f03cf988d1f5750d643df797c485 (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.cpp106
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