59 static_assert(std::is_floating_point<T>::value,
60 "Must be provided with a floating point template type");
67 _postGain(Parameters::POSTGAIN.defaultValue),
68 _tweak(Parameters::TWEAK.defaultValue),
69 _mode(Parameters::MODE.defaultValue) { }
173 template <
typename T>
180 return _processSine(inSample);
183 return _processParabolicSoft(inSample);
186 return _processParabolicHard(inSample);
189 return _processAsymmetricSine(inSample);
192 return _processExponent(inSample);
195 return _processClipper(inSample);
198 return _processSine(inSample);
202 template <
typename T>
211 template <
typename T>
220 template <
typename T>
229 template <
typename T>
238 template <
typename T>
246 template <
typename T>
250 const T tweakInverted {1 - _tweak};
254 0.3 * sin(3 * inSample) * tweakInverted +
255 0.15 * sin(5 * inSample) * tweakInverted +
256 0.075 * sin(7 * inSample) * tweakInverted +
257 0.0375 * sin(9 * inSample) * tweakInverted +
258 0.01875 * sin(11 * inSample) * tweakInverted
260 * _postGain / 1.5 * -1;
T BoundsCheck(T val) const
T process(T inSample) const
T _processAsymmetricSine(T inSample) const
void setPostGain(double val)
T _processClipper(T inSample) const
T _processSine(T inSample) const
void setTweak(double val)
T _processExponent(T inSample) const
void setPreGain(double val)
T _processParabolicHard(T inSample) const
T _processParabolicSoft(T inSample) const
static constexpr int PARABOLIC_SOFT
static constexpr int SINE
static constexpr int CLIPPER
static constexpr int EXPONENT
static constexpr int PARABOLIC_HARD
static constexpr int ASYMMETRIC_SINE
const ParameterDefinition::RangedParameter< double > TWEAK(0, 1, 0)
const ParameterDefinition::RangedParameter< double > POSTGAIN(0, 2, 0.5)
const ParameterDefinition::RangedParameter< double > PREGAIN(0, 2, 1)
constexpr double DOUBLE_PI
constexpr double DOUBLE_E