From ba03b7045737108722a061c11d03cd40e5c1e094 Mon Sep 17 00:00:00 2001 From: Mike Choi Date: Thu, 3 Jan 2013 20:50:25 +0100 Subject: [PATCH] State of VST controls in LMMS control wrapper is reloaded after Save/Load, from plugins state After project save/load unsaved VST control parameters in LMMS VST control wrapper are not set to zero now, but reloaded according plugins saved state. No need to sync values manualy again, after project save, load. Signed-off-by: Tobias Doerffel --- plugins/vestige/vestige.cpp | 20 ++++++++++++++------ plugins/vst_effect/VstEffectControls.cpp | 20 ++++++++++++++------ 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/plugins/vestige/vestige.cpp b/plugins/vestige/vestige.cpp index 2f7914fd6..ee54629b3 100644 --- a/plugins/vestige/vestige.cpp +++ b/plugins/vestige/vestige.cpp @@ -121,19 +121,27 @@ void vestigeInstrument::loadSettings( const QDomElement & _this ) char paramStr[35]; vstKnobs = new knob *[ paramCount ]; knobFModel = new FloatModel *[ paramCount ]; - QStringList list1; + QStringList s_dumpValues; QWidget * widget = new QWidget(); for( int i = 0; i < paramCount; i++ ) { - sprintf( paramStr, "param%d", i); - list1 = dump[paramStr].split(":"); + sprintf( paramStr, "param%d", i ); + s_dumpValues = dump[ paramStr ].split( ":" ); vstKnobs[i] = new knob( knobBright_26, widget ); - vstKnobs[i]->setHintText( list1.at(1) + ":", ""); - vstKnobs[i]->setLabel( list1.at(1).left(15) ); + vstKnobs[i]->setHintText( s_dumpValues.at( 1 ) + ":", "" ); + vstKnobs[i]->setLabel( s_dumpValues.at( 1 ).left( 15 ) ); - knobFModel[i] = new FloatModel( (list1.at(2)).toFloat(), 0.0f, 1.0f, 0.01f, this, QString::number(i) ); + knobFModel[i] = new FloatModel( 0.0f, 0.0f, 1.0f, 0.01f, this, QString::number(i) ); knobFModel[i]->loadSettings( _this, paramStr ); + + if( !( knobFModel[ i ]->isAutomated() || + knobFModel[ i ]->getControllerConnection() ) ) + { + knobFModel[ i ]->setValue( ( s_dumpValues.at( 2 )).toFloat() ); + knobFModel[ i ]->setInitValue( ( s_dumpValues.at( 2 )).toFloat() ); + } + connect( knobFModel[i], SIGNAL( dataChanged() ), this, SLOT( setParameter() ) ); vstKnobs[i]->setModel( knobFModel[i] ); diff --git a/plugins/vst_effect/VstEffectControls.cpp b/plugins/vst_effect/VstEffectControls.cpp index 968aed2a4..ec74eea6a 100644 --- a/plugins/vst_effect/VstEffectControls.cpp +++ b/plugins/vst_effect/VstEffectControls.cpp @@ -73,19 +73,27 @@ void VstEffectControls::loadSettings( const QDomElement & _this ) char paramStr[35]; vstKnobs = new knob *[ paramCount ]; knobFModel = new FloatModel *[ paramCount ]; - QStringList list1; + QStringList s_dumpValues; QWidget * widget = new QWidget(); for( int i = 0; i < paramCount; i++ ) { - sprintf( paramStr, "param%d", i); - list1 = dump[paramStr].split(":"); + sprintf( paramStr, "param%d", i ); + s_dumpValues = dump[ paramStr ].split( ":" ); vstKnobs[i] = new knob( knobBright_26, widget ); - vstKnobs[i]->setHintText( list1.at(1) + ":", ""); - vstKnobs[i]->setLabel( list1.at(1).left(15) ); + vstKnobs[i]->setHintText( s_dumpValues.at( 1 ) + ":", "" ); + vstKnobs[i]->setLabel( s_dumpValues.at( 1 ).left( 15 ) ); - knobFModel[i] = new FloatModel( (list1.at(2)).toFloat(), 0.0f, 1.0f, 0.01f, this, QString::number(i) ); + knobFModel[i] = new FloatModel( 0.0f, 0.0f, 1.0f, 0.01f, this, QString::number(i) ); knobFModel[i]->loadSettings( _this, paramStr ); + + if( !( knobFModel[ i ]->isAutomated() || + knobFModel[ i ]->getControllerConnection() ) ) + { + knobFModel[ i ]->setValue( (s_dumpValues.at( 2 ) ).toFloat() ); + knobFModel[ i ]->setInitValue( (s_dumpValues.at( 2 ) ).toFloat() ); + } + connect( knobFModel[i], SIGNAL( dataChanged() ), this, SLOT( setParameter() ) ); vstKnobs[i]->setModel( knobFModel[i] );