00001 // Copyright (c) 2008-2010 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones 00002 // This file is part of the "cAudio Engine" 00003 // For conditions of distribution and use, see copyright notice in cAudio.h 00004 00005 #ifndef CEFFECT_H 00006 #define CEFFECT_H 00007 00008 #include "../include/IEffect.h" 00009 #include "../Headers/cMutex.h" 00010 #include "../Headers/cEFXFunctions.h" 00011 00012 #ifdef CAUDIO_EFX_ENABLED 00013 00014 #include <AL/al.h> 00015 #include <AL/alc.h> 00016 00017 namespace cAudio 00018 { 00019 class cEffect : public IEffect 00020 { 00021 public: 00022 cEffect(cEFXFunctions* oALFunctions); 00023 virtual ~cEffect(); 00024 00025 virtual const EffectTypes& getType() const; 00026 virtual void setType(const EffectTypes& type); 00027 00028 virtual const sEAXReverbParameters& getEAXReverbParameters() const; 00029 virtual void setEAXReverbParameters(const sEAXReverbParameters& param); 00030 00031 virtual const sReverbParameters& getReverbParameters() const; 00032 virtual void setReverbParameters(const sReverbParameters& param); 00033 00034 virtual const sChorusParameters& getChorusParameters() const; 00035 virtual void setChorusParameters(const sChorusParameters& param); 00036 00037 virtual const sDistortionParameters& getDistortionParameters() const; 00038 virtual void setDistortionParameters(const sDistortionParameters& param); 00039 00040 virtual const sEchoParameters& getEchoParameters() const; 00041 virtual void setEchoParameters(const sEchoParameters& param); 00042 00043 virtual const sFlangerParameters& getFlangerParameters() const; 00044 virtual void setFlangerParameters(const sFlangerParameters& param); 00045 00046 virtual const sFrequencyShiftParameters& getFrequencyShiftParameters() const; 00047 virtual void setFrequencyShiftParameters(const sFrequencyShiftParameters& param); 00048 00049 virtual const sVocalMorpherParameters& getVocalMorpherParameters() const; 00050 virtual void setVocalMorpherParameters(const sVocalMorpherParameters& param); 00051 00052 virtual const sPitchShifterParameters& getPitchShifterParameters() const; 00053 virtual void setPitchShifterParameters(const sPitchShifterParameters& param); 00054 00055 virtual const sRingModulatorParameters& getRingModulatorParameters() const; 00056 virtual void setRingModulatorParameters(const sRingModulatorParameters& param); 00057 00058 virtual const sAutowahParameters& getAutowahParameters() const; 00059 virtual void setAutowahParameters(const sAutowahParameters& param); 00060 00061 virtual const sCompressorParameters& getCompressorParameters() const; 00062 virtual void setCompressorParameters(const sCompressorParameters& param); 00063 00064 virtual const sEqualizerParameters& getEqualizerParameters() const; 00065 virtual void setEqualizerParameters(const sEqualizerParameters& param); 00066 00067 virtual float getMasterVolume() const; 00068 virtual void setMasterVolume(const float& volume); 00069 00070 virtual bool isIgnoringAttenuation() const; 00071 virtual void ignoreAttenuation(const bool& ignore); 00072 00073 virtual IFilter* getFilter() const; 00074 virtual void attachFilter(IFilter* filter); 00075 virtual void removeFilter(); 00076 00077 virtual unsigned int getLastUpdated() const; 00078 virtual bool isValid() const; 00079 00080 ALuint getOpenALEffect() const; 00081 ALuint getOpenALEffectSlot() const; 00082 00083 private: 00084 cEFXFunctions* EFX; 00085 //Mutex for thread syncronization 00086 cAudioMutex Mutex; 00087 00088 EffectTypes Type; 00089 float Volume; 00090 bool IgnoreAttenuation; 00091 unsigned int LastUpdated; 00092 00093 bool Valid; 00094 00095 IFilter* Filter; 00096 00097 ALuint Effect; 00098 ALuint EffectSlot; 00099 00100 bool UpdateEffect(); 00101 bool CheckError(); 00102 ALenum ConvertEffectEnum(EffectTypes type); 00103 ALenum ConvertFrequencyShiftEnum(sFrequencyShiftParameters::ShiftDirection shift); 00104 ALenum ConvertVocalMorphPhonemeEnum(sVocalMorpherParameters::MorpherPhoneme phoneme); 00105 00106 //Storage for all the possible settings for effects 00107 sEAXReverbParameters EAXReverbParam; 00108 sReverbParameters ReverbParam; 00109 sChorusParameters ChorusParam; 00110 sDistortionParameters DistortionParam; 00111 sEchoParameters EchoParam; 00112 sFlangerParameters FlangerParam; 00113 sFrequencyShiftParameters FrequencyShiftParam; 00114 sVocalMorpherParameters VocalMorpherParam; 00115 sPitchShifterParameters PitchShifterParam; 00116 sRingModulatorParameters RingModulatorParam; 00117 sAutowahParameters AutowahParam; 00118 sCompressorParameters CompressorParam; 00119 sEqualizerParameters EqualizerParam; 00120 }; 00121 }; 00122 00123 00124 #endif 00125 00126 #endif
1.6.2