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 | |
parent | 331e65d8992d86800f1689137a6bd414440ec5ec (diff) |
convolution plugins: Disable signal path when deactivating
-rw-r--r-- | plugins/ZamHeadX2/ZamHeadX2Plugin.cpp | 13 | ||||
-rw-r--r-- | plugins/ZamHeadX2/ZamHeadX2Plugin.hpp | 2 | ||||
-rw-r--r-- | plugins/ZamVerb/ZamVerbPlugin.cpp | 15 | ||||
-rw-r--r-- | plugins/ZamVerb/ZamVerbPlugin.hpp | 2 |
4 files changed, 31 insertions, 1 deletions
diff --git a/plugins/ZamHeadX2/ZamHeadX2Plugin.cpp b/plugins/ZamHeadX2/ZamHeadX2Plugin.cpp index 7e21f26..63e6d94 100644 --- a/plugins/ZamHeadX2/ZamHeadX2Plugin.cpp +++ b/plugins/ZamHeadX2/ZamHeadX2Plugin.cpp @@ -25,6 +25,7 @@ START_NAMESPACE_DISTRHO ZamHeadX2Plugin::ZamHeadX2Plugin() : Plugin(paramCount, 1, 1) { + signal = false; swap = 0; clv[swap] = new LV2convolv(); clv[swap]->clv_configure("convolution.ir.preset", "0", "0"); @@ -164,6 +165,12 @@ void ZamHeadX2Plugin::setParameterValue(uint32_t index, float value) void ZamHeadX2Plugin::activate() { setState("reload", ""); + signal = true; +} + +void ZamHeadX2Plugin::deactivate() +{ + signal = false; } String ZamHeadX2Plugin::getState(const char*) const @@ -216,6 +223,12 @@ void ZamHeadX2Plugin::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); for (i = 0; i < frames; i++) { m = (inputs[0][i] + inputs[1][i]) * 0.5; diff --git a/plugins/ZamHeadX2/ZamHeadX2Plugin.hpp b/plugins/ZamHeadX2/ZamHeadX2Plugin.hpp index b4655b4..0da7750 100644 --- a/plugins/ZamHeadX2/ZamHeadX2Plugin.hpp +++ b/plugins/ZamHeadX2/ZamHeadX2Plugin.hpp @@ -114,6 +114,7 @@ protected: } void activate() override; + void deactivate() override; void run(const float** inputs, float** outputs, uint32_t frames) override; void pushsample(float* buf, float val, int i, uint32_t maxframes); float getsample(float* buf, int i, uint32_t maxframes); @@ -121,6 +122,7 @@ protected: // ------------------------------------------------------------------- private: + bool signal; float elevation, azimuth, width; int azold, elold; int swap, active; 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; |