diff options
author | Damien Zammit <damien@zamaudio.com> | 2017-12-02 12:38:17 +1100 |
---|---|---|
committer | Damien Zammit <damien@zamaudio.com> | 2017-12-02 12:38:17 +1100 |
commit | a33178808d105c6d48d3a5913f536eb06089ff43 (patch) | |
tree | 87e319ea197bf953409f5260b9eefdcd916ef2d0 /plugins/ZamVerb | |
parent | 331e65d8992d86800f1689137a6bd414440ec5ec (diff) |
convolution plugins: Disable signal path when deactivating
Diffstat (limited to 'plugins/ZamVerb')
-rw-r--r-- | plugins/ZamVerb/ZamVerbPlugin.cpp | 15 | ||||
-rw-r--r-- | plugins/ZamVerb/ZamVerbPlugin.hpp | 2 |
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; |