rlm@0: #ifndef _AL_EFFECT_H_ rlm@0: #define _AL_EFFECT_H_ rlm@0: rlm@0: #include "AL/al.h" rlm@0: rlm@0: #ifdef __cplusplus rlm@0: extern "C" { rlm@0: #endif rlm@0: rlm@0: enum { rlm@0: EAXREVERB = 0, rlm@0: REVERB, rlm@0: ECHO, rlm@0: MODULATOR, rlm@0: DEDICATED, rlm@0: rlm@0: MAX_EFFECTS rlm@0: }; rlm@0: extern ALboolean DisabledEffects[MAX_EFFECTS]; rlm@0: rlm@0: extern ALfloat ReverbBoost; rlm@0: extern ALboolean EmulateEAXReverb; rlm@0: rlm@0: typedef struct ALeffect rlm@0: { rlm@0: // Effect type (AL_EFFECT_NULL, ...) rlm@0: ALenum type; rlm@0: rlm@0: union { rlm@0: struct { rlm@0: // Shared Reverb Properties rlm@0: ALfloat Density; rlm@0: ALfloat Diffusion; rlm@0: ALfloat Gain; rlm@0: ALfloat GainHF; rlm@0: ALfloat DecayTime; rlm@0: ALfloat DecayHFRatio; rlm@0: ALfloat ReflectionsGain; rlm@0: ALfloat ReflectionsDelay; rlm@0: ALfloat LateReverbGain; rlm@0: ALfloat LateReverbDelay; rlm@0: ALfloat AirAbsorptionGainHF; rlm@0: ALfloat RoomRolloffFactor; rlm@0: ALboolean DecayHFLimit; rlm@0: rlm@0: // Additional EAX Reverb Properties rlm@0: ALfloat GainLF; rlm@0: ALfloat DecayLFRatio; rlm@0: ALfloat ReflectionsPan[3]; rlm@0: ALfloat LateReverbPan[3]; rlm@0: ALfloat EchoTime; rlm@0: ALfloat EchoDepth; rlm@0: ALfloat ModulationTime; rlm@0: ALfloat ModulationDepth; rlm@0: ALfloat HFReference; rlm@0: ALfloat LFReference; rlm@0: } Reverb; rlm@0: rlm@0: struct { rlm@0: ALfloat Delay; rlm@0: ALfloat LRDelay; rlm@0: rlm@0: ALfloat Damping; rlm@0: ALfloat Feedback; rlm@0: rlm@0: ALfloat Spread; rlm@0: } Echo; rlm@0: rlm@0: struct { rlm@0: ALfloat Frequency; rlm@0: ALfloat HighPassCutoff; rlm@0: ALint Waveform; rlm@0: } Modulator; rlm@0: rlm@0: struct { rlm@0: ALfloat Gain; rlm@0: } Dedicated; rlm@0: } Params; rlm@0: rlm@0: // Index to itself rlm@0: ALuint effect; rlm@0: } ALeffect; rlm@0: rlm@0: static __inline ALboolean IsReverbEffect(ALenum type) rlm@0: { return type == AL_EFFECT_REVERB || type == AL_EFFECT_EAXREVERB; } rlm@0: rlm@0: ALvoid ReleaseALEffects(ALCdevice *device); rlm@0: rlm@0: #ifdef __cplusplus rlm@0: } rlm@0: #endif rlm@0: rlm@0: #endif