Added ability to add effect presets.

This commit is contained in:
Joshua Jones 2010-02-14 03:32:24 +00:00
parent c3bd49da8d
commit f69d925b4f
9 changed files with 508 additions and 6 deletions

View File

@ -14,7 +14,7 @@ using namespace std;
int main(int argc, char* argv[])
{
//Some fancy text
cout << "cAudio 2.0.0 Tutorial 1: 2DSound \n \n";
cout << "cAudio 2.0.0 Tutorial 1: Basic 2D Audio. \n \n";
//Create an uninitialized Audio Manager
cAudio::IAudioManager* manager = cAudio::createAudioManager(false);

View File

@ -15,7 +15,7 @@ using namespace std;
int main(int argc, char* argv[])
{
//Some fancy text
cout << "cAudio 2.0.0 Tutorial 2: 3dSound \n \n";
cout << "cAudio 2.0.0 Tutorial 2: Basic 3D Audio. \n \n";
//Hold audio source x position
float rot = 0;

View File

@ -19,7 +19,7 @@ using namespace std;
int main(int argc, char* argv[])
{
//Some fancy text
cout << "cAudio 2.0.0 Tutorial 3: MemoryPlayback \n \n";
cout << "cAudio 2.0.0 Tutorial 3: Memory Playback. \n \n"
//Create an uninitialized Audio Manager
cAudio::IAudioManager* manager = cAudio::createAudioManager(false);

View File

@ -17,7 +17,7 @@ const cAudio::AudioFormats CAPTURE_FORMAT = cAudio::EAF_16BIT_MONO;
int main(int argc, char* argv[])
{
//Some fancy text
cout << "cAudio 2.0.0 Tutorial 4: Capturing Audio \n \n";
cout << "cAudio 2.0.0 Tutorial 4: Capturing Audio. \n \n";
std::string formatName;

View File

@ -14,7 +14,7 @@ using namespace std;
int main(int argc, char* argv[])
{
//Some fancy text
cout << "cAudio 2.0.0 Tutorial 5: Audio Effects \n \n";
cout << "cAudio 2.0.0 Tutorial 5: Basic Audio Effects. \n \n";
//Create an uninitialized Audio Manager
cAudio::IAudioManager* manager = cAudio::createAudioManager(false);

View File

@ -8,6 +8,7 @@
#include "../include/IAudioEffects.h"
#include "../Headers/cMutex.h"
#include "../Headers/cEFXFunctions.h"
#include <map>
#ifdef CAUDIO_EFX_ENABLED
@ -26,6 +27,38 @@ namespace cAudio
virtual bool isEffectSupported(const EffectTypes& type) const;
virtual bool isFilterSupported(const FilterTypes& type) const;
virtual bool addEAXReverbEffectPreset(const char* name, const sEAXReverbParameters& setting);
virtual bool addReverbEffectPreset(const char* name, const sReverbParameters& setting);
virtual bool addChorusEffectPreset(const char* name, const sChorusParameters& setting);
virtual bool addDistortionEffectPreset(const char* name, const sDistortionParameters& setting);
virtual bool addEchoEffectPreset(const char* name, const sEchoParameters& setting);
virtual bool addFlangerEffectPreset(const char* name, const sFlangerParameters& setting);
virtual bool addFrequencyShiftEffectPreset(const char* name, const sFrequencyShiftParameters& setting);
virtual bool addVocalMorpherEffectPreset(const char* name, const sVocalMorpherParameters& setting);
virtual bool addPitchShifterEffectPreset(const char* name, const sPitchShifterParameters& setting);
virtual bool addRingModulatorEffectPreset(const char* name, const sRingModulatorParameters& setting);
virtual bool addAutowahEffectPreset(const char* name, const sAutowahParameters& setting);
virtual bool addCompressorEffectPreset(const char* name, const sCompressorParameters& setting);
virtual bool addEqualizerEffectPreset(const char* name, const sEqualizerParameters& setting);
virtual sEAXReverbParameters getEAXReverbEffectPreset(const char* name);
virtual sReverbParameters getReverbEffectPreset(const char* name);
virtual sChorusParameters getChorusEffectPreset(const char* name);
virtual sDistortionParameters getDistortionEffectPreset(const char* name);
virtual sEchoParameters getEchoEffectPreset(const char* name);
virtual sFlangerParameters getFlangerEffectPreset(const char* name);
virtual sFrequencyShiftParameters getFrequencyShiftEffectPreset(const char* name);
virtual sVocalMorpherParameters getVocalMorpherEffectPreset(const char* name);
virtual sPitchShifterParameters getPitchShifterEffectPreset(const char* name);
virtual sRingModulatorParameters getRingModulatorEffectPreset(const char* name);
virtual sAutowahParameters getAutowahEffectPreset(const char* name);
virtual sCompressorParameters getCompressorEffectPreset(const char* name);
virtual sEqualizerParameters getEqualizerEffectPreset(const char* name);
virtual void removePreset(const EffectTypes& type, const char* name);
virtual bool isPresetRegistered(const EffectTypes& type, const char* name);
virtual void removeAllPresets(const EffectTypes& type);
cEFXFunctions* getEFXInterface();
void checkEFXSupportDetails();
@ -35,6 +68,20 @@ namespace cAudio
unsigned int MaxEffectsSupported;
bool SupportedEffects[EET_COUNT];
bool SupportedFilters[EFT_COUNT];
std::map<std::string, sEAXReverbParameters> EAXReverbPresets;
std::map<std::string, sReverbParameters> ReverbPresets;
std::map<std::string, sChorusParameters> ChorusPresets;
std::map<std::string, sDistortionParameters> DistortionPresets;
std::map<std::string, sEchoParameters> EchoPresets;
std::map<std::string, sFlangerParameters> FlangerPresets;
std::map<std::string, sFrequencyShiftParameters> FrequencyShiftPresets;
std::map<std::string, sVocalMorpherParameters> VocalMorpherPresets;
std::map<std::string, sPitchShifterParameters> PitchShifterPresets;
std::map<std::string, sRingModulatorParameters> RingModulatorPresets;
std::map<std::string, sAutowahParameters> AutowahPresets;
std::map<std::string, sCompressorParameters> CompressorPresets;
std::map<std::string, sEqualizerParameters> EqualizerPresets;
};
};

View File

@ -5,6 +5,7 @@
#include "../Headers/cAudioEffects.h"
#include "../Headers/cFilter.h"
#include "../Headers/cEffect.h"
#include "../Headers/cUtils.h"
#ifdef CAUDIO_EFX_ENABLED
@ -65,6 +66,428 @@ bool cAudioEffects::isFilterSupported(const FilterTypes& type) const
return SupportedFilters[type];
}
bool cAudioEffects::addEAXReverbEffectPreset(const char* name, const sEAXReverbParameters& setting)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
EAXReverbPresets[safeName] = setting;
return true;
}
bool cAudioEffects::addReverbEffectPreset(const char* name, const sReverbParameters& setting)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
ReverbPresets[safeName] = setting;
return true;
}
bool cAudioEffects::addChorusEffectPreset(const char* name, const sChorusParameters& setting)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
ChorusPresets[safeName] = setting;
return true;
}
bool cAudioEffects::addDistortionEffectPreset(const char* name, const sDistortionParameters& setting)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
DistortionPresets[safeName] = setting;
return true;
}
bool cAudioEffects::addEchoEffectPreset(const char* name, const sEchoParameters& setting)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
EchoPresets[safeName] = setting;
return true;
}
bool cAudioEffects::addFlangerEffectPreset(const char* name, const sFlangerParameters& setting)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
FlangerPresets[safeName] = setting;
return true;
}
bool cAudioEffects::addFrequencyShiftEffectPreset(const char* name, const sFrequencyShiftParameters& setting)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
FrequencyShiftPresets[safeName] = setting;
return true;
}
bool cAudioEffects::addVocalMorpherEffectPreset(const char* name, const sVocalMorpherParameters& setting)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
VocalMorpherPresets[safeName] = setting;
return true;
}
bool cAudioEffects::addPitchShifterEffectPreset(const char* name, const sPitchShifterParameters& setting)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
PitchShifterPresets[safeName] = setting;
return true;
}
bool cAudioEffects::addRingModulatorEffectPreset(const char* name, const sRingModulatorParameters& setting)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
RingModulatorPresets[safeName] = setting;
return true;
}
bool cAudioEffects::addAutowahEffectPreset(const char* name, const sAutowahParameters& setting)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
AutowahPresets[safeName] = setting;
return true;
}
bool cAudioEffects::addCompressorEffectPreset(const char* name, const sCompressorParameters& setting)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
CompressorPresets[safeName] = setting;
return true;
}
bool cAudioEffects::addEqualizerEffectPreset(const char* name, const sEqualizerParameters& setting)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
EqualizerPresets[safeName] = setting;
return true;
}
sEAXReverbParameters cAudioEffects::getEAXReverbEffectPreset(const char* name)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
std::map<std::string, sEAXReverbParameters>::iterator it = EAXReverbPresets.find(safeName);
if(it != EAXReverbPresets.end())
{
return it->second;
}
return sEAXReverbParameters();
}
sReverbParameters cAudioEffects::getReverbEffectPreset(const char* name)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
std::map<std::string, sReverbParameters>::iterator it = ReverbPresets.find(safeName);
if(it != ReverbPresets.end())
{
return it->second;
}
return sReverbParameters();
}
sChorusParameters cAudioEffects::getChorusEffectPreset(const char* name)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
std::map<std::string, sChorusParameters>::iterator it = ChorusPresets.find(safeName);
if(it != ChorusPresets.end())
{
return it->second;
}
return sChorusParameters();
}
sDistortionParameters cAudioEffects::getDistortionEffectPreset(const char* name)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
std::map<std::string, sDistortionParameters>::iterator it = DistortionPresets.find(safeName);
if(it != DistortionPresets.end())
{
return it->second;
}
return sDistortionParameters();
}
sEchoParameters cAudioEffects::getEchoEffectPreset(const char* name)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
std::map<std::string, sEchoParameters>::iterator it = EchoPresets.find(safeName);
if(it != EchoPresets.end())
{
return it->second;
}
return sEchoParameters();
}
sFlangerParameters cAudioEffects::getFlangerEffectPreset(const char* name)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
std::map<std::string, sFlangerParameters>::iterator it = FlangerPresets.find(safeName);
if(it != FlangerPresets.end())
{
return it->second;
}
return sFlangerParameters();
}
sFrequencyShiftParameters cAudioEffects::getFrequencyShiftEffectPreset(const char* name)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
std::map<std::string, sFrequencyShiftParameters>::iterator it = FrequencyShiftPresets.find(safeName);
if(it != FrequencyShiftPresets.end())
{
return it->second;
}
return sFrequencyShiftParameters();
}
sVocalMorpherParameters cAudioEffects::getVocalMorpherEffectPreset(const char* name)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
std::map<std::string, sVocalMorpherParameters>::iterator it = VocalMorpherPresets.find(safeName);
if(it != VocalMorpherPresets.end())
{
return it->second;
}
return sVocalMorpherParameters();
}
sPitchShifterParameters cAudioEffects::getPitchShifterEffectPreset(const char* name)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
std::map<std::string, sPitchShifterParameters>::iterator it = PitchShifterPresets.find(safeName);
if(it != PitchShifterPresets.end())
{
return it->second;
}
return sPitchShifterParameters();
}
sRingModulatorParameters cAudioEffects::getRingModulatorEffectPreset(const char* name)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
std::map<std::string, sRingModulatorParameters>::iterator it = RingModulatorPresets.find(safeName);
if(it != RingModulatorPresets.end())
{
return it->second;
}
return sRingModulatorParameters();
}
sAutowahParameters cAudioEffects::getAutowahEffectPreset(const char* name)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
std::map<std::string, sAutowahParameters>::iterator it = AutowahPresets.find(safeName);
if(it != AutowahPresets.end())
{
return it->second;
}
return sAutowahParameters();
}
sCompressorParameters cAudioEffects::getCompressorEffectPreset(const char* name)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
std::map<std::string, sCompressorParameters>::iterator it = CompressorPresets.find(safeName);
if(it != CompressorPresets.end())
{
return it->second;
}
return sCompressorParameters();
}
sEqualizerParameters cAudioEffects::getEqualizerEffectPreset(const char* name)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
std::map<std::string, sEqualizerParameters>::iterator it = EqualizerPresets.find(safeName);
if(it != EqualizerPresets.end())
{
return it->second;
}
return sEqualizerParameters();
}
void cAudioEffects::removePreset(const EffectTypes& type, const char* name)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
switch(type)
{
case EET_EAX_REVERB:
EAXReverbPresets.erase(safeName);
break;
case EET_REVERB:
ReverbPresets.erase(safeName);
break;
case EET_CHORUS:
ChorusPresets.erase(safeName);
break;
case EET_DISTORTION:
DistortionPresets.erase(safeName);
break;
case EET_ECHO:
EchoPresets.erase(safeName);
break;
case EET_FLANGER:
FlangerPresets.erase(safeName);
break;
case EET_FREQUENCY_SHIFTER:
FrequencyShiftPresets.erase(safeName);
break;
case EET_VOCAL_MORPHER:
VocalMorpherPresets.erase(safeName);
break;
case EET_PITCH_SHIFTER:
PitchShifterPresets.erase(safeName);
break;
case EET_RING_MODULATOR:
RingModulatorPresets.erase(safeName);
break;
case EET_AUTOWAH:
AutowahPresets.erase(safeName);
break;
case EET_COMPRESSOR:
CompressorPresets.erase(safeName);
break;
case EET_EQUALIZER:
EqualizerPresets.erase(safeName);
break;
default:
break;
}
}
bool cAudioEffects::isPresetRegistered(const EffectTypes& type, const char* name)
{
cAudioMutexBasicLock lock(Mutex);
std::string safeName = safeCStr(name);
switch(type)
{
case EET_EAX_REVERB:
return (EAXReverbPresets.find(safeName) != EAXReverbPresets.end());
break;
case EET_REVERB:
return (ReverbPresets.find(safeName) != ReverbPresets.end());
break;
case EET_CHORUS:
return (ChorusPresets.find(safeName) != ChorusPresets.end());
break;
case EET_DISTORTION:
return (DistortionPresets.find(safeName) != DistortionPresets.end());
break;
case EET_ECHO:
return (EchoPresets.find(safeName) != EchoPresets.end());
break;
case EET_FLANGER:
return (FlangerPresets.find(safeName) != FlangerPresets.end());
break;
case EET_FREQUENCY_SHIFTER:
return (FrequencyShiftPresets.find(safeName) != FrequencyShiftPresets.end());
break;
case EET_VOCAL_MORPHER:
return (VocalMorpherPresets.find(safeName) != VocalMorpherPresets.end());
break;
case EET_PITCH_SHIFTER:
return (PitchShifterPresets.find(safeName) != PitchShifterPresets.end());
break;
case EET_RING_MODULATOR:
return (RingModulatorPresets.find(safeName) != RingModulatorPresets.end());
break;
case EET_AUTOWAH:
return (AutowahPresets.find(safeName) != AutowahPresets.end());
break;
case EET_COMPRESSOR:
return (CompressorPresets.find(safeName) != CompressorPresets.end());
break;
case EET_EQUALIZER:
return (EqualizerPresets.find(safeName) != EqualizerPresets.end());
break;
default:
return false;
break;
}
}
void cAudioEffects::removeAllPresets(const EffectTypes& type)
{
switch(type)
{
case EET_EAX_REVERB:
EAXReverbPresets.clear();
break;
case EET_REVERB:
ReverbPresets.clear();
break;
case EET_CHORUS:
ChorusPresets.clear();
break;
case EET_DISTORTION:
DistortionPresets.clear();
break;
case EET_ECHO:
EchoPresets.clear();
break;
case EET_FLANGER:
FlangerPresets.clear();
break;
case EET_FREQUENCY_SHIFTER:
FrequencyShiftPresets.clear();
break;
case EET_VOCAL_MORPHER:
VocalMorpherPresets.clear();
break;
case EET_PITCH_SHIFTER:
PitchShifterPresets.clear();
break;
case EET_RING_MODULATOR:
RingModulatorPresets.clear();
break;
case EET_AUTOWAH:
AutowahPresets.clear();
break;
case EET_COMPRESSOR:
CompressorPresets.clear();
break;
case EET_EQUALIZER:
EqualizerPresets.clear();
break;
default:
EAXReverbPresets.clear();
ReverbPresets.clear();
ChorusPresets.clear();
DistortionPresets.clear();
EchoPresets.clear();
FlangerPresets.clear();
FrequencyShiftPresets.clear();
VocalMorpherPresets.clear();
PitchShifterPresets.clear();
RingModulatorPresets.clear();
AutowahPresets.clear();
CompressorPresets.clear();
EqualizerPresets.clear();
break;
}
}
cEFXFunctions* cAudioEffects::getEFXInterface()
{
return &EFXInterface;

View File

@ -40,6 +40,38 @@ namespace cAudio
*/
virtual bool isFilterSupported(const FilterTypes& type) const = 0;
virtual bool addEAXReverbEffectPreset(const char* name, const sEAXReverbParameters& setting) = 0;
virtual bool addReverbEffectPreset(const char* name, const sReverbParameters& setting) = 0;
virtual bool addChorusEffectPreset(const char* name, const sChorusParameters& setting) = 0;
virtual bool addDistortionEffectPreset(const char* name, const sDistortionParameters& setting) = 0;
virtual bool addEchoEffectPreset(const char* name, const sEchoParameters& setting) = 0;
virtual bool addFlangerEffectPreset(const char* name, const sFlangerParameters& setting) = 0;
virtual bool addFrequencyShiftEffectPreset(const char* name, const sFrequencyShiftParameters& setting) = 0;
virtual bool addVocalMorpherEffectPreset(const char* name, const sVocalMorpherParameters& setting) = 0;
virtual bool addPitchShifterEffectPreset(const char* name, const sPitchShifterParameters& setting) = 0;
virtual bool addRingModulatorEffectPreset(const char* name, const sRingModulatorParameters& setting) = 0;
virtual bool addAutowahEffectPreset(const char* name, const sAutowahParameters& setting) = 0;
virtual bool addCompressorEffectPreset(const char* name, const sCompressorParameters& setting) = 0;
virtual bool addEqualizerEffectPreset(const char* name, const sEqualizerParameters& setting) = 0;
virtual sEAXReverbParameters getEAXReverbEffectPreset(const char* name) = 0;
virtual sReverbParameters getReverbEffectPreset(const char* name) = 0;
virtual sChorusParameters getChorusEffectPreset(const char* name) = 0;
virtual sDistortionParameters getDistortionEffectPreset(const char* name) = 0;
virtual sEchoParameters getEchoEffectPreset(const char* name) = 0;
virtual sFlangerParameters getFlangerEffectPreset(const char* name) = 0;
virtual sFrequencyShiftParameters getFrequencyShiftEffectPreset(const char* name) = 0;
virtual sVocalMorpherParameters getVocalMorpherEffectPreset(const char* name) = 0;
virtual sPitchShifterParameters getPitchShifterEffectPreset(const char* name) = 0;
virtual sRingModulatorParameters getRingModulatorEffectPreset(const char* name) = 0;
virtual sAutowahParameters getAutowahEffectPreset(const char* name) = 0;
virtual sCompressorParameters getCompressorEffectPreset(const char* name) = 0;
virtual sEqualizerParameters getEqualizerEffectPreset(const char* name) = 0;
virtual void removePreset(const EffectTypes& type, const char* name) = 0;
virtual bool isPresetRegistered(const EffectTypes& type, const char* name) = 0;
virtual void removeAllPresets(const EffectTypes& type) = 0;
protected:
private:
};

View File

@ -30,7 +30,7 @@ inline float getRandomFloat(float fMin, float fMax)
int main(int argc, char* argv[])
{
//Some fancy text
cout << "cAudio 1.7.1 Stress Test \n \n";
cout << "cAudio 2.0.0 Stress Test \n \n";
srand(time(NULL));
unsigned int startTick = clock();