Add a basic WaveOut device
[openal-soft.git] / OpenAL32 / Include / alEffect.h
blob500b60a1f22b2d9384701d827bf2b9f1ccb77641
1 // NOTE: The effect structure is getting too large, it may be a good idea to
2 // start using a union or another form of unified storage.
3 #ifndef _AL_EFFECT_H_
4 #define _AL_EFFECT_H_
6 #include "AL/al.h"
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
12 enum {
13 EAXREVERB = 0,
14 REVERB,
15 ECHO,
16 MODULATOR,
18 MAX_EFFECTS
20 extern ALboolean DisabledEffects[MAX_EFFECTS];
22 typedef struct ALeffect
24 // Effect type (AL_EFFECT_NULL, ...)
25 ALenum type;
27 struct {
28 // Shared Reverb Properties
29 ALfloat Density;
30 ALfloat Diffusion;
31 ALfloat Gain;
32 ALfloat GainHF;
33 ALfloat DecayTime;
34 ALfloat DecayHFRatio;
35 ALfloat ReflectionsGain;
36 ALfloat ReflectionsDelay;
37 ALfloat LateReverbGain;
38 ALfloat LateReverbDelay;
39 ALfloat AirAbsorptionGainHF;
40 ALfloat RoomRolloffFactor;
41 ALboolean DecayHFLimit;
43 // Additional EAX Reverb Properties
44 ALfloat GainLF;
45 ALfloat DecayLFRatio;
46 ALfloat ReflectionsPan[3];
47 ALfloat LateReverbPan[3];
48 ALfloat EchoTime;
49 ALfloat EchoDepth;
50 ALfloat ModulationTime;
51 ALfloat ModulationDepth;
52 ALfloat HFReference;
53 ALfloat LFReference;
54 } Reverb;
56 struct {
57 ALfloat Delay;
58 ALfloat LRDelay;
60 ALfloat Damping;
61 ALfloat Feedback;
63 ALfloat Spread;
64 } Echo;
66 struct {
67 ALfloat Frequency;
68 ALfloat HighPassCutoff;
69 ALint Waveform;
70 } Modulator;
72 // Index to itself
73 ALuint effect;
74 } ALeffect;
77 ALvoid ReleaseALEffects(ALCdevice *device);
79 #ifdef __cplusplus
81 #endif
83 #endif