#ifndef _AL_EFFECT_H_
|
|
#define _AL_EFFECT_H_
|
|
|
|
#include "alMain.h"
|
|
#include "effects/base.h"
|
|
|
|
|
|
enum {
|
|
EAXREVERB_EFFECT = 0,
|
|
REVERB_EFFECT,
|
|
AUTOWAH_EFFECT,
|
|
CHORUS_EFFECT,
|
|
COMPRESSOR_EFFECT,
|
|
DISTORTION_EFFECT,
|
|
ECHO_EFFECT,
|
|
EQUALIZER_EFFECT,
|
|
FLANGER_EFFECT,
|
|
FSHIFTER_EFFECT,
|
|
MODULATOR_EFFECT,
|
|
PSHIFTER_EFFECT,
|
|
DEDICATED_EFFECT,
|
|
|
|
MAX_EFFECTS
|
|
};
|
|
extern ALboolean DisabledEffects[MAX_EFFECTS];
|
|
|
|
extern ALfloat ReverbBoost;
|
|
|
|
struct EffectList {
|
|
const char name[16];
|
|
int type;
|
|
ALenum val;
|
|
};
|
|
extern const EffectList gEffectList[14];
|
|
|
|
|
|
struct ALeffect {
|
|
// Effect type (AL_EFFECT_NULL, ...)
|
|
ALenum type{AL_EFFECT_NULL};
|
|
|
|
EffectProps Props{};
|
|
|
|
const EffectVtable *vtab{nullptr};
|
|
|
|
/* Self ID */
|
|
ALuint id{0u};
|
|
};
|
|
|
|
inline ALboolean IsReverbEffect(ALenum type)
|
|
{ return type == AL_EFFECT_REVERB || type == AL_EFFECT_EAXREVERB; }
|
|
|
|
EffectStateFactory *getFactoryByType(ALenum type);
|
|
|
|
void InitEffect(ALeffect *effect);
|
|
|
|
void LoadReverbPreset(const char *name, ALeffect *effect);
|
|
|
|
#endif
|