From f0e2593e8155e5ac61eeb760766ea5f7bde83c5d Mon Sep 17 00:00:00 2001 From: Javier Nonis Date: Tue, 23 Jul 2024 13:12:29 -0300 Subject: [PATCH] Fix for MVerb --- src/effect_audio/effect_mverb.cpp | 62 ++++++++++++++++--------------- src/effect_audio/effect_mverb.h | 2 +- 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/src/effect_audio/effect_mverb.cpp b/src/effect_audio/effect_mverb.cpp index 2e58847..7a8eafd 100644 --- a/src/effect_audio/effect_mverb.cpp +++ b/src/effect_audio/effect_mverb.cpp @@ -9,22 +9,24 @@ AudioEffectMVerb::AudioEffectMVerb(float32_t samplerate) : AudioEffect(samplerate) { - fVerb.setSampleRate(samplerate); + fVerb = new MVerb(); + fVerb->setSampleRate(samplerate); - fVerb.setParameter(MVerb::DAMPINGFREQ, 0.5f); - fVerb.setParameter(MVerb::DENSITY, 0.5f); - fVerb.setParameter(MVerb::BANDWIDTHFREQ, 0.5f); - fVerb.setParameter(MVerb::DECAY, 0.5f); - fVerb.setParameter(MVerb::PREDELAY, 0.5f); - fVerb.setParameter(MVerb::SIZE, 0.75f); - fVerb.setParameter(MVerb::GAIN, 1.0f); - fVerb.setParameter(MVerb::MIX, 0.5f); - fVerb.setParameter(MVerb::EARLYMIX, 0.5f); - fVerb.reset(); + fVerb->setParameter(MVerb::DAMPINGFREQ, 0.5f); + fVerb->setParameter(MVerb::DENSITY, 0.5f); + fVerb->setParameter(MVerb::BANDWIDTHFREQ, 0.5f); + fVerb->setParameter(MVerb::DECAY, 0.5f); + fVerb->setParameter(MVerb::PREDELAY, 0.5f); + fVerb->setParameter(MVerb::SIZE, 0.75f); + fVerb->setParameter(MVerb::GAIN, 1.0f); + fVerb->setParameter(MVerb::MIX, 0.5f); + fVerb->setParameter(MVerb::EARLYMIX, 0.5f); + fVerb->reset(); } AudioEffectMVerb::~AudioEffectMVerb() { + delete fVerb; } void AudioEffectMVerb::initializeSendFX() @@ -40,31 +42,31 @@ void AudioEffectMVerb::setParameter(unsigned param, unsigned value) this->setBypass(value == 1); break; case AudioEffectMVerb::Param::DAMPINGFREQ: - fVerb.setParameter(MVerb::DAMPINGFREQ, (float) value / 100.0f); + fVerb->setParameter(MVerb::DAMPINGFREQ, (float) value / 100.0f); break; case AudioEffectMVerb::Param::DENSITY: - fVerb.setParameter(MVerb::DENSITY, (float) value / 100.0f); + fVerb->setParameter(MVerb::DENSITY, (float) value / 100.0f); break; case AudioEffectMVerb::Param::BANDWIDTHFREQ: - fVerb.setParameter(MVerb::BANDWIDTHFREQ, (float) value / 100.0f); + fVerb->setParameter(MVerb::BANDWIDTHFREQ, (float) value / 100.0f); break; case AudioEffectMVerb::Param::DECAY: - fVerb.setParameter(MVerb::DECAY, (float) value / 100.0f); + fVerb->setParameter(MVerb::DECAY, (float) value / 100.0f); break; case AudioEffectMVerb::Param::PREDELAY: - fVerb.setParameter(MVerb::PREDELAY, (float) value / 100.0f); + fVerb->setParameter(MVerb::PREDELAY, (float) value / 100.0f); break; case AudioEffectMVerb::Param::SIZE: - fVerb.setParameter(MVerb::SIZE, (float) value / 100.0f); + fVerb->setParameter(MVerb::SIZE, (float) value / 100.0f); break; case AudioEffectMVerb::Param::GAIN: - fVerb.setParameter(MVerb::GAIN, (float) value / 100.0f); + fVerb->setParameter(MVerb::GAIN, (float) value / 100.0f); break; case AudioEffectMVerb::Param::MIX: - fVerb.setParameter(MVerb::MIX, (float) value / 100.0f); + fVerb->setParameter(MVerb::MIX, (float) value / 100.0f); break; case AudioEffectMVerb::Param::EARLYMIX: - fVerb.setParameter(MVerb::EARLYMIX, (float) value / 100.0f); + fVerb->setParameter(MVerb::EARLYMIX, (float) value / 100.0f); break; default: break; @@ -78,23 +80,23 @@ unsigned AudioEffectMVerb::getParameter(unsigned param) case AudioEffectMVerb::Param::BYPASS: return this->getBypass() ? 1 : 0; case AudioEffectMVerb::Param::DAMPINGFREQ: - return roundf(fVerb.getParameter(MVerb::DAMPINGFREQ) * 100); + return roundf(fVerb->getParameter(MVerb::DAMPINGFREQ) * 100); case AudioEffectMVerb::Param::DENSITY: - return roundf(fVerb.getParameter(MVerb::DENSITY) * 100); + return roundf(fVerb->getParameter(MVerb::DENSITY) * 100); case AudioEffectMVerb::Param::BANDWIDTHFREQ: - return roundf(fVerb.getParameter(MVerb::BANDWIDTHFREQ) * 100); + return roundf(fVerb->getParameter(MVerb::BANDWIDTHFREQ) * 100); case AudioEffectMVerb::Param::DECAY: - return roundf(fVerb.getParameter(MVerb::DECAY) * 100); + return roundf(fVerb->getParameter(MVerb::DECAY) * 100); case AudioEffectMVerb::Param::PREDELAY: - return roundf(fVerb.getParameter(MVerb::PREDELAY) * 100); + return roundf(fVerb->getParameter(MVerb::PREDELAY) * 100); case AudioEffectMVerb::Param::SIZE: - return roundf(fVerb.getParameter(MVerb::SIZE) * 100); + return roundf(fVerb->getParameter(MVerb::SIZE) * 100); case AudioEffectMVerb::Param::GAIN: - return roundf(fVerb.getParameter(MVerb::GAIN) * 100); + return roundf(fVerb->getParameter(MVerb::GAIN) * 100); case AudioEffectMVerb::Param::MIX: - return roundf(fVerb.getParameter(MVerb::MIX) * 100); + return roundf(fVerb->getParameter(MVerb::MIX) * 100); case AudioEffectMVerb::Param::EARLYMIX: - return roundf(fVerb.getParameter(MVerb::EARLYMIX) * 100); + return roundf(fVerb->getParameter(MVerb::EARLYMIX) * 100); default: return 0; } @@ -111,6 +113,6 @@ void AudioEffectMVerb::doProcess(const float32_t* inblockL, const float32_t* inb outputs[0] = outblockL; outputs[1] = outblockR; - fVerb.process(inputs, outputs, static_cast(len)); + fVerb->process(inputs, outputs, static_cast(len)); } diff --git a/src/effect_audio/effect_mverb.h b/src/effect_audio/effect_mverb.h index 5f50235..0f20e8b 100644 --- a/src/effect_audio/effect_mverb.h +++ b/src/effect_audio/effect_mverb.h @@ -48,7 +48,7 @@ protected: virtual void doProcess(const float32_t* inblockL, const float32_t* inblockR, float32_t* outblockL, float32_t* outblockR, uint16_t len); private: - MVerb fVerb; + MVerb* fVerb; }; #endif // _EFFECT_MVERB_H