diff --git a/libs/ardour/ardour/gain_control.h b/libs/ardour/ardour/gain_control.h index f8263adcd1..491705bafe 100644 --- a/libs/ardour/ardour/gain_control.h +++ b/libs/ardour/ardour/gain_control.h @@ -44,6 +44,7 @@ class LIBARDOUR_API GainControl : public SlavableAutomationControl { protected: void post_add_master (std::shared_ptr); bool get_masters_curve_locked (samplepos_t, samplepos_t, float*, samplecnt_t) const; + void actually_set_value (double value, PBD::Controllable::GroupControlDisposition); }; } /* namespace */ diff --git a/libs/ardour/gain_control.cc b/libs/ardour/gain_control.cc index 5c28eb4aa6..dc41145faa 100644 --- a/libs/ardour/gain_control.cc +++ b/libs/ardour/gain_control.cc @@ -107,6 +107,17 @@ GainControl::inc_gain (gain_t factor) } } +void +GainControl::actually_set_value (double value, PBD::Controllable::GroupControlDisposition gcd) +{ + const double max_factor = _desc.from_interface (1.0); + const double min_factor = _desc.from_interface (0.0); + + value = std::max (min_factor, std::min (value, max_factor)); + + SlavableAutomationControl::actually_set_value (value, gcd); +} + void GainControl::post_add_master (std::shared_ptr m) {