From 8d46cc99fe2778c5658b659f4f1fe6ac828bb9e9 Mon Sep 17 00:00:00 2001 From: John Emmas Date: Wed, 14 Oct 2015 14:54:27 +0100 Subject: Fix a problem where VST automation data wasn't getting written (if the adjustments were made from the plugin's own controls) --- libs/ardour/ardour/plugin.h | 1 + libs/ardour/ardour/vst_plugin.h | 1 + libs/ardour/plugin.cc | 6 ++++++ libs/ardour/session_vst.cc | 2 +- libs/ardour/vst_plugin.cc | 6 ++++++ 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/libs/ardour/ardour/plugin.h b/libs/ardour/ardour/plugin.h index f9831afcad..2554a6816c 100644 --- a/libs/ardour/ardour/plugin.h +++ b/libs/ardour/ardour/plugin.h @@ -274,6 +274,7 @@ protected: friend class PluginInsert; virtual void set_parameter (uint32_t which, float val); + virtual void set_parameter_automated (uint32_t which, float val); /** Do the actual saving of the current plugin settings to a preset of the provided name. * Should return a URI on success, or an empty string on failure. diff --git a/libs/ardour/ardour/vst_plugin.h b/libs/ardour/ardour/vst_plugin.h index 8e2e313c1f..d77d3801aa 100644 --- a/libs/ardour/ardour/vst_plugin.h +++ b/libs/ardour/ardour/vst_plugin.h @@ -46,6 +46,7 @@ public: float get_parameter (uint32_t port) const; uint32_t nth_parameter (uint32_t port, bool& ok) const; void set_parameter (uint32_t port, float val); + void set_parameter_automated (uint32_t port, float val); bool load_preset (PresetRecord); int get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const; std::string describe_parameter (Evoral::Parameter); diff --git a/libs/ardour/plugin.cc b/libs/ardour/plugin.cc index 89f6d24137..f14c56798b 100644 --- a/libs/ardour/plugin.cc +++ b/libs/ardour/plugin.cc @@ -365,6 +365,12 @@ Plugin::set_parameter (uint32_t which, float) ParameterChanged (which, get_parameter (which)); /* EMIT SIGNAL */ } +void +Plugin::set_parameter_automated (uint32_t which, float val) +{ + Plugin::set_parameter (which, val); +} + int Plugin::set_state (const XMLNode& node, int /*version*/) { diff --git a/libs/ardour/session_vst.cc b/libs/ardour/session_vst.cc index a9f404fcb2..9bf2847331 100644 --- a/libs/ardour/session_vst.cc +++ b/libs/ardour/session_vst.cc @@ -86,7 +86,7 @@ intptr_t Session::vst_callback ( SHOW_CALLBACK ("audioMasterAutomate"); // index, value, returns 0 if (plug) { - plug->set_parameter (index, opt); + plug->set_parameter_automated (index, opt); } return 0; diff --git a/libs/ardour/vst_plugin.cc b/libs/ardour/vst_plugin.cc index 1614b1d8fe..08db7dec5e 100644 --- a/libs/ardour/vst_plugin.cc +++ b/libs/ardour/vst_plugin.cc @@ -117,6 +117,12 @@ VSTPlugin::set_parameter (uint32_t which, float newval) } } +void +VSTPlugin::set_parameter_automated (uint32_t which, float newval) +{ + Plugin::set_parameter_automated (which, newval); +} + uint32_t VSTPlugin::nth_parameter (uint32_t n, bool& ok) const { -- cgit v1.2.3