diff --git a/plugins/kicker/KickerOsc.h b/plugins/kicker/KickerOsc.h index 2dbfd19f6..440fa5837 100644 --- a/plugins/kicker/KickerOsc.h +++ b/plugins/kicker/KickerOsc.h @@ -36,10 +36,11 @@ template class KickerOsc { public: - KickerOsc( const FX & fx, const float start, const float end, const float offset, const float slope, const float env, const float length ) : + KickerOsc( const FX & fx, const float start, const float end, const float noise, const float offset, const float slope, const float env, const float length ) : m_phase( offset ), m_startFreq( start ), m_endFreq( end ), + m_noise( noise ), m_slope( slope ), m_env( env ), m_length( length ), @@ -59,7 +60,7 @@ public: { const double gain = ( 1 - fastPow( ( m_counter < m_length ) ? m_counter / m_length : 1, m_env ) ); //~ qDebug( "%f", gain ); - const sample_t s = Oscillator::sinSample( m_phase ); + const sample_t s = Oscillator::sinSample( m_phase ) + ( Oscillator::noiseSample( 0 ) * gain * gain * m_noise ); buf[frame][0] = s * gain; buf[frame][1] = s * gain; m_FX.nextSample( buf[frame][0], buf[frame][1] ); @@ -77,6 +78,7 @@ private: float m_phase; const float m_startFreq; const float m_endFreq; + const float m_noise; const float m_slope; const float m_env; const float m_length; diff --git a/plugins/kicker/artwork.png b/plugins/kicker/artwork.png index 12a565044..4d583bb4f 100644 Binary files a/plugins/kicker/artwork.png and b/plugins/kicker/artwork.png differ diff --git a/plugins/kicker/kicker.cpp b/plugins/kicker/kicker.cpp index 7f0948059..ab2459b72 100644 --- a/plugins/kicker/kicker.cpp +++ b/plugins/kicker/kicker.cpp @@ -64,6 +64,7 @@ kickerInstrument::kickerInstrument( InstrumentTrack * _instrument_track ) : m_distModel( 0.8f, 0.0f, 100.0f, 0.1f, this, tr( "Distortion" ) ), m_gainModel( 1.0f, 0.1f, 5.0f, 0.05f, this, tr( "Gain" ) ), m_envModel( 0.163f, 0.01f, 1.0f, 0.001f, this, tr( "Env" ) ), + m_noiseModel( 0.0f, 0.0f, 1.0f, 0.01f, this, tr( "Noise" ) ), m_clickModel( 0.4f, 0.0f, 1.0f, 0.05f, this, tr( "Click" ) ), m_slopeModel( 0.06f, 0.001f, 1.0f, 0.001f, this, tr( "Slope" ) ) { @@ -88,6 +89,7 @@ void kickerInstrument::saveSettings( QDomDocument & _doc, m_distModel.saveSettings( _doc, _this, "dist" ); m_gainModel.saveSettings( _doc, _this, "gain" ); m_envModel.saveSettings( _doc, _this, "env" ); + m_noiseModel.saveSettings( _doc, _this, "noise" ); m_clickModel.saveSettings( _doc, _this, "click" ); m_slopeModel.saveSettings( _doc, _this, "slope" ); } @@ -103,6 +105,7 @@ void kickerInstrument::loadSettings( const QDomElement & _this ) m_distModel.loadSettings( _this, "dist" ); m_gainModel.loadSettings( _this, "gain" ); m_envModel.loadSettings( _this, "env" ); + m_noiseModel.loadSettings( _this, "noise" ); m_clickModel.loadSettings( _this, "click" ); m_slopeModel.loadSettings( _this, "slope" ); } @@ -136,6 +139,7 @@ void kickerInstrument::playNote( NotePlayHandle * _n, m_gainModel.value() ), m_startFreqModel.value(), m_endFreqModel.value(), + m_noiseModel.value(), m_clickModel.value() * 0.25f, m_slopeModel.value(), m_envModel.value(), @@ -206,7 +210,7 @@ public: kickerKnob( QWidget * _parent ) : knob( knobStyled, _parent ) { - setFixedSize( 37, 47 ); + setFixedSize( 35, 45 ); } }; @@ -219,35 +223,40 @@ kickerInstrumentView::kickerInstrumentView( Instrument * _instrument, { m_startFreqKnob = new kickerKnob( this ); m_startFreqKnob->setHintText( tr( "Start frequency:" ) + " ", "Hz" ); - m_startFreqKnob->move( 12, 124 ); + m_startFreqKnob->move( 15, 100 ); m_endFreqKnob = new kickerKnob( this ); m_endFreqKnob->setHintText( tr( "End frequency:" ) + " ", "Hz" ); - m_endFreqKnob->move( 59, 124 ); - - m_decayKnob = new kickerKnob( this ); - m_decayKnob->setHintText( tr( "Decay:" ) + " ", "ms" ); - m_decayKnob->move( 107, 124 ); - - m_distKnob = new kickerKnob( this ); - m_distKnob->setHintText( tr( "Distortion:" ) + " ", "" ); - m_distKnob->move( 155, 124 ); - - m_gainKnob = new kickerKnob( this ); - m_gainKnob->setHintText( tr( "Gain:" ) + " ", "" ); - m_gainKnob->move( 203, 124 ); - - m_envKnob = new kickerKnob( this ); - m_envKnob->setHintText( tr( "Env:" ) + " ", "" ); - m_envKnob->move( 203, 204 ); - - m_clickKnob = new kickerKnob( this ); - m_clickKnob->setHintText( tr( "Click:" ) + " ", "" ); - m_clickKnob->move( 12, 204 ); + m_endFreqKnob->move( 60, 100 ); m_slopeKnob = new kickerKnob( this ); m_slopeKnob->setHintText( tr( "Slope:" ) + " ", "" ); - m_slopeKnob->move( 59, 204 ); + m_slopeKnob->move( 105, 100 ); + + m_gainKnob = new kickerKnob( this ); + m_gainKnob->setHintText( tr( "Gain:" ) + " ", "" ); + m_gainKnob->move( 15, 155 ); + + m_decayKnob = new kickerKnob( this ); + m_decayKnob->setHintText( tr( "Length:" ) + " ", "ms" ); + m_decayKnob->move( 60, 155 ); + + m_envKnob = new kickerKnob( this ); + m_envKnob->setHintText( tr( "Env:" ) + " ", "" ); + m_envKnob->move( 105, 155 ); + + m_noiseKnob = new kickerKnob( this ); + m_noiseKnob->setHintText( tr( "Noise:" ) + " ", "" ); + m_noiseKnob->move( 200, 45 ); + + m_distKnob = new kickerKnob( this ); + m_distKnob->setHintText( tr( "Distortion:" ) + " ", "" ); + m_distKnob->move( 200, 100 ); + + m_clickKnob = new kickerKnob( this ); + m_clickKnob->setHintText( tr( "Click:" ) + " ", "" ); + m_clickKnob->move( 200, 155 ); + setAutoFillBackground( true ); QPalette pal; @@ -275,6 +284,7 @@ void kickerInstrumentView::modelChanged() m_distKnob->setModel( &k->m_distModel ); m_gainKnob->setModel( &k->m_gainModel ); m_envKnob->setModel( &k->m_envModel ); + m_noiseKnob->setModel( &k->m_noiseModel ); m_clickKnob->setModel( &k->m_clickModel ); m_slopeKnob->setModel( &k->m_slopeModel ); } diff --git a/plugins/kicker/kicker.h b/plugins/kicker/kicker.h index 78944da47..db17e642c 100644 --- a/plugins/kicker/kicker.h +++ b/plugins/kicker/kicker.h @@ -67,6 +67,7 @@ private: FloatModel m_distModel; FloatModel m_gainModel; FloatModel m_envModel; + FloatModel m_noiseModel; FloatModel m_clickModel; FloatModel m_slopeModel; @@ -92,6 +93,7 @@ private: knob * m_distKnob; knob * m_gainKnob; knob * m_envKnob; + knob * m_noiseKnob; knob * m_clickKnob; knob * m_slopeKnob;