13
0

Fix computation of AutomationController steps

smallstep (resp. largestep) is intended to be the interface delta
corresponding to a desc.smallstep (resp. largestep) in internal scale,
and is computed by incrementing from desc.lower.

But ac->internal_to_interface(desc.lower) isn't necessarily zero. In
fact it currently is 0.5 / (M - m + 1) for integer parameters where M is
the maximum and m is the minimum possible value since it is the center
of the [0,1/(M-m+1)] interval.

Since the lower bound of the delta isn't always zero, don't ignore it
when computing the actual increment.
This commit is contained in:
Robin Gareus 2017-09-24 21:10:31 +02:00 committed by Julien "_FrnchFrgg_" RIVAUD
parent 0910df0cc7
commit a982a7cc67

View File

@ -142,8 +142,8 @@ AutomationController::create(const Evoral::Parameter& param,
const double lo = ac->internal_to_interface(desc.lower);
const double up = ac->internal_to_interface(desc.upper);
const double normal = ac->internal_to_interface(desc.normal);
const double smallstep = ac->internal_to_interface(desc.lower + desc.smallstep);
const double largestep = ac->internal_to_interface(desc.lower + desc.largestep);
const double smallstep = ac->internal_to_interface(desc.lower + desc.smallstep) - lo;
const double largestep = ac->internal_to_interface(desc.lower + desc.largestep) - lo;
Gtk::Adjustment* adjustment = manage (
new Gtk::Adjustment (normal, lo, up, smallstep, largestep));