cAudio  2.3.0
3d Audio Engine
 All Classes Namespaces Functions Variables Enumerations Pages
cEffect.h
1 // Copyright (c) 2008-2011 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones, Murat (wolfmanfx) Sari
2 // This file is part of the "cAudio Engine"
3 // For conditions of distribution and use, see copyright notice in cAudio.h
4 
5 #pragma once
6 
7 #include "cAudioDefines.h"
8 
9 #if CAUDIO_EFX_ENABLED == 1
10 
11 #include <al.h>
12 #include <alc.h>
13 #include "cMutex.h"
14 #include "cEFXFunctions.h"
15 #include "cMemoryOverride.h"
16 #include "IEffect.h"
17 
18 namespace cAudio
19 {
20  class cEffect : public IEffect, public cMemoryOverride
21  {
22  public:
23  cEffect(cEFXFunctions* oALFunctions);
24  virtual ~cEffect();
25 
26  virtual const EffectTypes& getType() const;
27  virtual void setType(const EffectTypes& type);
28 
29  virtual const sEAXReverbParameters& getEAXReverbParameters() const;
30  virtual void setEAXReverbParameters(const sEAXReverbParameters& param);
31 
32  virtual const sReverbParameters& getReverbParameters() const;
33  virtual void setReverbParameters(const sReverbParameters& param);
34 
35  virtual const sChorusParameters& getChorusParameters() const;
36  virtual void setChorusParameters(const sChorusParameters& param);
37 
38  virtual const sDistortionParameters& getDistortionParameters() const;
39  virtual void setDistortionParameters(const sDistortionParameters& param);
40 
41  virtual const sEchoParameters& getEchoParameters() const;
42  virtual void setEchoParameters(const sEchoParameters& param);
43 
44  virtual const sFlangerParameters& getFlangerParameters() const;
45  virtual void setFlangerParameters(const sFlangerParameters& param);
46 
47  virtual const sFrequencyShiftParameters& getFrequencyShiftParameters() const;
48  virtual void setFrequencyShiftParameters(const sFrequencyShiftParameters& param);
49 
50  virtual const sVocalMorpherParameters& getVocalMorpherParameters() const;
51  virtual void setVocalMorpherParameters(const sVocalMorpherParameters& param);
52 
53  virtual const sPitchShifterParameters& getPitchShifterParameters() const;
54  virtual void setPitchShifterParameters(const sPitchShifterParameters& param);
55 
56  virtual const sRingModulatorParameters& getRingModulatorParameters() const;
57  virtual void setRingModulatorParameters(const sRingModulatorParameters& param);
58 
59  virtual const sAutowahParameters& getAutowahParameters() const;
60  virtual void setAutowahParameters(const sAutowahParameters& param);
61 
62  virtual const sCompressorParameters& getCompressorParameters() const;
63  virtual void setCompressorParameters(const sCompressorParameters& param);
64 
65  virtual const sEqualizerParameters& getEqualizerParameters() const;
66  virtual void setEqualizerParameters(const sEqualizerParameters& param);
67 
68  virtual float getMasterVolume() const;
69  virtual void setMasterVolume(const float& volume);
70 
71  virtual bool isIgnoringAttenuation() const;
72  virtual void ignoreAttenuation(const bool& ignore);
73 
74  virtual IFilter* getFilter() const;
75  virtual void attachFilter(IFilter* filter);
76  virtual void removeFilter();
77 
78  virtual unsigned int getLastUpdated() const;
79  virtual bool isValid() const;
80 
81  ALuint getOpenALEffect() const;
82  ALuint getOpenALEffectSlot() const;
83 
84  private:
85  cEFXFunctions* EFX;
86  //Mutex for thread syncronization
87  cAudioMutex Mutex;
88 
89  EffectTypes Type;
90  float Volume;
91  bool IgnoreAttenuation;
92  unsigned int LastUpdated;
93 
94  bool Valid;
95 
96  IFilter* Filter;
97 
98  ALuint Effect;
99  ALuint EffectSlot;
100 
101  bool UpdateEffect();
102  bool CheckError();
103  ALenum ConvertEffectEnum(EffectTypes type);
104  ALenum ConvertFrequencyShiftEnum(sFrequencyShiftParameters::ShiftDirection shift);
105  ALenum ConvertVocalMorphPhonemeEnum(sVocalMorpherParameters::MorpherPhoneme phoneme);
106 
107  //Storage for all the possible settings for effects
108  sEAXReverbParameters EAXReverbParam;
109  sReverbParameters ReverbParam;
110  sChorusParameters ChorusParam;
111  sDistortionParameters DistortionParam;
112  sEchoParameters EchoParam;
113  sFlangerParameters FlangerParam;
114  sFrequencyShiftParameters FrequencyShiftParam;
115  sVocalMorpherParameters VocalMorpherParam;
116  sPitchShifterParameters PitchShifterParam;
117  sRingModulatorParameters RingModulatorParam;
118  sAutowahParameters AutowahParam;
119  sCompressorParameters CompressorParam;
120  sEqualizerParameters EqualizerParam;
121  };
122 };
123 
124 
125 #endif