diff options
author | Damien Zammit <damien@zamaudio.com> | 2024-04-27 14:34:34 +1000 |
---|---|---|
committer | Damien Zammit <damien@zamaudio.com> | 2024-04-27 14:34:34 +1000 |
commit | 410d600a7bb4e3b255ae39b1ff82ffcd3cedb259 (patch) | |
tree | 70be93e14ed5852c3396c08647005a2e9cd7afc0 | |
parent | 6a533f52cb3ef94229ebd16cfcade52a422d4c7b (diff) |
ZamNoise: Try again
-rw-r--r-- | plugins/ZamNoise/ZamNoisePlugin.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/plugins/ZamNoise/ZamNoisePlugin.cpp b/plugins/ZamNoise/ZamNoisePlugin.cpp index 4038ced..b26fec7 100644 --- a/plugins/ZamNoise/ZamNoisePlugin.cpp +++ b/plugins/ZamNoise/ZamNoisePlugin.cpp @@ -24,9 +24,9 @@ START_NAMESPACE_DISTRHO ZamNoisePlugin::ZamNoisePlugin() : Plugin(paramCount, 1, 0) // 1 program, 0 states { - - ZamNoisePlugin::init(); + buffer.cbsize = 0; zamnoise = new Denoise(getSampleRate()); + ZamNoisePlugin::init(); // set default values loadProgram(0); @@ -37,6 +37,7 @@ ZamNoisePlugin::ZamNoisePlugin() ZamNoisePlugin::~ZamNoisePlugin() { + buffer.cbsize = 0; delete zamnoise; free(buffer.cbi); } @@ -104,7 +105,8 @@ void ZamNoisePlugin::setParameterValue(uint32_t index, float value) { case paramNoiseToggle: if (value == 1.f) { - memset(buffer.cbi, 0, buffer.cbsize*sizeof(float)); + if (buffer.cbsize > 0) + memset(buffer.cbi, 0, buffer.cbsize*sizeof(float)); } noisetoggle = value; break; @@ -126,9 +128,9 @@ void ZamNoisePlugin::loadProgram(uint32_t index) } -void ZamNoisePlugin::InstantiateCircularBuffer(CircularBuffer* buffer) { - buffer->cbsize = DENOISE_MAX_FFT; - buffer->cbi = (float*) calloc(buffer->cbsize, sizeof(float)); +void ZamNoisePlugin::InstantiateCircularBuffer(CircularBuffer* buf) { + buf->cbi = (float*) calloc(DENOISE_MAX_FFT, sizeof(float)); + buf->cbsize = DENOISE_MAX_FFT; } void ZamNoisePlugin::init (void) @@ -150,7 +152,7 @@ void ZamNoisePlugin::deactivate() void ZamNoisePlugin::run(const float** inputs, float** outputs, uint32_t frames) { - if (zamnoise) { + if (buffer.cbsize > 0) { zamnoise->process(inputs[0], outputs[0], buffer.cbi, frames, (int)noisetoggle, amount / 100.); } else { uint32_t i; @@ -162,10 +164,11 @@ void ZamNoisePlugin::run(const float** inputs, float** outputs, uint32_t frames) void ZamNoisePlugin::sampleRateChanged(double newSampleRate) { + buffer.cbsize = 0; delete zamnoise; free(buffer.cbi); - ZamNoisePlugin::init(); zamnoise = new Denoise(newSampleRate); + ZamNoisePlugin::init(); } // ----------------------------------------------------------------------- |