From 95b00315c0cd88b3ecbbaf30cc20ce0df9b7b55c Mon Sep 17 00:00:00 2001 From: Nil Geisweiller Date: Thu, 26 Mar 2020 23:28:28 +0200 Subject: Fix midi editor to only display notes within temporal visible region --- gtk2_ardour/midi_list_editor.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gtk2_ardour/midi_list_editor.cc b/gtk2_ardour/midi_list_editor.cc index bc17c7aee0..28c46dea7f 100644 --- a/gtk2_ardour/midi_list_editor.cc +++ b/gtk2_ardour/midi_list_editor.cc @@ -762,18 +762,20 @@ MidiListEditor::redisplay_model () if (_session) { BeatsSamplesConverter conv (_session->tempo_map(), region->position()); - MidiModel::Notes notes = region->midi_source(0)->model()->notes(); + boost::shared_ptr m (region->midi_source(0)->model()); TreeModel::Row row; stringstream ss; - for (MidiModel::Notes::iterator i = notes.begin(); i != notes.end(); ++i) { + MidiModel::Notes::const_iterator i = m->note_lower_bound(conv.from (region->start())); + Temporal::Beats end_time = conv.from (region->start()) + conv.from (region->length()); + for (; i != m->notes().end() && (*i)->time() < end_time; ++i) { row = *(model->append()); row[columns.channel] = (*i)->channel() + 1; row[columns.note_name] = ParameterDescriptor::midi_note_name ((*i)->note()); row[columns.note] = (*i)->note(); row[columns.velocity] = (*i)->velocity(); - Timecode::BBT_Time bbt (_session->tempo_map().bbt_at_sample (region->position() + conv.to ((*i)->time()))); + Timecode::BBT_Time bbt (_session->tempo_map().bbt_at_sample (region->position() - region->start() + conv.to ((*i)->time()))); ss.str (""); ss << bbt; -- cgit v1.2.3