diff options
Diffstat (limited to 'gtk2_ardour/midi_streamview.cc')
-rw-r--r-- | gtk2_ardour/midi_streamview.cc | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/gtk2_ardour/midi_streamview.cc b/gtk2_ardour/midi_streamview.cc index 862e554cae..30700c8e94 100644 --- a/gtk2_ardour/midi_streamview.cc +++ b/gtk2_ardour/midi_streamview.cc @@ -54,8 +54,8 @@ using namespace Editing; MidiStreamView::MidiStreamView (MidiTimeAxisView& tv) : StreamView (tv) - , _lowest_note(0) - , _highest_note(127) + , _lowest_note(60) + , _highest_note(60) { if (tv.is_track()) stream_base_color = ARDOUR_UI::config()->canvasvar_MidiTrackBase.get(); @@ -137,17 +137,13 @@ MidiStreamView::display_region(MidiRegionView* region_view, bool redisplay_event boost::shared_ptr<MidiSource> source(region_view->midi_region()->midi_source(0)); - for (size_t i=0; i < source->model()->n_events(); ++i) { - const MidiEvent& ev = source->model()->event_at(i); + for (size_t i=0; i < source->model()->n_notes(); ++i) { + const MidiModel::Note& note = source->model()->note_at(i); - // Look at all note on events to find our note range - if ((ev.buffer[0] & 0xF0) == MIDI_CMD_NOTE_ON) { - _lowest_note = min(_lowest_note, ev.buffer[1]); - _highest_note = max(_highest_note, ev.buffer[1]); - } + update_bounds(note.note); if (redisplay_events) - region_view->add_event(ev); + region_view->add_note(note); } if (redisplay_events) @@ -164,8 +160,8 @@ MidiStreamView::redisplay_diskstream () (*i)->set_valid (false); } - _lowest_note = 60; // middle C - _highest_note = _lowest_note + 11; + //_lowest_note = 60; // middle C + //_highest_note = _lowest_note + 11; if (_trackview.is_midi_track()) { _trackview.get_diskstream()->playlist()->foreach_region (static_cast<StreamView*>(this), &StreamView::add_region_view); @@ -191,6 +187,13 @@ MidiStreamView::redisplay_diskstream () region_layered (*i); } } + +void +MidiStreamView::update_bounds(uint8_t note_num) +{ + _lowest_note = min(_lowest_note, note_num); + _highest_note = max(_highest_note, note_num); +} void |