diff --git a/libs/ardour/ardour/vst3_plugin.h b/libs/ardour/ardour/vst3_plugin.h index 83ec98a89c..3cad78d02d 100644 --- a/libs/ardour/ardour/vst3_plugin.h +++ b/libs/ardour/ardour/vst3_plugin.h @@ -164,7 +164,7 @@ public: /* API for Ardour -- Parameters */ bool try_set_parameter_by_id (Vst::ParamID id, float value); - void set_parameter (uint32_t p, float value, int32 sample_off, bool to_list = true); + void set_parameter (uint32_t p, float value, int32 sample_off, bool to_list = true, bool force = false); float get_parameter (uint32_t p) const; std::string format_parameter (uint32_t p) const; Vst::ParamID index_to_id (uint32_t) const; diff --git a/libs/ardour/vst3_plugin.cc b/libs/ardour/vst3_plugin.cc index 9e99182312..6bb2813dba 100644 --- a/libs/ardour/vst3_plugin.cc +++ b/libs/ardour/vst3_plugin.cc @@ -799,7 +799,7 @@ VST3Plugin::connect_and_run (BufferSet& bufs, /* apply parameter changes */ PV pv; while (_parameter_queue.read (&pv, 1)) { - _plug->set_parameter (pv.port, pv.val, 0, true); + _plug->set_parameter (pv.port, pv.val, 0, true, true); } in_index = 0; @@ -1949,11 +1949,11 @@ VST3PI::try_set_parameter_by_id (Vst::ParamID id, float value) } void -VST3PI::set_parameter (uint32_t p, float value, int32 sample_off, bool to_list) +VST3PI::set_parameter (uint32_t p, float value, int32 sample_off, bool to_list, bool force) { Vst::ParamID id = index_to_id (p); value = _controller->plainParamToNormalized (id, value); - if (_shadow_data[p] == value && sample_off == 0 && to_list) { + if (_shadow_data[p] == value && sample_off == 0 && to_list && !force) { return; } if (to_list) {