summaryrefslogtreecommitdiff
path: root/plugins/ZamVerb
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2017-12-02 12:38:17 +1100
committerDamien Zammit <damien@zamaudio.com>2017-12-02 12:38:17 +1100
commita33178808d105c6d48d3a5913f536eb06089ff43 (patch)
tree87e319ea197bf953409f5260b9eefdcd916ef2d0 /plugins/ZamVerb
parent331e65d8992d86800f1689137a6bd414440ec5ec (diff)
convolution plugins: Disable signal path when deactivating
Diffstat (limited to 'plugins/ZamVerb')
-rw-r--r--plugins/ZamVerb/ZamVerbPlugin.cpp15
-rw-r--r--plugins/ZamVerb/ZamVerbPlugin.hpp2
2 files changed, 16 insertions, 1 deletions
diff --git a/plugins/ZamVerb/ZamVerbPlugin.cpp b/plugins/ZamVerb/ZamVerbPlugin.cpp
index 1bb3db3..0668ee3 100644
--- a/plugins/ZamVerb/ZamVerbPlugin.cpp
+++ b/plugins/ZamVerb/ZamVerbPlugin.cpp
@@ -24,6 +24,7 @@ START_NAMESPACE_DISTRHO
ZamVerbPlugin::ZamVerbPlugin()
: Plugin(paramCount, 1, 1) // 1 program, 1 states
{
+ signal = false;
swap = 0;
clv[swap] = new LV2convolv();
clv[swap]->clv_configure("convolution.ir.preset", "0");
@@ -162,7 +163,13 @@ void ZamVerbPlugin::loadProgram(uint32_t index)
void ZamVerbPlugin::activate()
{
- setState("reload", "");
+ setState("reload", "");
+ signal = true;
+}
+
+void ZamVerbPlugin::deactivate()
+{
+ signal = false;
}
String ZamVerbPlugin::getState(const char*) const
@@ -199,6 +206,12 @@ void ZamVerbPlugin::run(const float** inputs, float** outputs, uint32_t frames)
int nprocessed;
active = swap;
+ if (!signal) {
+ memcpy(outputs[0], inputs[0], frames * sizeof(float));
+ memcpy(outputs[1], inputs[1], frames * sizeof(float));
+ return;
+ }
+
assert(frames < 8192);
memcpy(tmpins[0], inputs[0], frames * sizeof(float));
memcpy(tmpins[1], inputs[1], frames * sizeof(float));
diff --git a/plugins/ZamVerb/ZamVerbPlugin.hpp b/plugins/ZamVerb/ZamVerbPlugin.hpp
index a2c94c7..c4c96b0 100644
--- a/plugins/ZamVerb/ZamVerbPlugin.hpp
+++ b/plugins/ZamVerb/ZamVerbPlugin.hpp
@@ -112,11 +112,13 @@ protected:
}
void activate() override;
+ void deactivate() override;
void run(const float** inputs, float** outputs, uint32_t frames) override;
LV2convolv *clv[2];
int8_t swap;
int8_t active;
+ bool signal;
// -------------------------------------------------------------------
float **tmpouts;