diff options
Diffstat (limited to 'plugins/ZaMultiComp/ZaMultiCompPlugin.cpp')
-rw-r--r-- | plugins/ZaMultiComp/ZaMultiCompPlugin.cpp | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/plugins/ZaMultiComp/ZaMultiCompPlugin.cpp b/plugins/ZaMultiComp/ZaMultiCompPlugin.cpp index be6d6bd..e7388d4 100644 --- a/plugins/ZaMultiComp/ZaMultiCompPlugin.cpp +++ b/plugins/ZaMultiComp/ZaMultiCompPlugin.cpp @@ -739,10 +739,10 @@ void ZaMultiCompPlugin::linear_svf_set_xover(struct linear_svf *self, float samp w = M_PI * cutoff / sample_rate; self->g = tan(w); - self->k = 1. / resonance; - self->m0 = hp ? 0. : 1.; + self->k = 1.4142135 * (1. - resonance * resonance); + self->m0 = self->g; self->m1 = 0.; - self->m2 = hp ? 1. : 0.; + self->m2 = hp ? 1. : self->k * self->k; } void ZaMultiCompPlugin::linear_svf_reset(struct linear_svf *self) @@ -775,20 +775,14 @@ void ZaMultiCompPlugin::calc_lr4(float f, int i) { float srate = getSampleRate(); - linear_svf_set_xover(&simper[0][i][0], srate, f, 0.7071068, false); - linear_svf_set_xover(&simper[1][i][0], srate, f, 0.7071068, true); - linear_svf_set_xover(&simper[0][i][1], srate, f, 0.7071068, false); - linear_svf_set_xover(&simper[1][i][1], srate, f, 0.7071068, true); + linear_svf_set_xover(&simper[0][i][0], srate, f, 0.5, false); + linear_svf_set_xover(&simper[1][i][0], srate, f, 0.5, true); } void ZaMultiCompPlugin::run_lr4(int i, float in, float *outlo, float *outhi) { - float lo, hi; - lo = run_linear_svf_xover(&simper[0][i][0], in); - *outlo = run_linear_svf_xover(&simper[0][i][1], lo); - - hi = run_linear_svf_xover(&simper[1][i][0], in); - *outhi = run_linear_svf_xover(&simper[1][i][1], hi); + *outlo = run_linear_svf_xover(&simper[0][i][0], in); + *outhi = run_linear_svf_xover(&simper[1][i][0], in); } void ZaMultiCompPlugin::run_comp(int k, float in, float *out) |