diff --git a/data/presets/Monstro/Growl.xpf b/data/presets/Monstro/Growl.xpf index d21804885cf..566207c6416 100644 --- a/data/presets/Monstro/Growl.xpf +++ b/data/presets/Monstro/Growl.xpf @@ -44,11 +44,11 @@ - + - + diff --git a/include/Effect.h b/include/Effect.h index 34f8be00a07..a57988035a4 100644 --- a/include/Effect.h +++ b/include/Effect.h @@ -125,12 +125,6 @@ class LMMS_EXPORT Effect : public Plugin return 1.0f - m_wetDryModel.value(); } - inline float gate() const - { - const float level = m_gateModel.value(); - return level*level * m_processors; - } - inline f_cnt_t bufferCount() const { return m_bufferCount; @@ -174,15 +168,6 @@ class LMMS_EXPORT Effect : public Plugin protected: - /** - Effects should call this at the end of audio processing - - If the setting "Keep effects running even without input" is disabled, - after "decay" ms of a signal below "gate", the effect is turned off - and won't be processed again until it receives new audio input - */ - void checkGate( double _out_sum ); - gui::PluginView* instantiateView( QWidget * ) override; // some effects might not be capable of higher sample-rates so they can @@ -227,7 +212,6 @@ class LMMS_EXPORT Effect : public Plugin BoolModel m_enabledModel; FloatModel m_wetDryModel; - FloatModel m_gateModel; TempoSyncKnobModel m_autoQuitModel; bool m_autoQuitDisabled; diff --git a/include/EffectView.h b/include/EffectView.h index 805e4a4279c..cd45b735e77 100644 --- a/include/EffectView.h +++ b/include/EffectView.h @@ -92,7 +92,6 @@ public slots: LedCheckBox * m_bypass; Knob * m_wetDry; TempoSyncKnob * m_autoQuit; - Knob * m_gate; QMdiSubWindow * m_subWindow; EffectControlDialog * m_controlView; diff --git a/plugins/Amplifier/Amplifier.cpp b/plugins/Amplifier/Amplifier.cpp index 2f4e57f77d0..ee3e2598748 100644 --- a/plugins/Amplifier/Amplifier.cpp +++ b/plugins/Amplifier/Amplifier.cpp @@ -90,8 +90,6 @@ bool AmplifierEffect::processAudioBuffer(SampleFrame* buf, const fpp_t frames) outSum += currentFrame.sumOfSquaredAmplitudes(); } - checkGate(outSum / frames); - return isRunning(); } diff --git a/plugins/BassBooster/BassBooster.cpp b/plugins/BassBooster/BassBooster.cpp index f12fd6ace8f..32f23eff30f 100644 --- a/plugins/BassBooster/BassBooster.cpp +++ b/plugins/BassBooster/BassBooster.cpp @@ -106,8 +106,6 @@ bool BassBoosterEffect::processAudioBuffer( SampleFrame* buf, const fpp_t frames outSum += currentFrame.sumOfSquaredAmplitudes(); } - checkGate( outSum / frames ); - return isRunning(); } diff --git a/plugins/Bitcrush/Bitcrush.cpp b/plugins/Bitcrush/Bitcrush.cpp index ea1c43acba1..11f8d58499c 100644 --- a/plugins/Bitcrush/Bitcrush.cpp +++ b/plugins/Bitcrush/Bitcrush.cpp @@ -239,8 +239,6 @@ bool BitcrushEffect::processAudioBuffer( SampleFrame* buf, const fpp_t frames ) outSum += buf[f][0]*buf[f][0] + buf[f][1]*buf[f][1]; } - checkGate( outSum / frames ); - return isRunning(); } diff --git a/plugins/Compressor/Compressor.cpp b/plugins/Compressor/Compressor.cpp index c04893361b1..a631b6ce904 100755 --- a/plugins/Compressor/Compressor.cpp +++ b/plugins/Compressor/Compressor.cpp @@ -526,7 +526,6 @@ bool CompressorEffect::processAudioBuffer(SampleFrame* buf, const fpp_t frames) rOutPeak = s[1] > rOutPeak ? s[1] : rOutPeak; } - checkGate(outSum / frames); m_compressorControls.m_outPeakL = lOutPeak; m_compressorControls.m_outPeakR = rOutPeak; m_compressorControls.m_inPeakL = lInPeak; diff --git a/plugins/CrossoverEQ/CrossoverEQ.cpp b/plugins/CrossoverEQ/CrossoverEQ.cpp index 2142d040c76..1a0572621ff 100644 --- a/plugins/CrossoverEQ/CrossoverEQ.cpp +++ b/plugins/CrossoverEQ/CrossoverEQ.cpp @@ -200,8 +200,6 @@ bool CrossoverEQEffect::processAudioBuffer( SampleFrame* buf, const fpp_t frames outSum += buf[f][0] * buf[f][0] + buf[f][1] * buf[f][1]; } - checkGate( outSum / frames ); - return isRunning(); } diff --git a/plugins/Delay/DelayEffect.cpp b/plugins/Delay/DelayEffect.cpp index 4e90c0fa899..4eb5e15be81 100644 --- a/plugins/Delay/DelayEffect.cpp +++ b/plugins/Delay/DelayEffect.cpp @@ -143,7 +143,6 @@ bool DelayEffect::processAudioBuffer( SampleFrame* buf, const fpp_t frames ) lfoTimePtr += lfoTimeInc; feedbackPtr += feedbackInc; } - checkGate( outSum / frames ); m_delayControls.m_outPeakL = peak.left(); m_delayControls.m_outPeakR = peak.right(); diff --git a/plugins/Dispersion/Dispersion.cpp b/plugins/Dispersion/Dispersion.cpp index a2fada615bb..48139b481b4 100644 --- a/plugins/Dispersion/Dispersion.cpp +++ b/plugins/Dispersion/Dispersion.cpp @@ -125,7 +125,6 @@ bool DispersionEffect::processAudioBuffer(SampleFrame* buf, const fpp_t frames) outSum += buf[f][0] * buf[f][0] + buf[f][1] * buf[f][1]; } - checkGate(outSum / frames); return isRunning(); } diff --git a/plugins/DualFilter/DualFilter.cpp b/plugins/DualFilter/DualFilter.cpp index b337e100301..41a696e688e 100644 --- a/plugins/DualFilter/DualFilter.cpp +++ b/plugins/DualFilter/DualFilter.cpp @@ -213,8 +213,6 @@ bool DualFilterEffect::processAudioBuffer( SampleFrame* buf, const fpp_t frames mixPtr += mixInc; } - checkGate( outSum / frames ); - return isRunning(); } diff --git a/plugins/DynamicsProcessor/DynamicsProcessor.cpp b/plugins/DynamicsProcessor/DynamicsProcessor.cpp index 5b251a6f0ad..cd00dc33204 100644 --- a/plugins/DynamicsProcessor/DynamicsProcessor.cpp +++ b/plugins/DynamicsProcessor/DynamicsProcessor.cpp @@ -215,8 +215,6 @@ bool DynProcEffect::processAudioBuffer( SampleFrame* _buf, out_sum += _buf[f][0] * _buf[f][0] + _buf[f][1] * _buf[f][1]; } - checkGate( out_sum / _frames ); - return( isRunning() ); } diff --git a/plugins/Eq/EqEffect.cpp b/plugins/Eq/EqEffect.cpp index 662b85a8ea5..6ef1c1d10f1 100644 --- a/plugins/Eq/EqEffect.cpp +++ b/plugins/Eq/EqEffect.cpp @@ -268,8 +268,6 @@ bool EqEffect::processAudioBuffer( SampleFrame* buf, const fpp_t frames ) 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; - checkGate( outSum / frames ); - if(m_eqControls.m_analyseOutModel.value( true ) && outSum > 0 && m_eqControls.isViewVisible() ) { m_eqControls.m_outFftBands.analyze( buf, frames ); diff --git a/plugins/Flanger/FlangerEffect.cpp b/plugins/Flanger/FlangerEffect.cpp index b8bb9d692a0..2e93816c928 100644 --- a/plugins/Flanger/FlangerEffect.cpp +++ b/plugins/Flanger/FlangerEffect.cpp @@ -134,7 +134,6 @@ bool FlangerEffect::processAudioBuffer( SampleFrame* buf, const fpp_t frames ) buf[f][1] = ( d * dryS[1] ) + ( w * buf[f][1] ); outSum += buf[f][0]*buf[f][0] + buf[f][1]*buf[f][1]; } - checkGate( outSum / frames ); return isRunning(); } diff --git a/plugins/LOMM/LOMM.cpp b/plugins/LOMM/LOMM.cpp index 7c4574cd1b8..c94c3257ddb 100644 --- a/plugins/LOMM/LOMM.cpp +++ b/plugins/LOMM/LOMM.cpp @@ -426,7 +426,6 @@ bool LOMMEffect::processAudioBuffer(SampleFrame* buf, const fpp_t frames) outSum += buf[f][0] + buf[f][1]; } - checkGate(outSum / frames); return isRunning(); } diff --git a/plugins/LadspaEffect/LadspaEffect.cpp b/plugins/LadspaEffect/LadspaEffect.cpp index 75c79ad214b..6d2df9eb1ac 100644 --- a/plugins/LadspaEffect/LadspaEffect.cpp +++ b/plugins/LadspaEffect/LadspaEffect.cpp @@ -260,8 +260,6 @@ bool LadspaEffect::processAudioBuffer( SampleFrame* _buf, sampleBack( _buf, o_buf, m_maxSampleRate ); } - checkGate( out_sum / frames ); - bool is_running = isRunning(); m_pluginMutex.unlock(); diff --git a/plugins/Lv2Effect/Lv2Effect.cpp b/plugins/Lv2Effect/Lv2Effect.cpp index d6b89a2291b..4cb9446a24a 100644 --- a/plugins/Lv2Effect/Lv2Effect.cpp +++ b/plugins/Lv2Effect/Lv2Effect.cpp @@ -95,7 +95,6 @@ bool Lv2Effect::processAudioBuffer(SampleFrame* buf, const fpp_t frames) auto r = static_cast(buf[f][1]); outSum += l*l + r*r; } - checkGate(outSum / frames); return isRunning(); } diff --git a/plugins/MultitapEcho/MultitapEcho.cpp b/plugins/MultitapEcho/MultitapEcho.cpp index ecc1d8f304e..c3e2e3ba80a 100644 --- a/plugins/MultitapEcho/MultitapEcho.cpp +++ b/plugins/MultitapEcho/MultitapEcho.cpp @@ -158,8 +158,6 @@ bool MultitapEchoEffect::processAudioBuffer( SampleFrame* buf, const fpp_t frame buf[f][1] = d * buf[f][1] + w * m_work[f][1]; outSum += buf[f][0]*buf[f][0] + buf[f][1]*buf[f][1]; } - - checkGate( outSum / frames ); return isRunning(); } diff --git a/plugins/ReverbSC/ReverbSC.cpp b/plugins/ReverbSC/ReverbSC.cpp index 2def88d1db9..915688e44a3 100644 --- a/plugins/ReverbSC/ReverbSC.cpp +++ b/plugins/ReverbSC/ReverbSC.cpp @@ -123,9 +123,6 @@ bool ReverbSCEffect::processAudioBuffer( SampleFrame* buf, const fpp_t frames ) outSum += buf[f][0]*buf[f][0] + buf[f][1]*buf[f][1]; } - - checkGate( outSum / frames ); - return isRunning(); } diff --git a/plugins/StereoEnhancer/StereoEnhancer.cpp b/plugins/StereoEnhancer/StereoEnhancer.cpp index 261c897df2f..573f9c594cf 100644 --- a/plugins/StereoEnhancer/StereoEnhancer.cpp +++ b/plugins/StereoEnhancer/StereoEnhancer.cpp @@ -131,7 +131,6 @@ bool StereoEnhancerEffect::processAudioBuffer( SampleFrame* _buf, m_currFrame %= DEFAULT_BUFFER_SIZE; } - checkGate( out_sum / _frames ); if( !isRunning() ) { clearMyBuffer(); diff --git a/plugins/StereoMatrix/StereoMatrix.cpp b/plugins/StereoMatrix/StereoMatrix.cpp index c4384fddd60..721e248a219 100644 --- a/plugins/StereoMatrix/StereoMatrix.cpp +++ b/plugins/StereoMatrix/StereoMatrix.cpp @@ -99,8 +99,6 @@ bool StereoMatrixEffect::processAudioBuffer( SampleFrame* _buf, } - checkGate( out_sum / _frames ); - return( isRunning() ); } diff --git a/plugins/VstEffect/VstEffect.cpp b/plugins/VstEffect/VstEffect.cpp index ecb8240c867..49a5e073042 100644 --- a/plugins/VstEffect/VstEffect.cpp +++ b/plugins/VstEffect/VstEffect.cpp @@ -113,7 +113,6 @@ bool VstEffect::processAudioBuffer( SampleFrame* _buf, const fpp_t _frames ) delete[] buf; #endif - checkGate( out_sum / _frames ); } return isRunning(); } @@ -160,7 +159,6 @@ PLUGIN_EXPORT Plugin * lmms_plugin_main( Model * _parent, void * _data ) static_cast( _data ) ); } - } diff --git a/plugins/WaveShaper/WaveShaper.cpp b/plugins/WaveShaper/WaveShaper.cpp index 37378540867..8e29065f402 100644 --- a/plugins/WaveShaper/WaveShaper.cpp +++ b/plugins/WaveShaper/WaveShaper.cpp @@ -146,8 +146,6 @@ bool WaveShaperEffect::processAudioBuffer( SampleFrame* _buf, inputPtr += inputInc; } - checkGate( out_sum / _frames ); - return( isRunning() ); } diff --git a/src/core/Effect.cpp b/src/core/Effect.cpp index b6b2840515a..a9cf647a0be 100644 --- a/src/core/Effect.cpp +++ b/src/core/Effect.cpp @@ -50,7 +50,6 @@ Effect::Effect( const Plugin::Descriptor * _desc, m_bufferCount( 0 ), m_enabledModel( true, this, tr( "Effect enabled" ) ), m_wetDryModel( 1.0f, -1.0f, 1.0f, 0.01f, this, tr( "Wet/Dry mix" ) ), - m_gateModel( 0.0f, 0.0f, 1.0f, 0.01f, this, tr( "Gate" ) ), m_autoQuitModel( 1.0f, 1.0f, 8000.0f, 100.0f, 1.0f, this, tr( "Decay" ) ), m_autoQuitDisabled( false ) { @@ -91,7 +90,6 @@ void Effect::saveSettings( QDomDocument & _doc, QDomElement & _this ) m_enabledModel.saveSettings( _doc, _this, "on" ); m_wetDryModel.saveSettings( _doc, _this, "wet" ); m_autoQuitModel.saveSettings( _doc, _this, "autoquit" ); - m_gateModel.saveSettings( _doc, _this, "gate" ); controls()->saveState( _doc, _this ); } @@ -103,7 +101,6 @@ void Effect::loadSettings( const QDomElement & _this ) m_enabledModel.loadSettings( _this, "on" ); m_wetDryModel.loadSettings( _this, "wet" ); m_autoQuitModel.loadSettings( _this, "autoquit" ); - m_gateModel.loadSettings( _this, "gate" ); QDomNode node = _this.firstChild(); while( !node.isNull() ) @@ -144,35 +141,6 @@ Effect * Effect::instantiate( const QString& pluginName, } - - -void Effect::checkGate( double _out_sum ) -{ - if( m_autoQuitDisabled ) - { - return; - } - - // Check whether we need to continue processing input. Restart the - // counter if the threshold has been exceeded. - if (_out_sum - gate() <= F_EPSILON) - { - incrementBufferCount(); - if( bufferCount() > timeout() ) - { - stopRunning(); - resetBufferCount(); - } - } - else - { - resetBufferCount(); - } -} - - - - gui::PluginView * Effect::instantiateView( QWidget * _parent ) { return new gui::EffectView( this, _parent ); diff --git a/src/gui/EffectView.cpp b/src/gui/EffectView.cpp index 6f2b984c32a..576e000a6cf 100644 --- a/src/gui/EffectView.cpp +++ b/src/gui/EffectView.cpp @@ -78,13 +78,6 @@ EffectView::EffectView( Effect * _model, QWidget * _parent ) : m_autoQuit->setHintText( tr( "Time:" ), "ms" ); - m_gate = new Knob( KnobType::Bright26, this ); - m_gate->setLabel( tr( "GATE" ) ); - m_gate->move( 116 - m_gate->width() / 2, 5 ); - m_gate->setEnabled( isEnabled && !effect()->m_autoQuitDisabled ); - m_gate->setHintText( tr( "Gate:" ), "" ); - - setModel( _model ); if( effect()->controls()->controlCount() > 0 ) @@ -278,7 +271,6 @@ void EffectView::modelChanged() m_bypass->setModel( &effect()->m_enabledModel ); m_wetDry->setModel( &effect()->m_wetDryModel ); m_autoQuit->setModel( &effect()->m_autoQuitModel ); - m_gate->setModel( &effect()->m_gateModel ); } } // namespace lmms::gui