diff --git a/plugins/Eq/EqControls.cpp b/plugins/Eq/EqControls.cpp index ccf1c8400..7921ba4be 100644 --- a/plugins/Eq/EqControls.cpp +++ b/plugins/Eq/EqControls.cpp @@ -42,7 +42,7 @@ EqControls::EqControls( EqEffect *effect ) : m_highShelfGainModel( 0.0 , -40, 40, 0.001, this, tr( "High Shelf gain" ) ), m_hpResModel( 0.707,0.003, 10.0 , 0.001, this, tr( "HP res" ) ), m_lowShelfResModel( 1.4,0.55, 10.0 , 0.001, this , tr( "Low Shelf res" ) ), - m_para1ResModel( 1.4 ,0.55, 10.0 , 0.001, this , tr( "Peak 1 res" ) ), + m_para1ResModel( 1.4, 0.55, 10.0, 0.001, this , tr( "Peak 1 res" ) ), m_para2ResModel( 1.4, 0.55, 10.0 , 0.001, this , tr( "Peak 2 res" ) ), m_para3ResModel( 1.4, 0.55, 10.0 , 0.001, this , tr( "Peak 3 res" ) ), m_para4ResModel( 1.4, 0.55, 10.0 , 0.001, this , tr( "Peak 4 res" ) ), diff --git a/plugins/Eq/EqEffect.cpp b/plugins/Eq/EqEffect.cpp index 8bd5edb77..b130db02f 100644 --- a/plugins/Eq/EqEffect.cpp +++ b/plugins/Eq/EqEffect.cpp @@ -51,17 +51,9 @@ Plugin::Descriptor PLUGIN_EXPORT eq_plugin_descriptor = EqEffect::EqEffect(Model *parent, const Plugin::Descriptor::SubPluginFeatures::Key *key) : Effect( &eq_plugin_descriptor, parent, key ), - m_eqControls( this ), - m_upBufFrames( 0 ) + m_eqControls( this ) { - m_dFilterCount = 2; - m_downsampleFilters = new EqLinkwitzRiley[m_dFilterCount]; - for( int i = 0; i < m_dFilterCount; i++) - { - m_downsampleFilters[i].setFrequency(21000); - m_downsampleFilters[i].setSR(Engine::mixer()->processingSampleRate() * 2 ); - } - m_upBuf = 0; + } @@ -69,10 +61,6 @@ EqEffect::EqEffect(Model *parent, const Plugin::Descriptor::SubPluginFeatures::K EqEffect::~EqEffect() { - if(m_upBuf) - { - delete m_upBuf; - } } @@ -91,7 +79,7 @@ bool EqEffect::processAudioBuffer(sampleFrame *buf, const fpp_t frames) outSum += buf[f][0]*buf[f][0] + buf[f][1]*buf[f][1]; } const float outGain = m_eqControls.m_outGainModel.value(); - const int sampleRate = Engine::mixer()->processingSampleRate() * 2; + const int sampleRate = Engine::mixer()->processingSampleRate(); sampleFrame m_inPeak = { 0, 0 }; if(m_eqControls.m_analyzeModel.value() ) @@ -102,97 +90,92 @@ bool EqEffect::processAudioBuffer(sampleFrame *buf, const fpp_t frames) { m_eqControls.m_inFftBands.clear(); } - upsample( buf, frames ); - gain(m_upBuf , m_upBufFrames, m_eqControls.m_inGainModel.value(), &m_inPeak ); + gain(buf , frames, m_eqControls.m_inGainModel.value(), &m_inPeak ); m_eqControls.m_inPeakL = m_eqControls.m_inPeakL < m_inPeak[0] ? m_inPeak[0] : m_eqControls.m_inPeakL; m_eqControls.m_inPeakR = m_eqControls.m_inPeakR < m_inPeak[1] ? m_inPeak[1] : m_eqControls.m_inPeakR; if(m_eqControls.m_hpActiveModel.value() ){ m_hp12.setParameters( sampleRate, m_eqControls.m_hpFeqModel.value(), m_eqControls.m_hpResModel.value(), 1 ); - m_hp12.processBuffer( m_upBuf , m_upBufFrames ); + m_hp12.processBuffer( buf, frames ); if( m_eqControls.m_hp24Model.value() || m_eqControls.m_hp48Model.value() ) { m_hp24.setParameters( sampleRate, m_eqControls.m_hpFeqModel.value(), m_eqControls.m_hpResModel.value(), 1 ); - m_hp24.processBuffer( m_upBuf , m_upBufFrames ); + m_hp24.processBuffer( buf, frames ); } if( m_eqControls.m_hp48Model.value() ) { m_hp480.setParameters( sampleRate, m_eqControls.m_hpFeqModel.value(), m_eqControls.m_hpResModel.value(), 1 ); - m_hp480.processBuffer( m_upBuf , m_upBufFrames ); + m_hp480.processBuffer( buf, frames ); m_hp481.setParameters( sampleRate, m_eqControls.m_hpFeqModel.value(), m_eqControls.m_hpResModel.value(), 1 ); - m_hp481.processBuffer( m_upBuf , m_upBufFrames ); + m_hp481.processBuffer( buf, frames ); } } if( m_eqControls.m_lowShelfActiveModel.value() ) { m_lowShelf.setParameters( sampleRate, m_eqControls.m_lowShelfFreqModel.value(), m_eqControls.m_lowShelfResModel .value(), m_eqControls.m_lowShelfGainModel.value() ); - m_lowShelf.processBuffer( m_upBuf , m_upBufFrames ); + m_lowShelf.processBuffer( buf, frames ); } if( m_eqControls.m_para1ActiveModel.value() ) { m_para1.setParameters( sampleRate, m_eqControls.m_para1FreqModel.value(), m_eqControls.m_para1ResModel.value(), m_eqControls.m_para1GainModel.value() ); - m_para1.processBuffer( m_upBuf , m_upBufFrames ); + m_para1.processBuffer( buf, frames ); } if( m_eqControls.m_para2ActiveModel.value() ) { m_para2.setParameters( sampleRate, m_eqControls.m_para2FreqModel.value(), m_eqControls.m_para2ResModel.value(), m_eqControls.m_para2GainModel.value() ); - m_para2.processBuffer( m_upBuf , m_upBufFrames ); + m_para2.processBuffer( buf, frames ); } if( m_eqControls.m_para3ActiveModel.value() ) { m_para3.setParameters( sampleRate, m_eqControls.m_para3FreqModel.value(), m_eqControls.m_para3ResModel.value(), m_eqControls.m_para3GainModel.value() ); - m_para3.processBuffer( m_upBuf , m_upBufFrames ); + m_para3.processBuffer( buf, frames ); } if( m_eqControls.m_para4ActiveModel.value() ) { m_para4.setParameters( sampleRate, m_eqControls.m_para4FreqModel.value(), m_eqControls.m_para4ResModel.value(), m_eqControls.m_para4GainModel.value() ); - m_para4.processBuffer( m_upBuf , m_upBufFrames ); + m_para4.processBuffer( buf, frames ); } if( m_eqControls.m_highShelfActiveModel.value() ) { m_highShelf.setParameters( sampleRate, m_eqControls.m_highShelfFreqModel.value(), m_eqControls.m_highShelfResModel.value(), m_eqControls.m_highShelfGainModel.value()); - m_highShelf.processBuffer( m_upBuf , m_upBufFrames ); + m_highShelf.processBuffer( buf, frames ); } if(m_eqControls.m_lpActiveModel.value() ){ m_lp12.setParameters( sampleRate, m_eqControls.m_lpFreqModel.value(), m_eqControls.m_lpResModel.value(), 1 ); - m_lp12.processBuffer( m_upBuf , m_upBufFrames ); + m_lp12.processBuffer( buf, frames ); if( m_eqControls.m_lp24Model.value() || m_eqControls.m_lp48Model.value() ) { m_lp24.setParameters( sampleRate, m_eqControls.m_lpFreqModel.value(), m_eqControls.m_lpResModel.value(), 1 ); - m_lp24.processBuffer( m_upBuf , m_upBufFrames ); + m_lp24.processBuffer( buf, frames ); } if( m_eqControls.m_lp48Model.value() ) { m_lp480.setParameters( sampleRate, m_eqControls.m_lpFreqModel.value(), m_eqControls.m_lpResModel.value(), 1 ); - m_lp480.processBuffer( m_upBuf , m_upBufFrames ); + m_lp480.processBuffer( buf, frames ); m_lp481.setParameters( sampleRate, m_eqControls.m_lpFreqModel.value(), m_eqControls.m_lpResModel.value(), 1 ); - m_lp481.processBuffer( m_upBuf , m_upBufFrames ); + m_lp481.processBuffer( buf, frames ); } } sampleFrame outPeak = { 0, 0 }; - gain( m_upBuf , m_upBufFrames, outGain, &outPeak ); + gain( buf, frames, outGain, &outPeak ); m_eqControls.m_outPeakL = m_eqControls.m_outPeakL < outPeak[0] ? outPeak[0] : m_eqControls.m_outPeakL; m_eqControls.m_outPeakR = m_eqControls.m_outPeakR < outPeak[1] ? outPeak[1] : m_eqControls.m_outPeakR; - for( int i =0; i < m_dFilterCount; i++) - { - m_downsampleFilters[i].processBuffer(m_upBuf , m_upBufFrames ); - } - downSample( buf, frames ); + checkGate( outSum / frames ); if(m_eqControls.m_analyzeModel.value() ) { diff --git a/plugins/Eq/EqEffect.h b/plugins/Eq/EqEffect.h index de6d2289d..654ae5bd2 100644 --- a/plugins/Eq/EqEffect.h +++ b/plugins/Eq/EqEffect.h @@ -84,46 +84,6 @@ private: EqLp12Filter m_lp24; EqLp12Filter m_lp480; EqLp12Filter m_lp481; - EqLinkwitzRiley* m_downsampleFilters; - int m_dFilterCount; - sampleFrame* m_upBuf; - fpp_t m_upBufFrames; - sampleFrame m_lastUpFrame; - - inline void upsample( sampleFrame *buf, const fpp_t frames ) - { - - if( m_upBufFrames != frames * 2 ) - { - if( m_upBuf ) - { - delete m_upBuf; - } - m_upBuf = new sampleFrame[frames * 2]; - m_upBufFrames = frames * 2; - } - for( int f = 0, f2 = 0; f < frames; ++f, f2 += 2 ) - { - m_upBuf[f2][0] = linearInterpolate( m_lastUpFrame[0],buf[f][0], 0.5 ); - m_upBuf[f2][1] = linearInterpolate( m_lastUpFrame[1],buf[f][1], 0.5 ); - m_upBuf[f2+1][0] = buf[f][0]; - m_upBuf[f2+1][1] = buf[f][1]; - m_lastUpFrame[0] = buf[f][0]; - m_lastUpFrame[1] = buf[f][1]; - } - } - - - - - inline void downSample( sampleFrame *buf, const fpp_t frames ) - { - for( int f = 0, f2 = 0; f < frames; ++f, f2 += 2 ) - { - buf[f][0] = m_upBuf[f2+1][0]; - buf[f][1] = m_upBuf[f2+1][1]; - } - }