Add the Echo effect
[openal-soft.git] / OpenAL32 / Include / alEffect.h
blob6dd1b766b8e706b3988c3b97532fb18d88fa710f
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
40 #define AL_ECHO_DELAY 0x0001
41 #define AL_ECHO_LRDELAY 0x0002
42 #define AL_ECHO_DAMPING 0x0003
43 #define AL_ECHO_FEEDBACK 0x0004
44 #define AL_ECHO_SPREAD 0x0005
46 #define AL_ECHO_MIN_DELAY (0.0f)
47 #define AL_ECHO_MAX_DELAY (0.207f)
48 #define AL_ECHO_DEFAULT_DELAY (0.1f)
49 #define AL_ECHO_MIN_LRDELAY (0.0f)
50 #define AL_ECHO_MAX_LRDELAY (0.404f)
51 #define AL_ECHO_DEFAULT_LRDELAY (0.1f)
52 #define AL_ECHO_MIN_DAMPING (0.0f)
53 #define AL_ECHO_MAX_DAMPING (0.99f)
54 #define AL_ECHO_DEFAULT_DAMPING (0.5f)
55 #define AL_ECHO_MIN_FEEDBACK (0.0f)
56 #define AL_ECHO_MAX_FEEDBACK (1.0f)
57 #define AL_ECHO_DEFAULT_FEEDBACK (0.5f)
58 #define AL_ECHO_MIN_SPREAD (-1.0f)
59 #define AL_ECHO_MAX_SPREAD (1.0f)
60 #define AL_ECHO_DEFAULT_SPREAD (-1.0f)
63 enum {
64 REVERB = 0,
65 ECHO,
67 MAX_EFFECTS
69 extern ALboolean DisabledEffects[MAX_EFFECTS];
72 typedef struct ALeffect_struct
74 // Effect type (AL_EFFECT_NULL, ...)
75 ALenum type;
77 struct {
78 ALfloat Density;
79 ALfloat Diffusion;
81 ALfloat Gain;
82 ALfloat GainHF;
83 ALfloat DecayTime;
84 ALfloat DecayHFRatio;
85 ALfloat ReflectionsGain;
86 ALfloat ReflectionsDelay;
87 ALfloat LateReverbGain;
88 ALfloat LateReverbDelay;
89 ALfloat AirAbsorptionGainHF;
90 ALfloat RoomRolloffFactor;
91 ALboolean DecayHFLimit;
92 } Reverb;
94 struct {
95 ALfloat Delay;
96 ALfloat LRDelay;
98 ALfloat Damping;
99 ALfloat Feedback;
101 ALfloat Spread;
102 } Echo;
104 // Index to itself
105 ALuint effect;
107 struct ALeffect_struct *next;
108 } ALeffect;
110 ALvoid AL_APIENTRY alGenEffects(ALsizei n, ALuint *effects);
111 ALvoid AL_APIENTRY alDeleteEffects(ALsizei n, ALuint *effects);
112 ALboolean AL_APIENTRY alIsEffect(ALuint effect);
114 ALvoid AL_APIENTRY alEffecti(ALuint effect, ALenum param, ALint iValue);
115 ALvoid AL_APIENTRY alEffectiv(ALuint effect, ALenum param, ALint *piValues);
116 ALvoid AL_APIENTRY alEffectf(ALuint effect, ALenum param, ALfloat flValue);
117 ALvoid AL_APIENTRY alEffectfv(ALuint effect, ALenum param, ALfloat *pflValues);
119 ALvoid AL_APIENTRY alGetEffecti(ALuint effect, ALenum param, ALint *piValue);
120 ALvoid AL_APIENTRY alGetEffectiv(ALuint effect, ALenum param, ALint *piValues);
121 ALvoid AL_APIENTRY alGetEffectf(ALuint effect, ALenum param, ALfloat *pflValue);
122 ALvoid AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *pflValues);
124 ALvoid ReleaseALEffects(ALvoid);
126 #ifdef __cplusplus
128 #endif
130 #endif