cAudio 2.3.0
3d Audio Engine
Loading...
Searching...
No Matches
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
18namespace 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
Main namespace for the entire cAudio library.
Definition: cAudioCapture.h:16