- if ((gain_node = node.child (Controllable::xml_node_name.c_str())) != 0) {
- _gain_control->set_state (*gain_node, version);
- }
-
- return 0;
-}
-
-Amp::GainControl::GainControl (Session& session, const Evoral::Parameter ¶m, boost::shared_ptr<AutomationList> al)
- : AutomationControl (session, param, ParameterDescriptor(param),
- al ? al : boost::shared_ptr<AutomationList> (new AutomationList (param)),
- param.type() == GainAutomation ? X_("gaincontrol") : X_("trimcontrol")) {
-
- alist()->reset_default (1.0);
-
- lower_db = accurate_coefficient_to_dB (_desc.lower);
- range_db = accurate_coefficient_to_dB (_desc.upper) - lower_db;
-}
-
-void
-Amp::GainControl::set_value (double val, PBD::Controllable::GroupControlDisposition /* group_override */)
-{
- if (writable()) {
- set_value_unchecked (val);
- }
-}
-
-void
-Amp::GainControl::set_value_unchecked (double val)
-{
- AutomationControl::set_value (std::max (std::min (val, (double)_desc.upper), (double)_desc.lower), Controllable::NoGroup);
- _session.set_dirty ();
-}
-
-double
-Amp::GainControl::internal_to_interface (double v) const
-{
- if (_desc.type == GainAutomation) {
- return gain_to_slider_position (v);
- } else {
- return (accurate_coefficient_to_dB (v) - lower_db) / range_db;