From f087f9fe788991f77caa237ba8d41216bddc6fb8 Mon Sep 17 00:00:00 2001 From: Damien Zammit Date: Sat, 27 Apr 2024 15:06:34 +1000 Subject: [PATCH] ZamNoise: Try again --- plugins/ZamNoise/Denoise.cpp | 1 - plugins/ZamNoise/ZamNoisePlugin.cpp | 10 ++++++++-- plugins/ZamNoise/ZamNoisePlugin.hpp | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/plugins/ZamNoise/Denoise.cpp b/plugins/ZamNoise/Denoise.cpp index fac666f..494882d 100644 --- a/plugins/ZamNoise/Denoise.cpp +++ b/plugins/ZamNoise/Denoise.cpp @@ -211,7 +211,6 @@ Denoise::~Denoise() { FFTW(destroy_plan)(pForNoise); FFTW(destroy_plan)(pBak); FFTW(destroy_plan)(pFor); - FFTW(cleanup)(); } void Denoise::get_noise_sample(float* noisebuffer, fftw_real *noise_min, fftw_real *noise_max) diff --git a/plugins/ZamNoise/ZamNoisePlugin.cpp b/plugins/ZamNoise/ZamNoisePlugin.cpp index b26fec7..4c8230e 100644 --- a/plugins/ZamNoise/ZamNoisePlugin.cpp +++ b/plugins/ZamNoise/ZamNoisePlugin.cpp @@ -25,6 +25,7 @@ ZamNoisePlugin::ZamNoisePlugin() : Plugin(paramCount, 1, 0) // 1 program, 0 states { buffer.cbsize = 0; + buffer.cbsizeold = 0; zamnoise = new Denoise(getSampleRate()); ZamNoisePlugin::init(); @@ -40,6 +41,7 @@ ZamNoisePlugin::~ZamNoisePlugin() buffer.cbsize = 0; delete zamnoise; free(buffer.cbi); + FFTW(cleanup)(); } // ----------------------------------------------------------------------- @@ -129,8 +131,9 @@ void ZamNoisePlugin::loadProgram(uint32_t index) void ZamNoisePlugin::InstantiateCircularBuffer(CircularBuffer* buf) { - buf->cbi = (float*) calloc(DENOISE_MAX_FFT, sizeof(float)); - buf->cbsize = DENOISE_MAX_FFT; + buf->cbsizeold = DENOISE_MAX_FFT; + buf->cbi = (float*) calloc(buf->cbsizeold, sizeof(float)); + buf->cbsize = buf->cbsizeold; } void ZamNoisePlugin::init (void) @@ -144,10 +147,13 @@ void ZamNoisePlugin::init (void) void ZamNoisePlugin::activate() { + if (buffer.cbsizeold > 0) + buffer.cbsize = buffer.cbsizeold; } void ZamNoisePlugin::deactivate() { + buffer.cbsize = 0; } void ZamNoisePlugin::run(const float** inputs, float** outputs, uint32_t frames) diff --git a/plugins/ZamNoise/ZamNoisePlugin.hpp b/plugins/ZamNoise/ZamNoisePlugin.hpp index 5954e43..8a7b72d 100644 --- a/plugins/ZamNoise/ZamNoisePlugin.hpp +++ b/plugins/ZamNoise/ZamNoisePlugin.hpp @@ -23,6 +23,7 @@ typedef struct { unsigned long cbsize; // size of circular buffer + unsigned long cbsizeold; // old size of circular buffer float* cbi; } CircularBuffer;