summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorNil Geisweiller <ngeiswei@gmail.com>2020-03-26 23:28:28 +0200
committerNil Geisweiller <ngeiswei@gmail.com>2020-04-25 09:40:56 +0300
commit95b00315c0cd88b3ecbbaf30cc20ce0df9b7b55c (patch)
tree4793e8256aa164e4fb8f8ba21fd86e648a5eac8b /gtk2_ardour
parent6c9b03e2a301ae9ed796c8b52b4cd8299dcb2fd6 (diff)
Fix midi editor to only display notes within temporal visible region
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/midi_list_editor.cc8
1 files 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<MidiModel> 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;