summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2024-04-27 14:34:34 +1000
committerDamien Zammit <damien@zamaudio.com>2024-04-27 14:34:34 +1000
commit410d600a7bb4e3b255ae39b1ff82ffcd3cedb259 (patch)
tree70be93e14ed5852c3396c08647005a2e9cd7afc0
parent6a533f52cb3ef94229ebd16cfcade52a422d4c7b (diff)
ZamNoise: Try again
-rw-r--r--plugins/ZamNoise/ZamNoisePlugin.cpp19
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();
}
// -----------------------------------------------------------------------