The audioMasterAutomate callback from plugin to host does include
the parameter-value.
Previously there was a redundant call
Plugin::parameter_changed_externally() -> get_parameter
-> VSTPlugin::get_parameter() back into the plugin to query the value.
calling back into the plugin from the callback, may explain
oddities and/or crashes with some VSTs.
/* Called when a parameter of the plugin is changed outside of this
* host's control (typical via a plugin's own GUI/editor)
*/
- void parameter_changed_externally (uint32_t which, float val);
+ virtual void parameter_changed_externally (uint32_t which, float val);
/* should be overridden by plugin API specific derived types to
* actually implement changing the parameter. The derived type should
class LIBARDOUR_API VSTPlugin : public Plugin
{
public:
+ friend class Session;
VSTPlugin (AudioEngine &, Session &, VSTHandle *);
VSTPlugin (const VSTPlugin& other);
virtual ~VSTPlugin ();
protected:
+ void parameter_changed_externally (uint32_t which, float val);
void set_plugin (AEffect *);
gchar* get_chunk (bool) const;
int set_chunk (gchar const *, bool);
}
}
+void
+VSTPlugin::parameter_changed_externally (uint32_t which, float value )
+{
+ ParameterChangedExternally (which, value); /* EMIT SIGNAL */
+ Plugin::set_parameter (which, value);
+}
+
+
uint32_t
VSTPlugin::nth_parameter (uint32_t n, bool& ok) const
{