kicker: noise option + artwork

This commit is contained in:
Hannu Haahti
2014-03-28 20:36:11 +02:00
parent 172cffa3c5
commit f1f6c71aa1
4 changed files with 40 additions and 26 deletions

View File

@@ -36,10 +36,11 @@ template<class FX = DspEffectLibrary::StereoBypass>
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;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@@ -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 );
}

View File

@@ -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;