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