#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)); }