GainControl::internal_to_interface (double v) const
{
if (_desc.type == GainAutomation) {
- return gain_to_slider_position (v);
+ return gain_to_slider_position_with_max (v, _desc.upper);
} else {
return (accurate_coefficient_to_dB (v) - lower_db) / range_db;
}
GainControl::interface_to_internal (double v) const
{
if (_desc.type == GainAutomation) {
- return slider_position_to_gain (v);
+ return slider_position_to_gain_with_max (v, _desc.upper);
} else {
return dB_to_coefficient (lower_db + v * range_db);
}
}
}
+void
+GainControl::post_add_master (boost::shared_ptr<AutomationControl> m)
+{
+ if (m->get_value() == 0) {
+ /* master is at -inf, which forces this ctrl to -inf on assignment */
+ Changed (false, Controllable::NoGroup); /* EMIT SIGNAL */
+ }
+}
+
bool
GainControl::get_masters_curve_locked (framepos_t start, framepos_t end, float* vec, framecnt_t veclen) const
{