Fix for MVerb

pull/764/head
Javier Nonis 7 months ago
parent 2d19311269
commit f0e2593e81
  1. 62
      src/effect_audio/effect_mverb.cpp
  2. 2
      src/effect_audio/effect_mverb.h

@ -9,22 +9,24 @@
AudioEffectMVerb::AudioEffectMVerb(float32_t samplerate) : AudioEffect(samplerate) AudioEffectMVerb::AudioEffectMVerb(float32_t samplerate) : AudioEffect(samplerate)
{ {
fVerb.setSampleRate(samplerate); fVerb = new MVerb<float>();
fVerb->setSampleRate(samplerate);
fVerb.setParameter(MVerb<float>::DAMPINGFREQ, 0.5f); fVerb->setParameter(MVerb<float>::DAMPINGFREQ, 0.5f);
fVerb.setParameter(MVerb<float>::DENSITY, 0.5f); fVerb->setParameter(MVerb<float>::DENSITY, 0.5f);
fVerb.setParameter(MVerb<float>::BANDWIDTHFREQ, 0.5f); fVerb->setParameter(MVerb<float>::BANDWIDTHFREQ, 0.5f);
fVerb.setParameter(MVerb<float>::DECAY, 0.5f); fVerb->setParameter(MVerb<float>::DECAY, 0.5f);
fVerb.setParameter(MVerb<float>::PREDELAY, 0.5f); fVerb->setParameter(MVerb<float>::PREDELAY, 0.5f);
fVerb.setParameter(MVerb<float>::SIZE, 0.75f); fVerb->setParameter(MVerb<float>::SIZE, 0.75f);
fVerb.setParameter(MVerb<float>::GAIN, 1.0f); fVerb->setParameter(MVerb<float>::GAIN, 1.0f);
fVerb.setParameter(MVerb<float>::MIX, 0.5f); fVerb->setParameter(MVerb<float>::MIX, 0.5f);
fVerb.setParameter(MVerb<float>::EARLYMIX, 0.5f); fVerb->setParameter(MVerb<float>::EARLYMIX, 0.5f);
fVerb.reset(); fVerb->reset();
} }
AudioEffectMVerb::~AudioEffectMVerb() AudioEffectMVerb::~AudioEffectMVerb()
{ {
delete fVerb;
} }
void AudioEffectMVerb::initializeSendFX() void AudioEffectMVerb::initializeSendFX()
@ -40,31 +42,31 @@ void AudioEffectMVerb::setParameter(unsigned param, unsigned value)
this->setBypass(value == 1); this->setBypass(value == 1);
break; break;
case AudioEffectMVerb::Param::DAMPINGFREQ: case AudioEffectMVerb::Param::DAMPINGFREQ:
fVerb.setParameter(MVerb<float>::DAMPINGFREQ, (float) value / 100.0f); fVerb->setParameter(MVerb<float>::DAMPINGFREQ, (float) value / 100.0f);
break; break;
case AudioEffectMVerb::Param::DENSITY: case AudioEffectMVerb::Param::DENSITY:
fVerb.setParameter(MVerb<float>::DENSITY, (float) value / 100.0f); fVerb->setParameter(MVerb<float>::DENSITY, (float) value / 100.0f);
break; break;
case AudioEffectMVerb::Param::BANDWIDTHFREQ: case AudioEffectMVerb::Param::BANDWIDTHFREQ:
fVerb.setParameter(MVerb<float>::BANDWIDTHFREQ, (float) value / 100.0f); fVerb->setParameter(MVerb<float>::BANDWIDTHFREQ, (float) value / 100.0f);
break; break;
case AudioEffectMVerb::Param::DECAY: case AudioEffectMVerb::Param::DECAY:
fVerb.setParameter(MVerb<float>::DECAY, (float) value / 100.0f); fVerb->setParameter(MVerb<float>::DECAY, (float) value / 100.0f);
break; break;
case AudioEffectMVerb::Param::PREDELAY: case AudioEffectMVerb::Param::PREDELAY:
fVerb.setParameter(MVerb<float>::PREDELAY, (float) value / 100.0f); fVerb->setParameter(MVerb<float>::PREDELAY, (float) value / 100.0f);
break; break;
case AudioEffectMVerb::Param::SIZE: case AudioEffectMVerb::Param::SIZE:
fVerb.setParameter(MVerb<float>::SIZE, (float) value / 100.0f); fVerb->setParameter(MVerb<float>::SIZE, (float) value / 100.0f);
break; break;
case AudioEffectMVerb::Param::GAIN: case AudioEffectMVerb::Param::GAIN:
fVerb.setParameter(MVerb<float>::GAIN, (float) value / 100.0f); fVerb->setParameter(MVerb<float>::GAIN, (float) value / 100.0f);
break; break;
case AudioEffectMVerb::Param::MIX: case AudioEffectMVerb::Param::MIX:
fVerb.setParameter(MVerb<float>::MIX, (float) value / 100.0f); fVerb->setParameter(MVerb<float>::MIX, (float) value / 100.0f);
break; break;
case AudioEffectMVerb::Param::EARLYMIX: case AudioEffectMVerb::Param::EARLYMIX:
fVerb.setParameter(MVerb<float>::EARLYMIX, (float) value / 100.0f); fVerb->setParameter(MVerb<float>::EARLYMIX, (float) value / 100.0f);
break; break;
default: default:
break; break;
@ -78,23 +80,23 @@ unsigned AudioEffectMVerb::getParameter(unsigned param)
case AudioEffectMVerb::Param::BYPASS: case AudioEffectMVerb::Param::BYPASS:
return this->getBypass() ? 1 : 0; return this->getBypass() ? 1 : 0;
case AudioEffectMVerb::Param::DAMPINGFREQ: case AudioEffectMVerb::Param::DAMPINGFREQ:
return roundf(fVerb.getParameter(MVerb<float>::DAMPINGFREQ) * 100); return roundf(fVerb->getParameter(MVerb<float>::DAMPINGFREQ) * 100);
case AudioEffectMVerb::Param::DENSITY: case AudioEffectMVerb::Param::DENSITY:
return roundf(fVerb.getParameter(MVerb<float>::DENSITY) * 100); return roundf(fVerb->getParameter(MVerb<float>::DENSITY) * 100);
case AudioEffectMVerb::Param::BANDWIDTHFREQ: case AudioEffectMVerb::Param::BANDWIDTHFREQ:
return roundf(fVerb.getParameter(MVerb<float>::BANDWIDTHFREQ) * 100); return roundf(fVerb->getParameter(MVerb<float>::BANDWIDTHFREQ) * 100);
case AudioEffectMVerb::Param::DECAY: case AudioEffectMVerb::Param::DECAY:
return roundf(fVerb.getParameter(MVerb<float>::DECAY) * 100); return roundf(fVerb->getParameter(MVerb<float>::DECAY) * 100);
case AudioEffectMVerb::Param::PREDELAY: case AudioEffectMVerb::Param::PREDELAY:
return roundf(fVerb.getParameter(MVerb<float>::PREDELAY) * 100); return roundf(fVerb->getParameter(MVerb<float>::PREDELAY) * 100);
case AudioEffectMVerb::Param::SIZE: case AudioEffectMVerb::Param::SIZE:
return roundf(fVerb.getParameter(MVerb<float>::SIZE) * 100); return roundf(fVerb->getParameter(MVerb<float>::SIZE) * 100);
case AudioEffectMVerb::Param::GAIN: case AudioEffectMVerb::Param::GAIN:
return roundf(fVerb.getParameter(MVerb<float>::GAIN) * 100); return roundf(fVerb->getParameter(MVerb<float>::GAIN) * 100);
case AudioEffectMVerb::Param::MIX: case AudioEffectMVerb::Param::MIX:
return roundf(fVerb.getParameter(MVerb<float>::MIX) * 100); return roundf(fVerb->getParameter(MVerb<float>::MIX) * 100);
case AudioEffectMVerb::Param::EARLYMIX: case AudioEffectMVerb::Param::EARLYMIX:
return roundf(fVerb.getParameter(MVerb<float>::EARLYMIX) * 100); return roundf(fVerb->getParameter(MVerb<float>::EARLYMIX) * 100);
default: default:
return 0; return 0;
} }
@ -111,6 +113,6 @@ void AudioEffectMVerb::doProcess(const float32_t* inblockL, const float32_t* inb
outputs[0] = outblockL; outputs[0] = outblockL;
outputs[1] = outblockR; outputs[1] = outblockR;
fVerb.process(inputs, outputs, static_cast<int>(len)); fVerb->process(inputs, outputs, static_cast<int>(len));
} }

@ -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); virtual void doProcess(const float32_t* inblockL, const float32_t* inblockR, float32_t* outblockL, float32_t* outblockR, uint16_t len);
private: private:
MVerb<float> fVerb; MVerb<float>* fVerb;
}; };
#endif // _EFFECT_MVERB_H #endif // _EFFECT_MVERB_H

Loading…
Cancel
Save