alEffect.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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_
  5. #include "AL/al.h"
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9. enum {
  10. EAXREVERB = 0,
  11. REVERB,
  12. ECHO,
  13. MODULATOR,
  14. MAX_EFFECTS
  15. };
  16. extern ALboolean DisabledEffects[MAX_EFFECTS];
  17. typedef struct ALeffect
  18. {
  19. // Effect type (AL_EFFECT_NULL, ...)
  20. ALenum type;
  21. struct {
  22. // Shared Reverb Properties
  23. ALfp Density;
  24. ALfp Diffusion;
  25. ALfp Gain;
  26. ALfp GainHF;
  27. ALfp DecayTime;
  28. ALfp DecayHFRatio;
  29. ALfp ReflectionsGain;
  30. ALfp ReflectionsDelay;
  31. ALfp LateReverbGain;
  32. ALfp LateReverbDelay;
  33. ALfp AirAbsorptionGainHF;
  34. ALfp RoomRolloffFactor;
  35. ALboolean DecayHFLimit;
  36. // Additional EAX Reverb Properties
  37. ALfp GainLF;
  38. ALfp DecayLFRatio;
  39. ALfp ReflectionsPan[3];
  40. ALfp LateReverbPan[3];
  41. ALfp EchoTime;
  42. ALfp EchoDepth;
  43. ALfp ModulationTime;
  44. ALfp ModulationDepth;
  45. ALfp HFReference;
  46. ALfp LFReference;
  47. } Reverb;
  48. struct {
  49. ALfp Delay;
  50. ALfp LRDelay;
  51. ALfp Damping;
  52. ALfp Feedback;
  53. ALfp Spread;
  54. } Echo;
  55. struct {
  56. ALfp Frequency;
  57. ALfp HighPassCutoff;
  58. ALint Waveform;
  59. } Modulator;
  60. // Index to itself
  61. ALuint effect;
  62. } ALeffect;
  63. ALvoid ReleaseALEffects(ALCdevice *device);
  64. #ifdef __cplusplus
  65. }
  66. #endif
  67. #endif