diff options
author | David Robillard <d@drobilla.net> | 2008-05-02 21:34:00 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2008-05-02 21:34:00 +0000 |
commit | fb1fbf71af452ecff0a257bda228d1b31912c8ee (patch) | |
tree | 6d926ea7578bc751675556c17693e2525bdab01f /libs/ardour/midi_model.cc | |
parent | ab2af5d185d0346ab1ef4e6f3e69138f3f708958 (diff) |
Fix range problems for pitch wheel controller.
git-svn-id: svn://localhost/ardour2/branches/3.0@3308 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/midi_model.cc')
-rw-r--r-- | libs/ardour/midi_model.cc | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/libs/ardour/midi_model.cc b/libs/ardour/midi_model.cc index a05bc7278a..cda36ad50a 100644 --- a/libs/ardour/midi_model.cc +++ b/libs/ardour/midi_model.cc @@ -109,8 +109,8 @@ MidiModel::const_iterator::const_iterator(const MidiModel& model, double t) } assert(x >= 0); - assert(y >= 0); - assert(y <= UINT8_MAX); + assert(y >= i->first.min()); + assert(y <= i->first.max()); const MidiControlIterator new_iter(i->second->list(), x, y); @@ -202,7 +202,7 @@ MidiModel::const_iterator::operator++() for (std::vector<MidiControlIterator>::iterator i = _control_iters.begin(); i != _control_iters.end(); ++i) { - if (i->x < _control_iter->x && i != old_control_iter) { + if (i->x < _control_iter->x) { _control_iter = i; } } @@ -227,7 +227,9 @@ MidiModel::const_iterator::operator++() } // Use the next earliest controller iff it's earlier than the note event - if (_control_iter != _control_iters.end() && _control_iter->x != DBL_MAX) + if (_control_iter != _control_iters.end() + && _control_iter->x != DBL_MAX + && _control_iter != old_control_iter) if (type == NIL || _control_iter->x < t) type = AUTOMATION; @@ -386,7 +388,7 @@ MidiModel::control_to_midi_event(MIDI::Event& ev, const MidiControlIterator& ite assert(iter.automation_list); assert(iter.automation_list->parameter().channel() < 16); assert(iter.automation_list->parameter().id() <= INT8_MAX); - assert(iter.y <= INT8_MAX); + assert(iter.y < (1<<14)); ev.buffer()[0] = MIDI_CMD_BENDER + iter.automation_list->parameter().channel(); ev.buffer()[1] = ((Byte)iter.y) & 0x7F; // LSB ev.buffer()[2] = (((Byte)iter.y) >> 7) & 0x7F; // MSB |