Add a few more EFX

This commit is contained in:
NepDisk 2026-03-22 16:29:42 -04:00
parent 2c53e42b8a
commit 43ece4d257
2 changed files with 101 additions and 0 deletions

View file

@ -49,9 +49,30 @@ typedef enum
{
EFFECT_NONE = 0,
EFFECT_REVERB,
EFFECT_CHORUS,
EFFECT_DISTORTION,
EFFECT_ECHO,
EFFECT_PITCHSHIFT,
EFFECT_RINGMOD,
EFFECT_COMPRESSOR,
EFFECT_EQ,
} effecttypes_t;
#ifdef HAVE_OPENAL
typedef enum
{
CHORUSWAVE_SINUSOID = AL_CHORUS_WAVEFORM_SINUSOID,
CHORUSWAVE_TRIANGLE = AL_CHORUS_WAVEFORM_TRIANGLE,
} choruswaves_t;
#endif
typedef enum
{
RINGMOD_SIN = 0,
RINGMOD_SAW,
RINGMOD_SQUARE,
} ringmodwaves_t;
typedef struct
{
// flags for effects

View file

@ -1946,6 +1946,22 @@ efx_t *I_CreateEFX(efx_t *efx)
TRY(alEffectf, efxc->effect, AL_REVERB_ROOM_ROLLOFF_FACTOR, efxc->var13);
break;
case EFFECT_CHORUS:
TRY(alEffecti, efxc->effect, AL_EFFECT_TYPE, AL_EFFECT_CHORUS);
if (efxc->var1 != -255)
TRY(alEffectf, efxc->effect, AL_CHORUS_WAVEFORM, efxc->var1);
if (efxc->var2 != -255)
TRY(alEffectf, efxc->effect, AL_CHORUS_PHASE, efxc->var2);
if (efxc->var3 != -255)
TRY(alEffectf, efxc->effect, AL_CHORUS_RATE, efxc->var3);
if (efxc->var4 != -255)
TRY(alEffectf, efxc->effect, AL_CHORUS_DEPTH, efxc->var4);
if (efxc->var5 != -255)
TRY(alEffectf, efxc->effect, AL_CHORUS_FEEDBACK, efxc->var5);
if (efxc->var6 != -255)
TRY(alEffectf, efxc->effect, AL_CHORUS_DELAY, efxc->var6);
break;
case EFFECT_DISTORTION:
TRY(alEffecti, efxc->effect, AL_EFFECT_TYPE, AL_EFFECT_DISTORTION);
@ -1960,6 +1976,70 @@ efx_t *I_CreateEFX(efx_t *efx)
if (efxc->var5 != -255)
TRY(alEffectf, efxc->effect, AL_DISTORTION_EQBANDWIDTH, efxc->var5);
break;
case EFFECT_ECHO:
TRY(alEffecti, efxc->effect, AL_EFFECT_TYPE, AL_EFFECT_ECHO);
if (efxc->var1 != -255)
TRY(alEffectf, efxc->effect, AL_ECHO_DELAY, efxc->var1);
if (efxc->var2 != -255)
TRY(alEffectf, efxc->effect, AL_ECHO_LRDELAY, efxc->var2);
if (efxc->var3 != -255)
TRY(alEffectf, efxc->effect, AL_ECHO_DAMPING, efxc->var3);
if (efxc->var4 != -255)
TRY(alEffectf, efxc->effect, AL_ECHO_FEEDBACK, efxc->var4);
if (efxc->var5 != -255)
TRY(alEffectf, efxc->effect, AL_ECHO_SPREAD, efxc->var5);
break;
case EFFECT_PITCHSHIFT:
TRY(alEffecti, efxc->effect, AL_EFFECT_TYPE, AL_EFFECT_PITCH_SHIFTER);
if (efxc->var1 != -255)
TRY(alEffectf, efxc->effect, AL_PITCH_SHIFTER_COARSE_TUNE, efxc->var1);
if (efxc->var2 != -255)
TRY(alEffectf, efxc->effect, AL_PITCH_SHIFTER_FINE_TUNE , efxc->var2);
break;
case EFFECT_RINGMOD:
TRY(alEffecti, efxc->effect, AL_EFFECT_TYPE, AL_EFFECT_RING_MODULATOR);
if (efxc->var1 != -255)
TRY(alEffectf, efxc->effect, AL_RING_MODULATOR_FREQUENCY, efxc->var1);
if (efxc->var2 != -255)
TRY(alEffectf, efxc->effect, AL_RING_MODULATOR_HIGHPASS_CUTOFF, efxc->var2);
if (efxc->var3 != -255)
TRY(alEffectf, efxc->effect, AL_RING_MODULATOR_WAVEFORM, efxc->var3);
break;
case EFFECT_COMPRESSOR:
TRY(alEffecti, efxc->effect, AL_EFFECT_TYPE, AL_EFFECT_COMPRESSOR);
if (efxc->var1 != -255)
TRY(alEffectf, efxc->effect, AL_COMPRESSOR_ONOFF, efxc->var1);
break;
case EFFECT_EQ:
TRY(alEffecti, efxc->effect, AL_EFFECT_TYPE, AL_EFFECT_EQUALIZER);
if (efxc->var1 != -255)
TRY(alEffectf, efxc->effect, AL_EQUALIZER_LOW_GAIN, efxc->var1);
if (efxc->var2 != -255)
TRY(alEffectf, efxc->effect, AL_EQUALIZER_LOW_CUTOFF, efxc->var2);
if (efxc->var3 != -255)
TRY(alEffectf, efxc->effect, AL_EQUALIZER_MID1_GAIN, efxc->var3);
if (efxc->var4 != -255)
TRY(alEffectf, efxc->effect, AL_EQUALIZER_MID1_CENTER, efxc->var4);
if (efxc->var5 != -255)
TRY(alEffectf, efxc->effect, AL_EQUALIZER_MID1_WIDTH, efxc->var5);
if (efxc->var6 != -255)
TRY(alEffectf, efxc->effect, AL_EQUALIZER_MID2_GAIN, efxc->var6);
if (efxc->var7 != -255)
TRY(alEffectf, efxc->effect, AL_EQUALIZER_MID2_CENTER, efxc->var7);
if (efxc->var8 != -255)
TRY(alEffectf, efxc->effect, AL_EQUALIZER_MID2_WIDTH, efxc->var8);
if (efxc->var9 != -255)
TRY(alEffectf, efxc->effect, AL_EQUALIZER_HIGH_GAIN, efxc->var9);
if (efxc->var10 != -255)
TRY(alEffectf, efxc->effect, AL_EQUALIZER_HIGH_CUTOFF, efxc->var10);
break;
}
TRY(alAuxiliaryEffectSloti, efxc->slot, AL_EFFECTSLOT_EFFECT, efxc->effect);