10 virtual ~Base() =
default;
12 virtual void process(std::span<int32_t> input, StereoBuffer<q31_t> output) = 0;
14 constexpr void setPanLevels(
const int32_t amplitude_left,
const int32_t amplitude_right) {
15 amplitude_right_ = amplitude_right;
16 amplitude_left_ = amplitude_left;
18 enum class FilterType { LowPass, HighPass };
19 template <FilterType filtertype>
20 static constexpr float calcFilterCutoff(
float f) {
27 if constexpr (filtertype == FilterType::LowPass) {
31 else if constexpr (filtertype == FilterType::HighPass) {
35 float fc_hz = minFreq + (std::exp(1.5f * f) - 1) * maxFreq;
36 float fc = fc_hz / float(kSampleRate);
37 float wc = fc / (1 + fc);
42 virtual void setRoomSize(
float value) {}
43 [[nodiscard]]
virtual float getRoomSize()
const {
return 0; };
45 virtual void setHPF(
float f) {}
46 [[nodiscard]]
virtual float getHPF()
const {
return 0; }
48 virtual void setLPF(
float f) {}
49 [[nodiscard]]
virtual float getLPF()
const {
return 0; }
51 virtual void setDamping(
float value) {}
52 [[nodiscard]]
virtual float getDamping()
const {
return 0; }
54 virtual void setWidth(
float value) {}
55 [[nodiscard]]
virtual float getWidth()
const {
return 0; };
57 [[nodiscard]]
constexpr int32_t getPanLeft()
const {
return amplitude_left_; }
58 [[nodiscard]]
constexpr int32_t getPanRight()
const {
return amplitude_right_; }
61 int32_t amplitude_right_ = 0;
62 int32_t amplitude_left_ = 0;