From e8bdc7b3c144fa3e3189396c3883dcadcf521eee Mon Sep 17 00:00:00 2001 From: Mike Choi Date: Thu, 3 Jan 2013 20:13:59 +0100 Subject: [PATCH] VST Automation: Sync button fix Only not automated values are synced from VST plugin, no need to sync already automated values. Synced values are now not trackable with undo / redo, before all changes were tracked individualy, but user could lose ability to undo easily changes before sync buton was pressed. Signed-off-by: Tobias Doerffel --- plugins/vestige/vestige.cpp | 23 +++++++++++++++-------- plugins/vst_effect/VstEffectControls.cpp | 23 +++++++++++++++-------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/plugins/vestige/vestige.cpp b/plugins/vestige/vestige.cpp index 514d93f1e..2f7914fd6 100644 --- a/plugins/vestige/vestige.cpp +++ b/plugins/vestige/vestige.cpp @@ -950,16 +950,23 @@ manageVestigeInstrumentView::manageVestigeInstrumentView( Instrument * _instrume void manageVestigeInstrumentView::syncPlugin( void ) { char paramStr[35]; - QStringList list1; + QStringList s_dumpValues; const QMap & dump = m_vi->m_plugin->parameterDump(); - float f; + float f_value; - for (int i = 0; i<(dump).size(); i++) { - sprintf( paramStr, "param%d", i); - list1 = dump[paramStr].split(":"); - f = (list1.at(2)).toFloat(); - m_vi->knobFModel[i]->setValue(f); - m_vi->knobFModel[i]->setInitValue(f); + for( int i = 0; i < m_vi->paramCount; i++ ) + { + // only not automated knobs are synced from VST + // those auto-setted values are not jurnaled, tracked for undo / redo + if( !( m_vi->knobFModel[ i ]->isAutomated() || + m_vi->knobFModel[ i ]->getControllerConnection() ) ) + { + sprintf( paramStr, "param%d", i ); + s_dumpValues = dump[ paramStr ].split( ":" ); + f_value = ( s_dumpValues.at( 2 ) ).toFloat(); + m_vi->knobFModel[ i ]->setAutomatedValue( f_value ); + m_vi->knobFModel[ i ]->setInitValue( f_value ); + } } } diff --git a/plugins/vst_effect/VstEffectControls.cpp b/plugins/vst_effect/VstEffectControls.cpp index abd22c5ee..968aed2a4 100644 --- a/plugins/vst_effect/VstEffectControls.cpp +++ b/plugins/vst_effect/VstEffectControls.cpp @@ -394,16 +394,23 @@ manageVSTEffectView::manageVSTEffectView( VstEffect * _eff, VstEffectControls * void manageVSTEffectView::syncPlugin( void ) { char paramStr[35]; - QStringList list1; + QStringList s_dumpValues; const QMap & dump = m_effect->m_plugin->parameterDump(); - float f; + float f_value; - for (int i = 0; i<(dump).size(); i++) { - sprintf( paramStr, "param%d", i); - list1 = dump[paramStr].split(":"); - f = (list1.at(2)).toFloat(); - m_vi2->knobFModel[i]->setValue(f); - m_vi2->knobFModel[i]->setInitValue(f); + for( int i = 0; i < m_vi2->paramCount; i++ ) + { + // only not automated knobs are synced from VST + // those auto-setted values are not jurnaled, tracked for undo / redo + if( !( m_vi2->knobFModel[ i ]->isAutomated() || + m_vi2->knobFModel[ i ]->getControllerConnection() ) ) + { + sprintf( paramStr, "param%d", i ); + s_dumpValues = dump[ paramStr ].split( ":" ); + f_value = ( s_dumpValues.at( 2 ) ).toFloat(); + m_vi2->knobFModel[ i ]->setAutomatedValue( f_value ); + m_vi2->knobFModel[ i ]->setInitValue( f_value ); + } } }