From bbafb5162767f8f363c105494446f4e2869e1898 Mon Sep 17 00:00:00 2001 From: Paul Giblock Date: Tue, 8 Jul 2008 01:38:30 +0000 Subject: [PATCH] LB302 bend-while-sliding fixed git-svn-id: https://lmms.svn.sf.net/svnroot/lmms/trunk/lmms@1297 0778d3d1-df1d-0410-868b-ea421aaaa00d --- plugins/lb302/lb302.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/plugins/lb302/lb302.cpp b/plugins/lb302/lb302.cpp index b867f9750..97d1069ec 100644 --- a/plugins/lb302/lb302.cpp +++ b/plugins/lb302/lb302.cpp @@ -670,9 +670,9 @@ void lb302Synth::initNote( lb302Note *n) // TODO: Break out into function, should be called again on detuneChanged if (vco_slideinc) { //printf(" sliding\n"); - vco_slide = vco_inc-vco_slideinc; - vco_slidebase = vco_inc; - vco_slideinc = 0; + vco_slide = vco_inc-vco_slideinc; // Slide amount + vco_slidebase = vco_inc; // The REAL frequency + vco_slideinc = 0; // reset from-note } else { vco_slide = 0; @@ -741,9 +741,16 @@ void lb302Synth::playNote( notePlayHandle * _n, bool, _n->m_pluginData = this; } + // Check for slide if( _n->unpitchedFrequency() == current_freq ) { true_freq = _n->frequency(); - vco_inc = GET_INC( true_freq ); + + if( slideToggle.value() ) { + vco_slidebase = GET_INC( true_freq ); // The REAL frequency + } + else { + vco_inc = GET_INC( true_freq ); + } } //LB303 }