16 lines
526 B
C++
16 lines
526 B
C++
#include "limiter_base.hpp"
|
|
#include "basicmaths.h"
|
|
|
|
LimiterBase::LimiterBase(float sampleRate) : sampleRate(sampleRate), gainReduction(1.0f), makeupGain(1.0f)
|
|
{
|
|
setTiming(0.01f, 12.0f);
|
|
}
|
|
|
|
void LimiterBase::setTiming(float attackMs, float releaseMs)
|
|
{
|
|
// Convert milliseconds to coefficient for exponential decay
|
|
// Formula: coeff = exp(-1 / (time_in_samples))
|
|
attackCoeff = expf(-1.0f / (attackMs * 0.001f * sampleRate + 1e-6f));
|
|
releaseCoeff = expf(-1.0f / (releaseMs * 0.001f * sampleRate + 1e-6f));
|
|
}
|