From 85c02cddfec701d4aa73fc438db18502922bff0b Mon Sep 17 00:00:00 2001 From: Oskar Wallgren Date: Thu, 22 May 2014 07:17:55 +0200 Subject: [PATCH 1/4] Random wave first commit, pixmap button defect --- data/themes/default/random_wave_active.png | Bin 0 -> 533 bytes data/themes/default/random_wave_inactive.png | Bin 0 -> 461 bytes include/EnvelopeAndLfoParameters.h | 3 +++ src/core/EnvelopeAndLfoParameters.cpp | 16 ++++++++++++++++ src/gui/widgets/EnvelopeAndLfoView.cpp | 15 ++++++++++++++- 5 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 data/themes/default/random_wave_active.png create mode 100644 data/themes/default/random_wave_inactive.png diff --git a/data/themes/default/random_wave_active.png b/data/themes/default/random_wave_active.png new file mode 100644 index 0000000000000000000000000000000000000000..38b089c63d7ff48ee786656a620cae7281a88d3d GIT binary patch literal 533 zcmV+w0_y#VP)zn=)va@C-BufxPNfg8f2n0NM^Wa6)gGV7}-$C#-WFJHnQA893 z%{c}`6kR3%W_zZcp6Tw-Lvr!9b^1|N)Tw}TivWzr<1|gR)>29$0zgE}%*-JK=Uh<~ z)>;X`dvB#*_QFx2^NXSVN9ii5G_O0Zb($aq?>ztkpmp!s_SnC_pIcvkx^0^CTKsT} z%jV64v*x#2EJ|yw5F!Ea@d+<_d6D{+D9n+cbvJYWd)Cd&1%Ha|*Yjg&Squ048;@(#TAOX-hS&1whzRk%+VM6PL5hfnKJnNjS_kPX$>cNLx{i+*NCroTV zU#71z3Jl9?>XMQhQzxv;{Jx~lZNW{$q!RI@U%aX1`G03iebFi}lv1^}o@wFCLZFc5YOU^E(?=Pv&M X*E{Jb7mi;H00000NkvXXu0mjf-+9_7?C$RF@9*#M@bK~R z@$vHV^78We`T6_%`~3X;{r&y^{{H{}|E7*li2wiqn@L1LR0tha!7)z5KoCIDKeMxm zy~s2)L2hZd|2^pFXb@E}$cYfxCObQnz_$4xBk3T+t5PKtkK;wcNVKbY??-!@uTR~xGHq|` zsetWhatsThis( tr( "Click here for a square-wave." ) ); + pixmapButton * random_lfo_btn = new pixmapButton( this, NULL ); + random_lfo_btn->move( LFO_SHAPES_X+60, LFO_SHAPES_Y ); + random_lfo_btn->setActiveGraphic( embed::getIconPixmap( + "random_wave_active" ) ); + random_lfo_btn->setInactiveGraphic( embed::getIconPixmap( + "random_wave_inactive" ) ); + random_lfo_btn->setWhatsThis( + tr( "Click here for random wave." ) ); + m_userLfoBtn = new pixmapButton( this, NULL ); - m_userLfoBtn->move( LFO_SHAPES_X+60, LFO_SHAPES_Y ); + m_userLfoBtn->move( LFO_SHAPES_X+75, LFO_SHAPES_Y ); m_userLfoBtn->setActiveGraphic( embed::getIconPixmap( "usr_wave_active" ) ); m_userLfoBtn->setInactiveGraphic( embed::getIconPixmap( @@ -269,6 +278,7 @@ EnvelopeAndLfoView::EnvelopeAndLfoView( QWidget * _parent ) : m_lfoWaveBtnGrp->addButton( triangle_lfo_btn ); m_lfoWaveBtnGrp->addButton( saw_lfo_btn ); m_lfoWaveBtnGrp->addButton( sqr_lfo_btn ); + m_lfoWaveBtnGrp->addButton( random_lfo_btn ); m_lfoWaveBtnGrp->addButton( m_userLfoBtn ); @@ -525,6 +535,9 @@ void EnvelopeAndLfoView::paintEvent( QPaintEvent * ) case EnvelopeAndLfoParameters::SquareWave: val = Oscillator::squareSample( phase ); break; + case EnvelopeAndLfoParameters::RandomWave: + val = Oscillator::squareSample( phase );// <- dummy! + break; case EnvelopeAndLfoParameters::UserDefinedWave: val = m_params->m_userWave. userWaveSample( phase ); From 3d61768538aea85d99e7281ec44d7e9f8241cac2 Mon Sep 17 00:00:00 2001 From: Oskar Wallgren Date: Thu, 22 May 2014 19:25:04 +0200 Subject: [PATCH 2/4] Gui button fix, test backward compatibility --- src/gui/widgets/EnvelopeAndLfoView.cpp | 33 ++++++++++++++++---------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/src/gui/widgets/EnvelopeAndLfoView.cpp b/src/gui/widgets/EnvelopeAndLfoView.cpp index d44325996..dc5de9698 100644 --- a/src/gui/widgets/EnvelopeAndLfoView.cpp +++ b/src/gui/widgets/EnvelopeAndLfoView.cpp @@ -250,15 +250,6 @@ EnvelopeAndLfoView::EnvelopeAndLfoView( QWidget * _parent ) : sqr_lfo_btn->setWhatsThis( tr( "Click here for a square-wave." ) ); - pixmapButton * random_lfo_btn = new pixmapButton( this, NULL ); - random_lfo_btn->move( LFO_SHAPES_X+60, LFO_SHAPES_Y ); - random_lfo_btn->setActiveGraphic( embed::getIconPixmap( - "random_wave_active" ) ); - random_lfo_btn->setInactiveGraphic( embed::getIconPixmap( - "random_wave_inactive" ) ); - random_lfo_btn->setWhatsThis( - tr( "Click here for random wave." ) ); - m_userLfoBtn = new pixmapButton( this, NULL ); m_userLfoBtn->move( LFO_SHAPES_X+75, LFO_SHAPES_Y ); m_userLfoBtn->setActiveGraphic( embed::getIconPixmap( @@ -273,14 +264,22 @@ EnvelopeAndLfoView::EnvelopeAndLfoView( QWidget * _parent ) : connect( m_userLfoBtn, SIGNAL( toggled( bool ) ), this, SLOT( lfoUserWaveChanged() ) ); + pixmapButton * random_lfo_btn = new pixmapButton( this, NULL ); + random_lfo_btn->move( LFO_SHAPES_X+60, LFO_SHAPES_Y ); + random_lfo_btn->setActiveGraphic( embed::getIconPixmap( + "random_wave_active" ) ); + random_lfo_btn->setInactiveGraphic( embed::getIconPixmap( + "random_wave_inactive" ) ); + random_lfo_btn->setWhatsThis( + tr( "Click here for random wave." ) ); + m_lfoWaveBtnGrp = new automatableButtonGroup( this ); m_lfoWaveBtnGrp->addButton( sin_lfo_btn ); m_lfoWaveBtnGrp->addButton( triangle_lfo_btn ); m_lfoWaveBtnGrp->addButton( saw_lfo_btn ); m_lfoWaveBtnGrp->addButton( sqr_lfo_btn ); - m_lfoWaveBtnGrp->addButton( random_lfo_btn ); m_lfoWaveBtnGrp->addButton( m_userLfoBtn ); - + m_lfoWaveBtnGrp->addButton( random_lfo_btn ); m_x100Cb = new ledCheckBox( tr( "FREQ x 100" ), this ); m_x100Cb->setFont( pointSizeF( m_x100Cb->font(), 6.5 ) ); @@ -536,11 +535,21 @@ void EnvelopeAndLfoView::paintEvent( QPaintEvent * ) val = Oscillator::squareSample( phase ); break; case EnvelopeAndLfoParameters::RandomWave: - val = Oscillator::squareSample( phase );// <- dummy! + val = Oscillator::sawSample( phase ); + // val = Oscillator::noiseSample( phase ); +// shape_sample = m_random; +// if( frame == 0 ) +// { +// updateRandomWave(); +// shape_sample = m_random; +// } +// break; +// val = Oscillator::squareSample( phase );// <- dummy! break; case EnvelopeAndLfoParameters::UserDefinedWave: val = m_params->m_userWave. userWaveSample( phase ); + break; } if( static_cast( cur_sample ) <= m_params->m_lfoAttackFrames ) From 768f0e54b0947811af220f29d56946619ce82b46 Mon Sep 17 00:00:00 2001 From: Oskar Wallgren Date: Fri, 23 May 2014 03:46:40 +0200 Subject: [PATCH 3/4] Random graph approximation and cleanup --- include/EnvelopeAndLfoView.h | 4 +++- src/core/EnvelopeAndLfoParameters.cpp | 5 ++--- src/gui/widgets/EnvelopeAndLfoView.cpp | 22 ++++++++++++---------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/include/EnvelopeAndLfoView.h b/include/EnvelopeAndLfoView.h index 8df71b0ed..2c054d71a 100644 --- a/include/EnvelopeAndLfoView.h +++ b/include/EnvelopeAndLfoView.h @@ -90,7 +90,9 @@ private: ledCheckBox * m_x100Cb; ledCheckBox * m_controlEnvAmountCb; - + + float m_randomGraph; + void updateRandomGraph(); } ; #endif diff --git a/src/core/EnvelopeAndLfoParameters.cpp b/src/core/EnvelopeAndLfoParameters.cpp index a709d0aea..4c16f2ecc 100644 --- a/src/core/EnvelopeAndLfoParameters.cpp +++ b/src/core/EnvelopeAndLfoParameters.cpp @@ -68,6 +68,7 @@ void EnvelopeAndLfoParameters::LfoInstances::reset() + void EnvelopeAndLfoParameters::LfoInstances::add( EnvelopeAndLfoParameters * lfo ) { QMutexLocker m( &m_lfoListMutex ); @@ -86,7 +87,6 @@ void EnvelopeAndLfoParameters::LfoInstances::remove( EnvelopeAndLfoParameters * - EnvelopeAndLfoParameters::EnvelopeAndLfoParameters( float _value_for_zero_amount, Model * _parent ) : @@ -219,12 +219,11 @@ inline sample_t EnvelopeAndLfoParameters::lfoShapeSample( fpp_t _frame_offset ) shape_sample = m_userWave.userWaveSample( phase ); break; case RandomWave: - shape_sample = m_random; if( frame == 0 ) { updateRandomWave(); - shape_sample = m_random; } + shape_sample = m_random; break; case SineWave: default: diff --git a/src/gui/widgets/EnvelopeAndLfoView.cpp b/src/gui/widgets/EnvelopeAndLfoView.cpp index dc5de9698..2cf8bdd43 100644 --- a/src/gui/widgets/EnvelopeAndLfoView.cpp +++ b/src/gui/widgets/EnvelopeAndLfoView.cpp @@ -535,16 +535,11 @@ void EnvelopeAndLfoView::paintEvent( QPaintEvent * ) val = Oscillator::squareSample( phase ); break; case EnvelopeAndLfoParameters::RandomWave: - val = Oscillator::sawSample( phase ); - // val = Oscillator::noiseSample( phase ); -// shape_sample = m_random; -// if( frame == 0 ) -// { -// updateRandomWave(); -// shape_sample = m_random; -// } -// break; -// val = Oscillator::squareSample( phase );// <- dummy! + if( x % (int)( 900 * m_lfoSpeedKnob->value() + 1 ) == 0 ) + { + updateRandomGraph(); + } + val = m_randomGraph; break; case EnvelopeAndLfoParameters::UserDefinedWave: val = m_params->m_userWave. @@ -577,6 +572,13 @@ void EnvelopeAndLfoView::paintEvent( QPaintEvent * ) +void EnvelopeAndLfoView::updateRandomGraph() +{ + m_randomGraph = Oscillator::noiseSample( 0.0f ); +} + + + void EnvelopeAndLfoView::lfoUserWaveChanged() { From 2e78e65d59ae6bc70068fb7ae9a1f0ac4eb11b23 Mon Sep 17 00:00:00 2001 From: Oskar Wallgren Date: Sat, 24 May 2014 20:02:18 +0200 Subject: [PATCH 4/4] Code simplifed --- include/EnvelopeAndLfoParameters.h | 2 -- include/EnvelopeAndLfoView.h | 1 - src/core/EnvelopeAndLfoParameters.cpp | 10 +--------- src/gui/widgets/EnvelopeAndLfoView.cpp | 9 +-------- 4 files changed, 2 insertions(+), 20 deletions(-) diff --git a/include/EnvelopeAndLfoParameters.h b/include/EnvelopeAndLfoParameters.h index bcac7b812..42641c791 100644 --- a/include/EnvelopeAndLfoParameters.h +++ b/include/EnvelopeAndLfoParameters.h @@ -174,8 +174,6 @@ private: sample_t lfoShapeSample( fpp_t _frame_offset ); void updateLfoShapeData(); - void updateRandomWave(); - friend class EnvelopeAndLfoView; diff --git a/include/EnvelopeAndLfoView.h b/include/EnvelopeAndLfoView.h index 2c054d71a..1ad292456 100644 --- a/include/EnvelopeAndLfoView.h +++ b/include/EnvelopeAndLfoView.h @@ -92,7 +92,6 @@ private: ledCheckBox * m_controlEnvAmountCb; float m_randomGraph; - void updateRandomGraph(); } ; #endif diff --git a/src/core/EnvelopeAndLfoParameters.cpp b/src/core/EnvelopeAndLfoParameters.cpp index 4c16f2ecc..066c9132a 100644 --- a/src/core/EnvelopeAndLfoParameters.cpp +++ b/src/core/EnvelopeAndLfoParameters.cpp @@ -221,7 +221,7 @@ inline sample_t EnvelopeAndLfoParameters::lfoShapeSample( fpp_t _frame_offset ) case RandomWave: if( frame == 0 ) { - updateRandomWave(); + m_random = Oscillator::noiseSample( 0.0f ); } shape_sample = m_random; break; @@ -249,14 +249,6 @@ void EnvelopeAndLfoParameters::updateLfoShapeData() -void EnvelopeAndLfoParameters::updateRandomWave() -{ - m_random = Oscillator::noiseSample( 0.0f ); -} - - - - inline void EnvelopeAndLfoParameters::fillLfoLevel( float * _buf, f_cnt_t _frame, const fpp_t _frames ) diff --git a/src/gui/widgets/EnvelopeAndLfoView.cpp b/src/gui/widgets/EnvelopeAndLfoView.cpp index 2cf8bdd43..450724238 100644 --- a/src/gui/widgets/EnvelopeAndLfoView.cpp +++ b/src/gui/widgets/EnvelopeAndLfoView.cpp @@ -537,7 +537,7 @@ void EnvelopeAndLfoView::paintEvent( QPaintEvent * ) case EnvelopeAndLfoParameters::RandomWave: if( x % (int)( 900 * m_lfoSpeedKnob->value() + 1 ) == 0 ) { - updateRandomGraph(); + m_randomGraph = Oscillator::noiseSample( 0.0f ); } val = m_randomGraph; break; @@ -572,13 +572,6 @@ void EnvelopeAndLfoView::paintEvent( QPaintEvent * ) -void EnvelopeAndLfoView::updateRandomGraph() -{ - m_randomGraph = Oscillator::noiseSample( 0.0f ); -} - - - void EnvelopeAndLfoView::lfoUserWaveChanged() {