diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ladspa_plugin.cc | 5 | ||||
-rw-r--r-- | libs/ardour/lv2_plugin.cc | 7 | ||||
-rw-r--r-- | libs/ardour/vst_plugin.cc | 4 |
3 files changed, 16 insertions, 0 deletions
diff --git a/libs/ardour/ladspa_plugin.cc b/libs/ardour/ladspa_plugin.cc index 1b3a5ea2e3..be3fefdaac 100644 --- a/libs/ardour/ladspa_plugin.cc +++ b/libs/ardour/ladspa_plugin.cc @@ -279,6 +279,11 @@ void LadspaPlugin::set_parameter (uint32_t which, float val) { if (which < _descriptor->PortCount) { + + if (get_parameter (which) == val) { + return; + } + _shadow_data[which] = (LADSPA_Data) val; #if 0 diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc index f8a41c5ecd..62bd9f50ad 100644 --- a/libs/ardour/lv2_plugin.cc +++ b/libs/ardour/lv2_plugin.cc @@ -558,7 +558,14 @@ LV2Plugin::set_parameter(uint32_t which, float val) "%1 set parameter %2 to %3\n", name(), which, val)); if (which < lilv_plugin_get_num_ports(_impl->plugin)) { + + if (get_parameter (which) == val) { + return; + } + _shadow_data[which] = val; + + } else { warning << string_compose( _("Illegal parameter number used with plugin \"%1\". " diff --git a/libs/ardour/vst_plugin.cc b/libs/ardour/vst_plugin.cc index 7c31dcff10..2bbc65a34e 100644 --- a/libs/ardour/vst_plugin.cc +++ b/libs/ardour/vst_plugin.cc @@ -101,6 +101,10 @@ VSTPlugin::get_parameter (uint32_t which) const void VSTPlugin::set_parameter (uint32_t which, float val) { + if (get_parameter (which) == val) { + return; + } + _plugin->setParameter (_plugin, which, val); Plugin::set_parameter (which, val); } |