Mercurial > audio-send
annotate OpenAL32/Include/alEffect.h @ 32:b8bc24918d63
moved ear.org into cortex
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 04 Feb 2012 01:43:33 -0700 |
parents | f9476ff7637e |
children |
rev | line source |
---|---|
rlm@0 | 1 #ifndef _AL_EFFECT_H_ |
rlm@0 | 2 #define _AL_EFFECT_H_ |
rlm@0 | 3 |
rlm@0 | 4 #include "AL/al.h" |
rlm@0 | 5 |
rlm@0 | 6 #ifdef __cplusplus |
rlm@0 | 7 extern "C" { |
rlm@0 | 8 #endif |
rlm@0 | 9 |
rlm@0 | 10 enum { |
rlm@0 | 11 EAXREVERB = 0, |
rlm@0 | 12 REVERB, |
rlm@0 | 13 ECHO, |
rlm@0 | 14 MODULATOR, |
rlm@0 | 15 DEDICATED, |
rlm@0 | 16 |
rlm@0 | 17 MAX_EFFECTS |
rlm@0 | 18 }; |
rlm@0 | 19 extern ALboolean DisabledEffects[MAX_EFFECTS]; |
rlm@0 | 20 |
rlm@0 | 21 extern ALfloat ReverbBoost; |
rlm@0 | 22 extern ALboolean EmulateEAXReverb; |
rlm@0 | 23 |
rlm@0 | 24 typedef struct ALeffect |
rlm@0 | 25 { |
rlm@0 | 26 // Effect type (AL_EFFECT_NULL, ...) |
rlm@0 | 27 ALenum type; |
rlm@0 | 28 |
rlm@0 | 29 union { |
rlm@0 | 30 struct { |
rlm@0 | 31 // Shared Reverb Properties |
rlm@0 | 32 ALfloat Density; |
rlm@0 | 33 ALfloat Diffusion; |
rlm@0 | 34 ALfloat Gain; |
rlm@0 | 35 ALfloat GainHF; |
rlm@0 | 36 ALfloat DecayTime; |
rlm@0 | 37 ALfloat DecayHFRatio; |
rlm@0 | 38 ALfloat ReflectionsGain; |
rlm@0 | 39 ALfloat ReflectionsDelay; |
rlm@0 | 40 ALfloat LateReverbGain; |
rlm@0 | 41 ALfloat LateReverbDelay; |
rlm@0 | 42 ALfloat AirAbsorptionGainHF; |
rlm@0 | 43 ALfloat RoomRolloffFactor; |
rlm@0 | 44 ALboolean DecayHFLimit; |
rlm@0 | 45 |
rlm@0 | 46 // Additional EAX Reverb Properties |
rlm@0 | 47 ALfloat GainLF; |
rlm@0 | 48 ALfloat DecayLFRatio; |
rlm@0 | 49 ALfloat ReflectionsPan[3]; |
rlm@0 | 50 ALfloat LateReverbPan[3]; |
rlm@0 | 51 ALfloat EchoTime; |
rlm@0 | 52 ALfloat EchoDepth; |
rlm@0 | 53 ALfloat ModulationTime; |
rlm@0 | 54 ALfloat ModulationDepth; |
rlm@0 | 55 ALfloat HFReference; |
rlm@0 | 56 ALfloat LFReference; |
rlm@0 | 57 } Reverb; |
rlm@0 | 58 |
rlm@0 | 59 struct { |
rlm@0 | 60 ALfloat Delay; |
rlm@0 | 61 ALfloat LRDelay; |
rlm@0 | 62 |
rlm@0 | 63 ALfloat Damping; |
rlm@0 | 64 ALfloat Feedback; |
rlm@0 | 65 |
rlm@0 | 66 ALfloat Spread; |
rlm@0 | 67 } Echo; |
rlm@0 | 68 |
rlm@0 | 69 struct { |
rlm@0 | 70 ALfloat Frequency; |
rlm@0 | 71 ALfloat HighPassCutoff; |
rlm@0 | 72 ALint Waveform; |
rlm@0 | 73 } Modulator; |
rlm@0 | 74 |
rlm@0 | 75 struct { |
rlm@0 | 76 ALfloat Gain; |
rlm@0 | 77 } Dedicated; |
rlm@0 | 78 } Params; |
rlm@0 | 79 |
rlm@0 | 80 // Index to itself |
rlm@0 | 81 ALuint effect; |
rlm@0 | 82 } ALeffect; |
rlm@0 | 83 |
rlm@0 | 84 static __inline ALboolean IsReverbEffect(ALenum type) |
rlm@0 | 85 { return type == AL_EFFECT_REVERB || type == AL_EFFECT_EAXREVERB; } |
rlm@0 | 86 |
rlm@0 | 87 ALvoid ReleaseALEffects(ALCdevice *device); |
rlm@0 | 88 |
rlm@0 | 89 #ifdef __cplusplus |
rlm@0 | 90 } |
rlm@0 | 91 #endif |
rlm@0 | 92 |
rlm@0 | 93 #endif |