39 void setMix(
float newMixValue);
63 static float diodic(
float x) {
return sign(x) * (2.0f * std::abs(x) - x * x); }
68 return x * (std::abs(x) + a) / (x * x + (a - 1.0f) * std::abs(x) + 1.0f);
73 return std::sin(MathConstants<float>::halfPi * jlimit(-1.0f, 1.0f, x));
79 float sgn =
static_cast<float>(
sign(x));
80 x = std::pow(std::abs(x), k);
81 x = std::pow(std::atan(x), (1.0f / k));
86 template <
typename T>
static int sign(T val);
101 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(
Saturation)
Applies distortion to an audio signal using various transfer functions.
Definition Saturation.h:8
OwnedArray< IIRFilter > m_highCutFilters
Definition Saturation.h:99
ParameterList
Definition Saturation.h:43
@ preGain
Definition Saturation.h:44
@ lowCut
Definition Saturation.h:46
@ hiCut
Definition Saturation.h:47
@ mix
Definition Saturation.h:48
@ postGain
Definition Saturation.h:45
float m_mix
Definition Saturation.h:94
OwnedArray< IIRFilter > m_lowCutFilters
Definition Saturation.h:98
double m_sampleRate
Definition Saturation.h:90
void setOutputGainDb(float gainInDb)
Definition Saturation.cpp:47
void setHighCutFrequency(float newCutoffFrequency)
Definition Saturation.cpp:59
float processSample(float sample, int channel)
Definition Saturation.cpp:31
void setLowCutFrequency(float newCutoffFrequency)
Definition Saturation.cpp:51
void setInputGainDb(float gainInDb)
Definition Saturation.cpp:45
Saturation()
Definition Saturation.cpp:3
FunctionType
Definition Saturation.h:11
@ diodic
Definition Saturation.h:12
@ saturation3
Definition Saturation.h:16
@ hyperbolicTangent
Definition Saturation.h:13
@ saturation2
Definition Saturation.h:15
@ saturation1
Definition Saturation.h:14
Channel
Definition Saturation.h:52
@ left
Definition Saturation.h:53
@ right
Definition Saturation.h:54
float m_outputGain
Definition Saturation.h:92
const std::map< FunctionType, float(*)(float)> functions
Definition Saturation.h:19
static int sign(T val)
Definition Saturation.cpp:43
dsp::WaveShaper< float > m_waveshaper
Definition Saturation.h:96
void setMix(float newMixValue)
Definition Saturation.cpp:67
~Saturation()
Definition Saturation.cpp:12
void setFunctionType(FunctionType function)
Definition Saturation.cpp:49
const int NUM_CHANNELS_MAX
Definition Saturation.h:88
float m_inputGain
Definition Saturation.h:93
void prepareToPlay(double sampleRate, int blockSize)
Definition Saturation.cpp:14
Definition AirAbsorptionFilter.cpp:2
Definition Saturation.h:58
static float anhystericTapeRecordingErf(float x)
Definition Saturation.h:61
static float hyperbolicTangent(float x)
Definition Saturation.h:59
static float saturation1(float x)
Definition Saturation.h:65
static float saturation3(float x)
Definition Saturation.h:76
static float diodic(float x)
Definition Saturation.h:63
static float saturation2(float x)
Definition Saturation.h:71