SquidgeDSP/core/Clipper.cpp

26 lines
687 B
C++
Raw Normal View History

2026-08-02 20:03:04 +01:00
#include "Clipper.hpp"
Clipper::Clipper(float init_clip) : clip_(init_clip) {}
void Clipper::process(const float *in, float *out, uint32_t frames) {
for (uint32_t i = 0; i < frames; ++i) {
out[i] = in[i] > clip_ ? clip_ : in[i];
}
}
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] = clip(inLeft[i]);
outRight[i] = clip(inRight[i]);
2026-08-02 20:03:04 +01:00
}
}
float Clipper::clip(const float in) {
float out = in;
if (in > 0) {
out = in > clip_ ? clip_ : in;
} else {
out = in < -clip_ ? -clip_ : in;
}
return out;
}