9 virtual ~Base() =
default;
11 virtual void process(std::span<int32_t> input, std::span<StereoSample> output) = 0;
13 constexpr void setPanLevels(
const int32_t amplitude_left,
const int32_t amplitude_right) {
14 amplitude_right_ = amplitude_right;
15 amplitude_left_ = amplitude_left;
17 enum class FilterType { LowPass, HighPass };
18 template <FilterType filtertype>
19 static constexpr float calcFilterCutoff(
float f) {
26 if constexpr (filtertype == FilterType::LowPass) {
30 else if constexpr (filtertype == FilterType::HighPass) {
34 float fc_hz = minFreq + (std::exp(1.5f * f) - 1) * maxFreq;
35 float fc = fc_hz / float(kSampleRate);
36 float wc = fc / (1 + fc);
41 virtual void setRoomSize(
float value) {}
42 [[nodiscard]]
virtual float getRoomSize()
const {
return 0; };
44 virtual void setHPF(
float f) {}
45 [[nodiscard]]
virtual float getHPF()
const {
return 0; }
47 virtual void setLPF(
float f) {}
48 [[nodiscard]]
virtual float getLPF()
const {
return 0; }
50 virtual void setDamping(
float value) {}
51 [[nodiscard]]
virtual float getDamping()
const {
return 0; }
53 virtual void setWidth(
float value) {}
54 [[nodiscard]]
virtual float getWidth()
const {
return 0; };
56 [[nodiscard]]
constexpr int32_t getPanLeft()
const {
return amplitude_left_; }
57 [[nodiscard]]
constexpr int32_t getPanRight()
const {
return amplitude_right_; }
60 int32_t amplitude_right_ = 0;
61 int32_t amplitude_left_ = 0;