diff options
author | David Robillard <d@drobilla.net> | 2007-07-15 01:56:11 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-07-15 01:56:11 +0000 |
commit | 332a3d98138e94903ad9c6d35048b0201ff178c8 (patch) | |
tree | 107ac2a68b8c461a534e82d41e47fedfc5ed9178 /gtk2_ardour/midi_streamview.cc | |
parent | 74eded425a5244831c80968c1781c3f81f90e996 (diff) |
Selection of visible note range (full range vs fit contents, selectable from midi track menu).
Added note pencil tool, mock note adding (notes can be added visually but don't yet play).
Reworked MidiModel to be notes w/ duration instead of realtime style MIDI events.
Moved layering (stacked/overlaid) from auto time axis down to route time axis since it applies
to MIDI tracks as well.
git-svn-id: svn://localhost/ardour2/trunk@2128 d708f5d6-7413-0410-9779-e7cbd77b26cf
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 |