Allow getting and setting reverb parameters, as well as setting reverb effects
[openal-soft.git] / OpenAL32 / Include / alEffect.h
blob1ee4b22d815b260efc5cace601b0f6006802edc5
1 #ifndef _AL_EFFECT_H_
2 #define _AL_EFFECT_H_
4 #include "AL/al.h"
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
10 #define AL_EFFECT_TYPE 0x8001
12 #define AL_EFFECT_NULL 0x0000
13 #define AL_EFFECT_REVERB 0x0001
14 #define AL_EFFECT_CHORUS 0x0002
15 #define AL_EFFECT_DISTORTION 0x0003
16 #define AL_EFFECT_ECHO 0x0004
17 #define AL_EFFECT_FLANGER 0x0005
18 #define AL_EFFECT_FREQUENCY_SHIFTER 0x0006
19 #define AL_EFFECT_VOCAL_MORPHER 0x0007
20 #define AL_EFFECT_PITCH_SHIFTER 0x0008
21 #define AL_EFFECT_RING_MODULATOR 0x0009
22 #define AL_EFFECT_AUTOWAH 0x000A
23 #define AL_EFFECT_COMPRESSOR 0x000B
24 #define AL_EFFECT_EQUALIZER 0x000C
26 #define AL_REVERB_DENSITY 0x0001
27 #define AL_REVERB_DIFFUSION 0x0002
28 #define AL_REVERB_GAIN 0x0003
29 #define AL_REVERB_GAINHF 0x0004
30 #define AL_REVERB_DECAY_TIME 0x0005
31 #define AL_REVERB_DECAY_HFRATIO 0x0006
32 #define AL_REVERB_REFLECTIONS_GAIN 0x0007
33 #define AL_REVERB_REFLECTIONS_DELAY 0x0008
34 #define AL_REVERB_LATE_REVERB_GAIN 0x0009
35 #define AL_REVERB_LATE_REVERB_DELAY 0x000A
36 #define AL_REVERB_AIR_ABSORPTION_GAINHF 0x000B
37 #define AL_REVERB_ROOM_ROLLOFF_FACTOR 0x000C
38 #define AL_REVERB_DECAY_HFLIMIT 0x000D
41 typedef struct ALeffect_struct
43 // Effect type (AL_EFFECT_NULL, ...)
44 ALenum type;
46 struct {
47 ALfloat Density;
48 ALfloat Diffusion;
50 ALfloat Gain;
51 ALfloat GainHF;
52 ALfloat DecayTime;
53 ALfloat DecayHFRatio;
54 ALfloat ReflectionsGain;
55 ALfloat ReflectionsDelay;
56 ALfloat LateReverbGain;
57 ALfloat LateReverbDelay;
58 ALfloat AirAbsorptionGainHF;
59 ALfloat RoomRolloffFactor;
60 ALboolean DecayHFLimit;
61 } Reverb;
63 // Index to itself
64 ALuint effect;
66 struct ALeffect_struct *next;
67 } ALeffect;
69 AL_API ALvoid AL_APIENTRY alGenEffects(ALsizei n, ALuint *effects);
70 AL_API ALvoid AL_APIENTRY alDeleteEffects(ALsizei n, ALuint *effects);
71 AL_API ALboolean AL_APIENTRY alIsEffect(ALuint effect);
73 AL_API ALvoid AL_APIENTRY alEffecti(ALuint effect, ALenum param, ALint iValue);
74 AL_API ALvoid AL_APIENTRY alEffectiv(ALuint effect, ALenum param, ALint *piValues);
75 AL_API ALvoid AL_APIENTRY alEffectf(ALuint effect, ALenum param, ALfloat flValue);
76 AL_API ALvoid AL_APIENTRY alEffectfv(ALuint effect, ALenum param, ALfloat *pflValues);
78 AL_API ALvoid AL_APIENTRY alGetEffecti(ALuint effect, ALenum param, ALint *piValue);
79 AL_API ALvoid AL_APIENTRY alGetEffectiv(ALuint effect, ALenum param, ALint *piValues);
80 AL_API ALvoid AL_APIENTRY alGetEffectf(ALuint effect, ALenum param, ALfloat *pflValue);
81 AL_API ALvoid AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *pflValues);
83 ALvoid ReleaseALEffects(ALvoid);
85 #ifdef __cplusplus
87 #endif
89 #endif