From 29c2d3fb1a54f4e65a9f657f76239070bd363281 Mon Sep 17 00:00:00 2001 From: Hannu Haahti Date: Sat, 29 Mar 2014 00:48:34 +0200 Subject: [PATCH] kicker: possible to play notes too --- plugins/kicker/artwork.png | Bin 8769 -> 9016 bytes plugins/kicker/kicker.cpp | 19 ++++++++++++++++--- plugins/kicker/kicker.h | 13 ++++++++++++- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/plugins/kicker/artwork.png b/plugins/kicker/artwork.png index 4d583bb4fd03f3c3296ba49cca6b65d68a8f6b12..463ea0efe6deff2d9784f9a94ec2a1d3d5305318 100644 GIT binary patch literal 9016 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 B`D6e9 literal 8769 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 INbBo=0K-ICxBvhE diff --git a/plugins/kicker/kicker.cpp b/plugins/kicker/kicker.cpp index 4b9078aa0..feecc34e5 100644 --- a/plugins/kicker/kicker.cpp +++ b/plugins/kicker/kicker.cpp @@ -66,7 +66,9 @@ kickerInstrument::kickerInstrument( InstrumentTrack * _instrument_track ) : 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" ) ) + m_slopeModel( 0.06f, 0.001f, 1.0f, 0.001f, this, tr( "Slope" ) ), + m_startNoteModel( false, this, tr( "Start from note" ) ), + m_endNoteModel( false, this, tr( "End to note" ) ) { } @@ -92,6 +94,8 @@ void kickerInstrument::saveSettings( QDomDocument & _doc, m_noiseModel.saveSettings( _doc, _this, "noise" ); m_clickModel.saveSettings( _doc, _this, "click" ); m_slopeModel.saveSettings( _doc, _this, "slope" ); + m_startNoteModel.saveSettings( _doc, _this, "startnote" ); + m_endNoteModel.saveSettings( _doc, _this, "endnote" ); } @@ -108,6 +112,8 @@ void kickerInstrument::loadSettings( const QDomElement & _this ) m_noiseModel.loadSettings( _this, "noise" ); m_clickModel.loadSettings( _this, "click" ); m_slopeModel.loadSettings( _this, "slope" ); + m_startNoteModel.loadSettings( _this, "startnote" ); + m_endNoteModel.loadSettings( _this, "endnote" ); } @@ -137,8 +143,8 @@ void kickerInstrument::playNote( NotePlayHandle * _n, _n->m_pluginData = new SweepOsc( DistFX( m_distModel.value(), m_gainModel.value() ), - m_startFreqModel.value(), - m_endFreqModel.value(), + m_startNoteModel.value() ? _n->frequency() : m_startFreqModel.value(), + m_endNoteModel.value() ? _n->frequency() : m_endFreqModel.value(), m_noiseModel.value() * m_noiseModel.value(), m_clickModel.value() * 0.25f, m_slopeModel.value(), @@ -257,6 +263,11 @@ kickerInstrumentView::kickerInstrumentView( Instrument * _instrument, m_clickKnob->setHintText( tr( "Click:" ) + " ", "" ); m_clickKnob->move( 200, 155 ); + m_startNoteToggle = new ledCheckBox( "", this ); + m_startNoteToggle->move( 24, 79 ); + + m_endNoteToggle = new ledCheckBox( "", this ); + m_endNoteToggle->move( 69, 79 ); setAutoFillBackground( true ); QPalette pal; @@ -287,6 +298,8 @@ void kickerInstrumentView::modelChanged() m_noiseKnob->setModel( &k->m_noiseModel ); m_clickKnob->setModel( &k->m_clickModel ); m_slopeKnob->setModel( &k->m_slopeModel ); + m_startNoteToggle->setModel( &k->m_startNoteModel ); + m_endNoteToggle->setModel( &k->m_endNoteModel ); } diff --git a/plugins/kicker/kicker.h b/plugins/kicker/kicker.h index db17e642c..ca126c7e6 100644 --- a/plugins/kicker/kicker.h +++ b/plugins/kicker/kicker.h @@ -30,6 +30,7 @@ #include "Instrument.h" #include "InstrumentView.h" #include "knob.h" +#include "led_checkbox.h" class kickerInstrumentView; @@ -46,12 +47,16 @@ public: sampleFrame * _working_buffer ); virtual void deleteNotePluginData( NotePlayHandle * _n ); - virtual void saveSettings( QDomDocument & _doc, QDomElement & _parent ); virtual void loadSettings( const QDomElement & _this ); virtual QString nodeName() const; + virtual Flags flags() const + { + return IsNotBendable; + } + virtual f_cnt_t desiredReleaseFrames() const { return( 512 ); @@ -71,6 +76,9 @@ private: FloatModel m_clickModel; FloatModel m_slopeModel; + BoolModel m_startNoteModel; + BoolModel m_endNoteModel; + friend class kickerInstrumentView; } ; @@ -97,6 +105,9 @@ private: knob * m_clickKnob; knob * m_slopeKnob; + ledCheckBox * m_startNoteToggle; + ledCheckBox * m_endNoteToggle; + } ;