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/ZamHeadX2 | |
parent | 331e65d8992d86800f1689137a6bd414440ec5ec (diff) |
convolution plugins: Disable signal path when deactivating
Diffstat (limited to 'plugins/ZamHeadX2')
-rw-r--r-- | plugins/ZamHeadX2/ZamHeadX2Plugin.cpp | 13 | ||||
-rw-r--r-- | plugins/ZamHeadX2/ZamHeadX2Plugin.hpp | 2 |
2 files changed, 15 insertions, 0 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; |