The types and enums are in efx.h, which is included by alext.h. It's done this way because EFX has a lot if definitions which would polute alext.h
92 lines
2.3 KiB
C
92 lines
2.3 KiB
C
// NOTE: The effect structure is getting too large, it may be a good idea to
|
|
// start using a union or another form of unified storage.
|
|
#ifndef _AL_EFFECT_H_
|
|
#define _AL_EFFECT_H_
|
|
|
|
#include "AL/al.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
enum {
|
|
EAXREVERB = 0,
|
|
REVERB,
|
|
ECHO,
|
|
|
|
MAX_EFFECTS
|
|
};
|
|
extern ALboolean DisabledEffects[MAX_EFFECTS];
|
|
|
|
typedef struct ALeffect
|
|
{
|
|
// Effect type (AL_EFFECT_NULL, ...)
|
|
ALenum type;
|
|
|
|
struct {
|
|
// Shared Reverb Properties
|
|
ALfloat Density;
|
|
ALfloat Diffusion;
|
|
ALfloat Gain;
|
|
ALfloat GainHF;
|
|
ALfloat DecayTime;
|
|
ALfloat DecayHFRatio;
|
|
ALfloat ReflectionsGain;
|
|
ALfloat ReflectionsDelay;
|
|
ALfloat LateReverbGain;
|
|
ALfloat LateReverbDelay;
|
|
ALfloat AirAbsorptionGainHF;
|
|
ALfloat RoomRolloffFactor;
|
|
ALboolean DecayHFLimit;
|
|
|
|
// Additional EAX Reverb Properties
|
|
ALfloat GainLF;
|
|
ALfloat DecayLFRatio;
|
|
ALfloat ReflectionsPan[3];
|
|
ALfloat LateReverbPan[3];
|
|
ALfloat EchoTime;
|
|
ALfloat EchoDepth;
|
|
ALfloat ModulationTime;
|
|
ALfloat ModulationDepth;
|
|
ALfloat HFReference;
|
|
ALfloat LFReference;
|
|
} Reverb;
|
|
|
|
struct {
|
|
ALfloat Delay;
|
|
ALfloat LRDelay;
|
|
|
|
ALfloat Damping;
|
|
ALfloat Feedback;
|
|
|
|
ALfloat Spread;
|
|
} Echo;
|
|
|
|
// Index to itself
|
|
ALuint effect;
|
|
|
|
struct ALeffect *next;
|
|
} ALeffect;
|
|
|
|
ALvoid AL_APIENTRY alGenEffects(ALsizei n, ALuint *effects);
|
|
ALvoid AL_APIENTRY alDeleteEffects(ALsizei n, ALuint *effects);
|
|
ALboolean AL_APIENTRY alIsEffect(ALuint effect);
|
|
|
|
ALvoid AL_APIENTRY alEffecti(ALuint effect, ALenum param, ALint iValue);
|
|
ALvoid AL_APIENTRY alEffectiv(ALuint effect, ALenum param, ALint *piValues);
|
|
ALvoid AL_APIENTRY alEffectf(ALuint effect, ALenum param, ALfloat flValue);
|
|
ALvoid AL_APIENTRY alEffectfv(ALuint effect, ALenum param, ALfloat *pflValues);
|
|
|
|
ALvoid AL_APIENTRY alGetEffecti(ALuint effect, ALenum param, ALint *piValue);
|
|
ALvoid AL_APIENTRY alGetEffectiv(ALuint effect, ALenum param, ALint *piValues);
|
|
ALvoid AL_APIENTRY alGetEffectf(ALuint effect, ALenum param, ALfloat *pflValue);
|
|
ALvoid AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *pflValues);
|
|
|
|
ALvoid ReleaseALEffects(ALCdevice *device);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|