BizHawk/waterbox/ares64/ares/nall/dsp/iir/dc-removal.hpp

28 lines
383 B
C++

#pragma once
//DC offset removal IIR filter
namespace nall::DSP::IIR {
struct DCRemoval {
auto reset() -> void;
auto process(f64 in) -> f64; //normalized sample (-1.0 to +1.0)
private:
f64 x;
f64 y;
};
inline auto DCRemoval::reset() -> void {
x = 0.0;
y = 0.0;
}
inline auto DCRemoval::process(f64 in) -> f64 {
x = 0.999 * x + in - y;
y = in;
return x;
}
}