cEffect.h

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 
 All Classes Namespaces Functions Variables Enumerations

Generated on Sat Feb 20 22:55:07 2010 for cAudio by  doxygen 1.6.2