mirror of https://github.com/probonopd/MiniDexed
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
4.4 KiB
167 lines
4.4 KiB
3 months ago
|
/*
|
||
|
* AudioEffect Utilities
|
||
|
* Javier Nonis (https://github.com/jnonis) - 2024
|
||
|
*/
|
||
|
#ifndef _EFFECTS_H
|
||
|
#define _EFFECTS_H
|
||
|
|
||
|
#include <string>
|
||
|
#include "effect_audio/effect_base.h"
|
||
|
#include "effect_audio/effect_chorus.h"
|
||
|
#include "effect_audio/effect_delay.h"
|
||
|
#include "effect_audio/effect_lpf.h"
|
||
|
#include "effect_audio/effect_ds1.h"
|
||
|
#include "effect_audio/effect_bigmuff.h"
|
||
|
#include "effect_audio/effect_talreverb3.h"
|
||
|
#include "effect_audio/effect_platervbstereo.h"
|
||
|
#include "effect_audio/effect_mverb.h"
|
||
|
#include "effect_audio/effect_3bandeq.h"
|
||
|
#include "effect_audio/effect_phaser.h"
|
||
|
#include "effect_audio/effect_aphaser.h"
|
||
|
#include "effect_audio/effect_flanger.h"
|
||
|
|
||
|
class AudioEffects
|
||
|
{
|
||
|
public:
|
||
|
enum Types
|
||
|
{
|
||
|
NONE = AudioEffect::ID,
|
||
|
CHORUS = AudioEffectChorus::ID,
|
||
|
DELAY = AudioEffectDelay::ID,
|
||
|
LPF = AudioEffectLPF::ID,
|
||
|
DS1 = AudioEffectDS1::ID,
|
||
|
BIGMUFF = AudioEffectBigMuff::ID,
|
||
|
TALREVERB3 = AudioEffectTalReverb3::ID,
|
||
|
REVERB = AudioEffectPlateReverb::ID,
|
||
|
MVERB = AudioEffectMVerb::ID,
|
||
|
EQ3BAND = AudioEffect3BandEQ::ID,
|
||
|
PHASER = AudioEffectPhaser::ID,
|
||
|
APHASER = AudioEffectAPhaser::ID,
|
||
|
FLANGER = AudioEffectFlanger::ID,
|
||
|
UNKNOWN
|
||
|
};
|
||
|
};
|
||
|
|
||
|
inline AudioEffect* newAudioEffect(unsigned type, float32_t samplerate)
|
||
|
{
|
||
|
switch (type)
|
||
|
{
|
||
|
case AudioEffects::Types::CHORUS:
|
||
|
return new AudioEffectChorus(samplerate);
|
||
|
case AudioEffects::Types::DELAY:
|
||
|
return new AudioEffectDelay(samplerate);
|
||
|
case AudioEffects::Types::LPF:
|
||
|
return new AudioEffectLPF(samplerate);
|
||
|
case AudioEffects::Types::DS1:
|
||
|
return new AudioEffectDS1(samplerate);
|
||
|
case AudioEffects::Types::BIGMUFF:
|
||
|
return new AudioEffectBigMuff(samplerate);
|
||
|
case AudioEffects::Types::TALREVERB3:
|
||
|
return new AudioEffectTalReverb3(samplerate);
|
||
|
case AudioEffects::Types::REVERB:
|
||
|
return new AudioEffectPlateReverb(samplerate);
|
||
|
case AudioEffects::Types::MVERB:
|
||
|
return new AudioEffectMVerb(samplerate);
|
||
|
case AudioEffects::Types::EQ3BAND:
|
||
|
return new AudioEffect3BandEQ(samplerate);
|
||
|
case AudioEffects::Types::PHASER:
|
||
|
return new AudioEffectPhaser(samplerate);
|
||
|
case AudioEffects::Types::APHASER:
|
||
|
return new AudioEffectAPhaser(samplerate);
|
||
|
case AudioEffects::Types::FLANGER:
|
||
|
return new AudioEffectFlanger(samplerate);
|
||
|
case AudioEffects::Types::NONE:
|
||
|
default:
|
||
|
return new AudioEffect(samplerate);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
inline std::string ToFXType(int nValue)
|
||
|
{
|
||
|
switch (nValue)
|
||
|
{
|
||
|
case AudioEffects::Types::CHORUS:
|
||
|
return AudioEffectChorus::NAME;
|
||
|
case AudioEffects::Types::DELAY:
|
||
|
return AudioEffectDelay::NAME;
|
||
|
case AudioEffects::Types::LPF:
|
||
|
return AudioEffectLPF::NAME;
|
||
|
case AudioEffects::Types::DS1:
|
||
|
return AudioEffectDS1::NAME;
|
||
|
case AudioEffects::Types::BIGMUFF:
|
||
|
return AudioEffectBigMuff::NAME;
|
||
|
case AudioEffects::Types::TALREVERB3:
|
||
|
return AudioEffectTalReverb3::NAME;
|
||
|
case AudioEffects::Types::REVERB:
|
||
|
return AudioEffectPlateReverb::NAME;
|
||
|
case AudioEffects::Types::MVERB:
|
||
|
return AudioEffectMVerb::NAME;
|
||
|
case AudioEffects::Types::EQ3BAND:
|
||
|
return AudioEffect3BandEQ::NAME;
|
||
|
case AudioEffects::Types::PHASER:
|
||
|
return AudioEffectPhaser::NAME;
|
||
|
case AudioEffects::Types::APHASER:
|
||
|
return AudioEffectAPhaser::NAME;
|
||
|
case AudioEffects::Types::FLANGER:
|
||
|
return AudioEffectFlanger::NAME;
|
||
|
case AudioEffects::Types::NONE:
|
||
|
default:
|
||
|
return AudioEffect::NAME;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
inline std::string ToMix (int nValue)
|
||
|
{
|
||
|
switch (nValue)
|
||
|
{
|
||
|
case 0:
|
||
|
return "Dry";
|
||
|
case 100:
|
||
|
return "Wet";
|
||
|
default:
|
||
|
return std::to_string (nValue);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
inline std::string ToDelayTime (int nValue)
|
||
|
{
|
||
|
if (nValue < (int) (AudioEffectDelay::MAX_DELAY_TIME * 1000)) {
|
||
|
return std::to_string (nValue);
|
||
|
}
|
||
|
switch (nValue - AudioEffectDelay::MAX_DELAY_TIME * 1000)
|
||
|
{
|
||
|
case AudioEffectDelay::SyncTime::T_1_32:
|
||
|
return "1/32";
|
||
|
case AudioEffectDelay::SyncTime::T_1_24:
|
||
|
return "1/24";
|
||
|
case AudioEffectDelay::SyncTime::T_1_16:
|
||
|
return "1/16";
|
||
|
case AudioEffectDelay::SyncTime::T_1_12:
|
||
|
return "1/12";
|
||
|
case AudioEffectDelay::SyncTime::T_3_32:
|
||
|
return "3/32";
|
||
|
case AudioEffectDelay::SyncTime::T_1_8:
|
||
|
return "1/8";
|
||
|
case AudioEffectDelay::SyncTime::T_1_6:
|
||
|
return "1/6";
|
||
|
case AudioEffectDelay::SyncTime::T_3_16:
|
||
|
return "3/16";
|
||
|
case AudioEffectDelay::SyncTime::T_1_4:
|
||
|
return "1/4";
|
||
|
case AudioEffectDelay::SyncTime::T_1_3:
|
||
|
return "1/3";
|
||
|
case AudioEffectDelay::SyncTime::T_3_8:
|
||
|
return "3/8";
|
||
|
case AudioEffectDelay::SyncTime::T_1_2:
|
||
|
return "1/2";
|
||
|
case AudioEffectDelay::SyncTime::T_2_3:
|
||
|
return "2/3";
|
||
|
case AudioEffectDelay::SyncTime::T_3_4:
|
||
|
return "3/4";
|
||
|
case AudioEffectDelay::SyncTime::T_1_1:
|
||
|
default:
|
||
|
return "1/1";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#endif // _EFFECTS_H
|