Merge 3 virtual calls into 1
This commit is contained in:
parent
39e150f3d0
commit
c2307cd459
2 changed files with 36 additions and 25 deletions
|
|
@ -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<float **>(in), const_cast<float **>(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<float **>(current_in), const_cast<float **>(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<float **>(in), const_cast<float **>(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<float **>(current_in), const_cast<float **>(current_out));
|
||||
|
||||
frame += current;
|
||||
|
|
|
|||
|
|
@ -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 <class F> 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 <class F> struct sfzFilter : public F {
|
|||
Parameterized by cutoff only
|
||||
*/
|
||||
template <class F> 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 <class F> struct sfzFilterNoQ : public F {
|
|||
Not parameterized
|
||||
*/
|
||||
template <class F> struct sfzFilterNoCutoff : public F {
|
||||
void configureStandard(float cutoff, float q, float pksh) override
|
||||
{
|
||||
(void)cutoff;
|
||||
(void)q;
|
||||
(void)pksh;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -112,9 +125,12 @@ template <class F> struct sfzFilterNoCutoff : public F {
|
|||
Parameterized by cutoff, Q, peak/shelf gain
|
||||
*/
|
||||
template <class F> 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 <class F> struct sfzFilterPkSh : public F {
|
|||
Parameterized by cutoff, bandwidth, peak/shelf gain
|
||||
*/
|
||||
template <class F> 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<faustLpf1p> {};
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue