convert interface <> internal values for all automation
authorRobin Gareus <robin@gareus.org>
Sat, 1 Nov 2014 06:25:47 +0000 (07:25 +0100)
committerRobin Gareus <robin@gareus.org>
Sat, 1 Nov 2014 06:27:35 +0000 (07:27 +0100)
fixes Send-Fader, Gain-Automation and various Plugin-Slider ranges

gtk2_ardour/automation_controller.cc
gtk2_ardour/generic_pluginui.cc
gtk2_ardour/processor_box.cc

index 3174980a7b4c46db1213ba9bd552f1488b30e8b0..77b8d39406b85072add6220d380a1611bf840860 100644 (file)
@@ -69,18 +69,19 @@ AutomationController::create(
                const Evoral::Parameter& param,
                boost::shared_ptr<AutomationControl> ac)
 {
+       double const lo = ac->internal_to_interface(param.min());
+       double const up = ac->internal_to_interface(param.max());
        Gtk::Adjustment* adjustment = manage (
-               new Gtk::Adjustment (
-                       param.normal(),
-                       param.min(),
-                       param.max(),
-                       (param.max() - param.min()) / 100.0,
-                       (param.max() - param.min()) / 10.0
-                       )
-               );
-
-        assert (ac);
-        assert(ac->parameter() == param);
+                       new Gtk::Adjustment (
+                               ac->internal_to_interface(param.normal()),
+                               lo, up,
+                               // TODO we should use explicit step-sizes if provided by Plugin::ParameterDescriptor
+                               (up - lo) / 100, (up - lo) / 10
+                               )
+                       );
+
+       assert (ac);
+       assert(ac->parameter() == param);
        return boost::shared_ptr<AutomationController>(new AutomationController(printer, ac, adjustment));
 }
 
@@ -94,7 +95,7 @@ AutomationController::get_label (double& xpos)
 void
 AutomationController::display_effective_value()
 {
-       double const interface_value = _controllable->get_value();
+       double const interface_value = _controllable->internal_to_interface(_controllable->get_value());
 
        if (_adjustment->get_value () != interface_value) {
                _ignore_change = true;
@@ -107,7 +108,7 @@ void
 AutomationController::value_adjusted ()
 {
        if (!_ignore_change) {
-               _controllable->set_value (_adjustment->get_value());
+               _controllable->set_value (_controllable->interface_to_internal(_adjustment->get_value()));
        }
 }
 
index f6029ecb0c4e3cc873d7db6de9b0c78c3689fbb7..feea27b0b9f903696053d851d804f84a3ace328c 100644 (file)
@@ -662,12 +662,6 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat
                Adjustment* adj = control_ui->controller->adjustment();
                boost::shared_ptr<PluginInsert::PluginControl> pc = boost::dynamic_pointer_cast<PluginInsert::PluginControl> (control_ui->control);
 
-               adj->set_lower (desc.lower);
-               adj->set_upper (desc.upper);
-
-               adj->set_step_increment (desc.step);
-               adj->set_page_increment (desc.largestep);
-
                if (desc.integer_step) {
                        control_ui->clickbox = new ClickBox (adj, "PluginUIClickBox");
                        Gtkmm2ext::set_size_request_to_display_given_text (*control_ui->clickbox, "g9999999", 2, 2);
@@ -687,7 +681,7 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat
 
                }
 
-               adj->set_value (plugin->get_parameter (port_index));
+               adj->set_value (mcontrol->internal_to_interface(plugin->get_parameter (port_index)));
 
                /* XXX memory leak: SliderController not destroyed by ControlUI
                   destructor, and manage() reports object hierarchy
index 12ae5af4bc27901fb69def977beeb1c8d16a2b06..1fdad0801dc86deac9ee60d311cc7e59e98d2b3b 100644 (file)
@@ -522,14 +522,14 @@ ProcessorEntry::Control::Control (boost::shared_ptr<AutomationControl> c, string
                box.add (_slider);
                _slider.show ();
 
-               double const lo = c->lower ();
-               double const up = c->upper ();
+               double const lo = c->internal_to_interface(c->lower ());
+               double const up = c->internal_to_interface(c->upper ());
                
                _adjustment.set_lower (lo);
                _adjustment.set_upper (up);
                _adjustment.set_step_increment ((up - lo) / 100);
                _adjustment.set_page_increment ((up - lo) / 10);
-               _slider.set_default_value (c->normal ());
+               _slider.set_default_value (c->internal_to_interface(c->normal ()));
                
                _adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &Control::slider_adjusted));
                c->Changed.connect (_connection, MISSING_INVALIDATOR, boost::bind (&Control::control_changed, this), gui_context ());
@@ -581,7 +581,7 @@ ProcessorEntry::Control::slider_adjusted ()
                return;
        }
 
-       c->set_value ( _adjustment.get_value () );
+       c->set_value ( c->interface_to_internal(_adjustment.get_value ()) );
        set_tooltip ();
 }
 
@@ -617,7 +617,7 @@ ProcessorEntry::Control::control_changed ()
                
        } else {
 
-               _adjustment.set_value (c->get_value ());
+               _adjustment.set_value (c->internal_to_interface(c->get_value ()));
                
                stringstream s;
                s.precision (1);