mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-08 07:45:00 +01:00
Fix controller iteration / linear interpolation.
Add unit test for controller iteration / linear interpolation. git-svn-id: svn://localhost/ardour2/branches/3.0@5886 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
653a487bbd
commit
82a0c02af1
4 changed files with 92 additions and 6 deletions
|
|
@ -97,7 +97,7 @@ Sequence<Time>::const_iterator::const_iterator(const Sequence<Time>& seq, Time t
|
|||
for (Controls::const_iterator i = seq._controls.begin(); i != seq._controls.end(); ++i) {
|
||||
DUMP(format("Iterator: control: %1%\n") % seq._type_map.to_symbol(i->first));
|
||||
double x, y;
|
||||
bool ret = i->second->list()->rt_safe_earliest_event_unlocked(t, DBL_MAX, x, y);
|
||||
bool ret = i->second->list()->rt_safe_earliest_event_unlocked(t, DBL_MAX, x, y, true);
|
||||
if (!ret) {
|
||||
DUMP(format("Iterator: CC %1% (size %2%) has no events past %3%\n")
|
||||
% i->first.id() % i->second->list()->size() % t);
|
||||
|
|
@ -128,6 +128,7 @@ Sequence<Time>::const_iterator::const_iterator(const Sequence<Time>& seq, Time t
|
|||
|
||||
if (found) {
|
||||
_control_iter = _control_iters.begin() + earliest_control_index;
|
||||
assert(_control_iter != _control_iters.end());
|
||||
} else {
|
||||
_control_iter = _control_iters.end();
|
||||
}
|
||||
|
|
@ -140,14 +141,15 @@ Sequence<Time>::const_iterator::const_iterator(const Sequence<Time>& seq, Time t
|
|||
earliest_t = (*_note_iter)->time();
|
||||
}
|
||||
|
||||
if (_sysex_iter != seq.sysexes().end() && (*_sysex_iter)->time() < earliest_t) {
|
||||
if (_sysex_iter != seq.sysexes().end()
|
||||
&& ((*_sysex_iter)->time() < earliest_t || _type == NIL)) {
|
||||
_type = SYSEX;
|
||||
earliest_t = (*_sysex_iter)->time();
|
||||
}
|
||||
|
||||
if (_control_iter != _control_iters.end()
|
||||
&& earliest_control.list && earliest_control.x >= t
|
||||
&& earliest_control.x < earliest_t) {
|
||||
&& (earliest_control.x < earliest_t || _type == NIL)) {
|
||||
_type = CONTROL;
|
||||
earliest_t = earliest_control.x;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue