diff options
author | Damien Zammit <damien@zamaudio.com> | 2015-11-09 02:35:47 +1100 |
---|---|---|
committer | Damien Zammit <damien@zamaudio.com> | 2015-11-09 02:35:47 +1100 |
commit | 5f0e180e4ae82e2c780202a7fa158164389cce25 (patch) | |
tree | 20f85808990d774f3a3f0e4e409886f8282d1c9d /plugins | |
parent | 8b2341ca7d04eec562001c806e5d7d98655ed8cc (diff) |
Dont filter twice on delay feedback
Signed-off-by: Damien Zammit <damien@zamaudio.com>
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/ZamDelay/ZamDelayPlugin.cpp | 8 | ||||
-rw-r--r-- | plugins/ZamDelay/ZamDelayPlugin.hpp | 1 |
2 files changed, 5 insertions, 4 deletions
diff --git a/plugins/ZamDelay/ZamDelayPlugin.cpp b/plugins/ZamDelay/ZamDelayPlugin.cpp index 1c0d7dc..eeab7ca 100644 --- a/plugins/ZamDelay/ZamDelayPlugin.cpp +++ b/plugins/ZamDelay/ZamDelayPlugin.cpp @@ -217,6 +217,7 @@ void ZamDelayPlugin::activate() posz = 0; age = 0; clearfilter(); + fbstate = 0.f; } @@ -305,7 +306,6 @@ void ZamDelayPlugin::run(const float** inputs, float** outputs, uint32_t frames) { uint32_t i; float in; - float fb = 0.f; float srate = getSampleRate(); TimePosition t = getTimePosition(); float bpm = 120.f; @@ -330,11 +330,11 @@ void ZamDelayPlugin::run(const float** inputs, float** outputs, uint32_t frames) for (i = 0; i < frames; i++) { filtered = runfilter(getsample(in, &z[0], posz, age, delaysamples)); - in = (1. - feedb) * inputs[0][i] + feedb * -inv * filtered; + in = (1. - feedb) * inputs[0][i] + feedb * fbstate; - fb = ((1. - drywet) * in) + drywet * -inv * filtered; + fbstate = ((1. - drywet) * in) + drywet * -inv * filtered; - outputs[0][i] = fb * from_dB(gain); + outputs[0][i] = fbstate * from_dB(gain); pushsample(in, &z[0], &posz, &age, delaysamples); } } diff --git a/plugins/ZamDelay/ZamDelayPlugin.hpp b/plugins/ZamDelay/ZamDelayPlugin.hpp index 47465c2..5a652b4 100644 --- a/plugins/ZamDelay/ZamDelayPlugin.hpp +++ b/plugins/ZamDelay/ZamDelayPlugin.hpp @@ -124,6 +124,7 @@ private: int posz, age; float A0, A1, A2, A3, A4, A5, B0, B1, B2, B3, B4, B5; float state[4]; + float fbstate; }; // ----------------------------------------------------------------------- |