diff --git a/core/Clipper.cpp b/core/Clipper.cpp index 28b206c..8a2c224 100644 --- a/core/Clipper.cpp +++ b/core/Clipper.cpp @@ -10,7 +10,16 @@ void Clipper::process(const float *in, float *out, uint32_t frames) { void Clipper::processStereo(const float *inLeft, const float *inRight, float *outLeft, float *outRight, uint32_t frames) { for (uint32_t i = 0; i < frames; ++i) { - outLeft[i] = inLeft[i] > clip_ ? clip_ : inLeft[i]; - outRight[i] = inRight[i] > clip_ ? clip_ : inRight[i]; + + if (outLeft[i] > 0) { + outLeft[i] = inLeft[i] > clip_ ? clip_ : inLeft[i]; + } else { + outLeft[i] = inLeft[i] < -clip_ ? -clip_ : inLeft[i]; + } + if (outRight[i] > 0) { + outRight[i] = inRight[i] > clip_ ? clip_ : inRight[i]; + } else { + outRight[i] = inRight[i] < -clip_ ? -clip_ : inRight[i]; + } } }