summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/ardour/plugin_insert.h1
-rw-r--r--libs/ardour/plugin_insert.cc14
-rw-r--r--libs/ardour/vst_plugin.cc6
3 files changed, 20 insertions, 1 deletions
diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h
index 0784659e2b..570b48de9a 100644
--- a/libs/ardour/ardour/plugin_insert.h
+++ b/libs/ardour/ardour/plugin_insert.h
@@ -208,6 +208,7 @@ public:
double get_value (void) const;
void catch_up_with_external_value (double val);
XMLNode& get_state();
+ std::string get_user_string() const;
private:
PluginInsert* _plugin;
diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc
index e1554cc8f1..3a7aff34ab 100644
--- a/libs/ardour/plugin_insert.cc
+++ b/libs/ardour/plugin_insert.cc
@@ -3001,6 +3001,20 @@ PluginInsert::PluginControl::get_value () const
return plugin->get_parameter (_list->parameter().id());
}
+std::string
+PluginInsert::PluginControl::get_user_string () const
+{
+ boost::shared_ptr<Plugin> plugin = _plugin->plugin (0);
+ if (plugin) {
+ char buf[32];
+ if (plugin->print_parameter (parameter().id(), buf, sizeof(buf))) {
+ assert (strlen (buf) > 0);
+ return std::string (buf) + " (" + AutomationControl::get_user_string () + ")";
+ }
+ }
+ return AutomationControl::get_user_string ();
+}
+
PluginInsert::PluginPropertyControl::PluginPropertyControl (PluginInsert* p,
const Evoral::Parameter& param,
const ParameterDescriptor& desc,
diff --git a/libs/ardour/vst_plugin.cc b/libs/ardour/vst_plugin.cc
index 7c68c07f92..559f76a76d 100644
--- a/libs/ardour/vst_plugin.cc
+++ b/libs/ardour/vst_plugin.cc
@@ -807,9 +807,11 @@ VSTPlugin::has_editor () const
}
bool
-VSTPlugin::print_parameter (uint32_t param, char *buf, uint32_t /*len*/) const
+VSTPlugin::print_parameter (uint32_t param, char *buf, uint32_t len) const
{
char *first_nonws;
+ assert (len > VestigeMaxShortLabelLen);
+ memset (buf, 0, len);
_plugin->dispatcher (_plugin, 7 /* effGetParamDisplay */, param, 0, buf, 0);
@@ -817,6 +819,8 @@ VSTPlugin::print_parameter (uint32_t param, char *buf, uint32_t /*len*/) const
return false;
}
+ buf[len - 1] = '\0';
+
first_nonws = buf;
while (*first_nonws && isspace (*first_nonws)) {
first_nonws++;