diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index ab3c6084d7..4238bf94a4 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -4164,6 +4164,35 @@ These settings will only take effect after %1 is restarted.\n\ add_option (_("Plugins/GUI"), _plugin_prefer_inline); #endif +#ifdef VST3_SUPPORT + add_option (_("Plugins/GUI"), new OptionEditorHeading (_("VST3 UI"))); + + add_option (_("Plugins/GUI"), + new BoolOption ( + "show-vst3-micro-edit-inline", + _("Automatically show 'Micro Edit' tagged controls on the mixer-strip"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_show_vst3_micro_edit_inline), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_show_vst3_micro_edit_inline) + )); + + ComboOption* v3km = new ComboOption ( + "vst3-knob-mode", + _("VST3 Knob Mode"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_vst3_knob_mode), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_vst3_knob_mode) + ); + + v3km->add (VST3KnobPluginDefault, _("Plugin Default")); + v3km->add (VST3KnobCircularMode, _("Circular with jump to clicked position (discouraged)")); + v3km->add (VST3KnobRelativCircularMode, _("Circular without jump to clicked position")); + v3km->add (VST3KnobLinearMode, _("Linear: depending on vertical movement")); + + v3km->set_note (_("These settings apply to new VST3 plugin instances only.\nAlready loaded plugins retain the previous setting.")); + + add_option (_("Plugins/GUI"), v3km); + +#endif + #if (defined WINDOWS_VST_SUPPORT || defined MACVST_SUPPORT || defined LXVST_SUPPORT || defined VST3_SUPPORT) add_option (_("Plugins/VST"), new OptionEditorHeading (_("VST"))); @@ -4296,15 +4325,6 @@ These settings will only take effect after %1 is restarted.\n\ "are always searched, and need not be explicitly set.")); add_option (_("Plugins/VST"), vst3_path); - // -> Appearance/Mixer ? - add_option (_("Plugins/VST"), - new BoolOption ( - "show-vst3-micro-edit-inline", - _("Automatically show 'Micro Edit' tagged controls on the mixer-strip"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_show_vst3_micro_edit_inline), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_show_vst3_micro_edit_inline) - )); - #if (defined WINDOWS_VST_SUPPORT || defined MACVST_SUPPORT || defined LXVST_SUPPORT) add_option (_("Plugins/VST"), new OptionEditorHeading (_("VST2/VST3"))); add_option (_("Plugins/VST"), diff --git a/libs/ardour/ardour/rc_configuration_vars.inc.h b/libs/ardour/ardour/rc_configuration_vars.inc.h index 4eb7ab09e8..f9b7f85787 100644 --- a/libs/ardour/ardour/rc_configuration_vars.inc.h +++ b/libs/ardour/ardour/rc_configuration_vars.inc.h @@ -259,6 +259,7 @@ CONFIG_VARIABLE (bool, setup_sidechain, "setup-sidechain", false) CONFIG_VARIABLE (uint32_t, plugin_scan_timeout, "plugin-scan-timeout", 150) /* deci-seconds */ CONFIG_VARIABLE (uint32_t, limit_n_automatables, "limit-n-automatables", 512) CONFIG_VARIABLE (uint32_t, plugin_cache_version, "plugin-cache-version", 0) +CONFIG_VARIABLE (VST3KnobMode, vst3_knob_mode, "vst3-knob-mode", VST3KnobLinearMode) CONFIG_VARIABLE (float, tail_duration_sec, "tail-duration-sec", 2.0) CONFIG_VARIABLE (uint32_t, max_tail_samples, "max-tail-samples", 0xffffffff) // aka kInfiniteTail diff --git a/libs/ardour/luabindings.cc b/libs/ardour/luabindings.cc index ccb26bd2e8..51625687c2 100644 --- a/libs/ardour/luabindings.cc +++ b/libs/ardour/luabindings.cc @@ -2927,6 +2927,13 @@ LuaBindings::common (lua_State* L) .addConst ("NameAfterDriver", ARDOUR::TracksAutoNamingRule(NameAfterDriver)) .endNamespace () + .beginNamespace ("VST3KnobMode") + .addConst ("VST3KnobPluginDefault", ARDOUR::VST3KnobMode(VST3KnobPluginDefault)) + .addConst ("VST3KnobCircularMode", ARDOUR::VST3KnobMode(VST3KnobCircularMode)) + .addConst ("VST3KnobRelativCircularMode", ARDOUR::VST3KnobMode(VST3KnobRelativCircularMode)) + .addConst ("VST3KnobLinearMode", ARDOUR::VST3KnobMode(VST3KnobLinearMode)) + .endNamespace () + .endNamespace (); // end ARDOUR luabridge::getGlobalNamespace (L) diff --git a/libs/ardour/vst3_plugin.cc b/libs/ardour/vst3_plugin.cc index 7889221503..224ca97686 100644 --- a/libs/ardour/vst3_plugin.cc +++ b/libs/ardour/vst3_plugin.cc @@ -1322,7 +1322,19 @@ VST3PI::VST3PI (std::shared_ptr m, std::string unique_ FUnknownPtr controller2 (_controller); if (controller2) { - controller2->setKnobMode (Vst::kLinearMode); + switch (Config->get_vst3_knob_mode ()) { + case VST3KnobLinearMode: + controller2->setKnobMode (Vst::kLinearMode); + break; + case VST3KnobCircularMode: + controller2->setKnobMode (Vst::kCircularMode); + break; + case VST3KnobRelativCircularMode: + controller2->setKnobMode (Vst::kRelativCircularMode); + break; + default: + break; + } } int32 n_params = _controller->getParameterCount ();