convert interface <> internal values for all automation
fixes Send-Fader, Gain-Automation and various Plugin-Slider ranges
This commit is contained in:
parent
c855d17e09
commit
52f44dc4da
@ -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
|
||||
)
|
||||
);
|
||||
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);
|
||||
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()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user