A few fixes to interpolation of MIDI controller data. Don't interpolate

when writing these data back to a source, otherwise surprising new
interpolated points appear in MIDI automation.  Similarly don't interpolate
when reading the model during MIDI stretch.  Fix handling of interpolation state;
controllers that have been set by the user to use a different interpolation style
are noted in the <Source> tag of the session file and this state is sprayed around
to MidiModel and the GUI as necessary.


git-svn-id: svn://localhost/ardour2/branches/3.0@7409 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2010-07-14 00:58:15 +00:00
parent b75977920e
commit 593b421180
22 changed files with 285 additions and 96 deletions

View file

@ -954,10 +954,11 @@ ControlList::rt_safe_earliest_event(double start, double end, double& x, double&
bool
ControlList::rt_safe_earliest_event_unlocked(double start, double end, double& x, double& y, bool inclusive) const
{
if (_interpolation == Discrete)
if (_interpolation == Discrete) {
return rt_safe_earliest_event_discrete_unlocked(start, end, x, y, inclusive);
else
} else {
return rt_safe_earliest_event_linear_unlocked(start, end, x, y, inclusive);
}
}
@ -1356,5 +1357,16 @@ ControlList::move_ranges (const list< RangeMove<double> >& movements)
maybe_signal_changed ();
}
void
ControlList::set_interpolation (InterpolationStyle s)
{
if (_interpolation == s) {
return;
}
_interpolation = s;
InterpolationChanged (s); /* EMIT SIGNAL */
}
} // namespace Evoral