diff --git a/src/sfizz/SfzFilter.cpp b/src/sfizz/SfzFilter.cpp index 31ba1d90..b668840f 100644 --- a/src/sfizz/SfzFilter.cpp +++ b/src/sfizz/SfzFilter.cpp @@ -116,9 +116,7 @@ void Filter::process(const float *const in[], float *const out[], float cutoff, return; } - dsp->setCutoff(cutoff); - dsp->setQ(q); - dsp->setPkShGain(pksh); + dsp->configureStandard(cutoff, q, pksh); dsp->compute(nframes, const_cast(in), const_cast(out)); } @@ -148,9 +146,7 @@ void Filter::processModulated(const float *const in[], float *const out[], const current_out[c] = out[c] + frame; } - dsp->setCutoff(cutoff[frame]); - dsp->setQ(q[frame]); - dsp->setPkShGain(pksh[frame]); + dsp->configureStandard(cutoff[frame], q[frame], pksh[frame]); dsp->compute(current, const_cast(current_in), const_cast(current_out)); frame += current; @@ -289,9 +285,7 @@ void FilterEq::process(const float *const in[], float *const out[], float cutoff return; } - dsp->setCutoff(cutoff); - dsp->setBandwidth(bw); - dsp->setPkShGain(pksh); + dsp->configureEq(cutoff, bw, pksh); dsp->compute(nframes, const_cast(in), const_cast(out)); } @@ -321,9 +315,7 @@ void FilterEq::processModulated(const float *const in[], float *const out[], con current_out[c] = out[c] + frame; } - dsp->setCutoff(cutoff[frame]); - dsp->setBandwidth(bw[frame]); - dsp->setPkShGain(pksh[frame]); + dsp->configureEq(cutoff[frame], bw[frame], pksh[frame]); dsp->compute(current, const_cast(current_in), const_cast(current_out)); frame += current; diff --git a/src/sfizz/SfzFilterImpls.cxx b/src/sfizz/SfzFilterImpls.cxx index bda6d372..31b755d7 100644 --- a/src/sfizz/SfzFilterImpls.cxx +++ b/src/sfizz/SfzFilterImpls.cxx @@ -18,10 +18,8 @@ public: virtual void instanceClear() = 0; virtual void compute(int, float **, float **) = 0; - virtual void setCutoff(float) {} - virtual void setQ(float) {} - virtual void setBandwidth(float) {} - virtual void setPkShGain(float) {} + virtual void configureStandard(float, float, float) {} + virtual void configureEq(float, float, float) {} }; #if defined(__GNUC__) || defined(__clang__) @@ -88,8 +86,12 @@ public: Parameterized by cutoff and Q */ template struct sfzFilter : public F { - void setCutoff(float v) override { F::fCutoff = v; } - void setQ(float v) override { F::fQ = v; } + void configureStandard(float cutoff, float q, float pksh) override + { + F::fCutoff = cutoff; + F::fQ = q; + (void)pksh; + } }; /** @@ -97,7 +99,12 @@ template struct sfzFilter : public F { Parameterized by cutoff only */ template struct sfzFilterNoQ : public F { - void setCutoff(float v) override { F::fCutoff = v; } + void configureStandard(float cutoff, float q, float pksh) override + { + F::fCutoff = cutoff; + (void)q; + (void)pksh; + } }; /** @@ -105,6 +112,12 @@ template struct sfzFilterNoQ : public F { Not parameterized */ template struct sfzFilterNoCutoff : public F { + void configureStandard(float cutoff, float q, float pksh) override + { + (void)cutoff; + (void)q; + (void)pksh; + } }; /** @@ -112,9 +125,12 @@ template struct sfzFilterNoCutoff : public F { Parameterized by cutoff, Q, peak/shelf gain */ template struct sfzFilterPkSh : public F { - void setCutoff(float v) override { F::fCutoff = v; } - void setQ(float v) override { F::fQ = v; } - void setPkShGain(float v) override { F::fPkShGain = v; } + void configureStandard(float cutoff, float q, float pksh) override + { + F::fCutoff = cutoff; + F::fQ = q; + F::fPkShGain = pksh; + } }; /** @@ -122,9 +138,12 @@ template struct sfzFilterPkSh : public F { Parameterized by cutoff, bandwidth, peak/shelf gain */ template struct sfzFilterEq : public F { - void setCutoff(float v) override { F::fCutoff = v; } - void setBandwidth(float v) override { F::fBandwidth = v; } - void setPkShGain(float v) override { F::fPkShGain = v; } + void configureEq(float cutoff, float bw, float pksh) override + { + F::fCutoff = cutoff; + F::fBandwidth = bw; + F::fPkShGain = pksh; + } }; struct sfzLpf1p final : public sfzFilterNoQ {};