diff --git a/plugins/vst_base/RemoteVstPlugin.cpp b/plugins/vst_base/RemoteVstPlugin.cpp index 17405d655..dcffaf996 100644 --- a/plugins/vst_base/RemoteVstPlugin.cpp +++ b/plugins/vst_base/RemoteVstPlugin.cpp @@ -419,6 +419,10 @@ bool RemoteVstPlugin::processMessage( const message & _m ) sendMessage( IdVstSetProgram ); break; + case IdVstCurrentProgram: + sendMessage( message( IdVstCurrentProgram ).addInt( m_currentProgram ) ); + break; + case IdVstRotateProgram: rotateProgram( _m.getInt( 0 ) ); sendMessage( IdVstRotateProgram ); diff --git a/plugins/vst_base/VstPlugin.cpp b/plugins/vst_base/VstPlugin.cpp index ad9e1cdde..7c828fcc0 100644 --- a/plugins/vst_base/VstPlugin.cpp +++ b/plugins/vst_base/VstPlugin.cpp @@ -90,7 +90,8 @@ VstPlugin::VstPlugin( const QString & _plugin ) : m_productString(), m_currentProgramName(), m_allProgramNames(), - p_name() + p_name(), + m_currentProgram() { setSplittedChannels( true ); @@ -279,6 +280,10 @@ void VstPlugin::loadSettings( const QDomElement & _this ) setParameterDump( dump ); } + if( _this.hasAttribute( "program" ) ) + { + setProgram( _this.attribute( "program" ).toInt() ); + } } @@ -309,6 +314,8 @@ void VstPlugin::saveSettings( QDomDocument & _doc, QDomElement & _this ) _this.setAttribute( it.key(), it.value() ); } } + + _this.setAttribute( "program", currentProgram() ); } @@ -335,6 +342,18 @@ void VstPlugin::updateSampleRate() +int VstPlugin::currentProgram() +{ + lock(); + sendMessage( message( IdVstCurrentProgram ) ); + waitForMessage( IdVstCurrentProgram ); + unlock(); + + return m_currentProgram; +} + + + const QMap & VstPlugin::parameterDump() { lock(); @@ -406,6 +425,10 @@ bool VstPlugin::processMessage( const message & _m ) m_productString = _m.getQString(); break; + case IdVstCurrentProgram: + m_currentProgram = _m.getInt(); + break; + case IdVstCurrentProgramName: m_currentProgramName = _m.getQString(); break; diff --git a/plugins/vst_base/VstPlugin.h b/plugins/vst_base/VstPlugin.h index 2dcbbf34a..157788f83 100644 --- a/plugins/vst_base/VstPlugin.h +++ b/plugins/vst_base/VstPlugin.h @@ -145,6 +145,8 @@ private: QMap m_parameterDump; + int m_currentProgram; + } ; diff --git a/plugins/vst_base/communication.h b/plugins/vst_base/communication.h index bc46a8e65..cc6133b68 100644 --- a/plugins/vst_base/communication.h +++ b/plugins/vst_base/communication.h @@ -65,6 +65,7 @@ enum VstRemoteMessageIDs IdVstSetParameterDump, IdVstGetParameterProperties, IdVstProgramNames, + IdVstCurrentProgram, IdVstCurrentProgramName, IdVstSetProgram, IdVstRotateProgram,