summaryrefslogtreecommitdiff
path: root/libs/ardour/plugin_insert.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-03-06 01:38:49 +0100
committerRobin Gareus <robin@gareus.org>2017-03-06 01:38:49 +0100
commite6f4f179be87758a16d4f1a11e9cd8de74970e63 (patch)
tree3c7ba7553d4f546a8f542d36a8865f6d89029cf2 /libs/ardour/plugin_insert.cc
parent3cba51df26d4c0d489b68f441d0aff9074c1fc27 (diff)
Add support for VST effSetBypass #7266
This mechanism re-uses internal abstraction (plugin-enable). Other plugin-specs designate a control-port, for VST we 'emulate' a control-port. There is still debug-output to stderr, here while testing.
Diffstat (limited to 'libs/ardour/plugin_insert.cc')
-rw-r--r--libs/ardour/plugin_insert.cc15
1 files changed, 15 insertions, 0 deletions
diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc
index c82257a4f4..8e3e138201 100644
--- a/libs/ardour/plugin_insert.cc
+++ b/libs/ardour/plugin_insert.cc
@@ -490,6 +490,21 @@ PluginInsert::create_automatable_parameters ()
_bypass_port = plugin->designated_bypass_port ();
+ /* special case VST effSetBypass */
+ if (_bypass_port == UINT32_MAX -1) {
+ // emulate VST Bypass
+ Evoral::Parameter param (PluginAutomation, 0, _bypass_port);
+ ParameterDescriptor desc;
+ desc.label = _("Plugin Enable");
+ desc.toggled = true;
+ desc.normal = 1;
+ desc.lower = 0;
+ desc.upper = 1;
+ boost::shared_ptr<AutomationList> list(new AutomationList(param, desc));
+ boost::shared_ptr<AutomationControl> c (new PluginControl(this, param, desc, list));
+ add_control (c);
+ }
+
if (_bypass_port != UINT32_MAX) {
boost::shared_ptr<AutomationControl> ac = automation_control (Evoral::Parameter (PluginAutomation, 0, _bypass_port));
if (0 == (ac->flags () & Controllable::NotAutomatable)) {