From 731daf4ab899ad650382d5ffe4afe66e8d3f37d9 Mon Sep 17 00:00:00 2001 From: Jean Pierre Cimalando Date: Fri, 26 Mar 2021 13:13:59 +0100 Subject: [PATCH] Fix to SfzFilter after changing channel count --- src/sfizz/SfzFilter.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/sfizz/SfzFilter.cpp b/src/sfizz/SfzFilter.cpp index 03381887..dd11b9db 100644 --- a/src/sfizz/SfzFilter.cpp +++ b/src/sfizz/SfzFilter.cpp @@ -154,8 +154,15 @@ void Filter::setChannels(unsigned channels) { ASSERT(channels <= Impl::maxChannels); if (P->fChannels != channels) { + sfzFilterDsp *dsp = P->getDsp(P->fChannels, P->fType); + if (dsp) + dsp->~sfzFilterDsp(); + P->fChannels = channels; - clear(); + + dsp = P->newDsp(channels, P->fType); + if (dsp) + dsp->init(P->fSampleRate); } } @@ -346,8 +353,15 @@ void FilterEq::setChannels(unsigned channels) { ASSERT(channels <= Impl::maxChannels); if (P->fChannels != channels) { + sfzFilterDsp *dsp = P->getDsp(P->fChannels, P->fType); + if (dsp) + dsp->~sfzFilterDsp(); + P->fChannels = channels; - clear(); + + dsp = P->newDsp(channels, P->fType); + if (dsp) + dsp->init(P->fSampleRate); } }