Fix problem with notes occasionally not showing up at all.
authorDavid Robillard <d@drobilla.net>
Tue, 15 Jan 2008 03:32:51 +0000 (03:32 +0000)
committerDavid Robillard <d@drobilla.net>
Tue, 15 Jan 2008 03:32:51 +0000 (03:32 +0000)
git-svn-id: svn://localhost/ardour2/trunk@2919 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/midi_region_view.cc
gtk2_ardour/midi_time_axis.cc
libs/ardour/midi_track.cc

index 177adbf38bed438b72de669a7a3529aa9805a808..a16da1448fd71c14b82ae0d8b6bce5043f7faafe 100644 (file)
@@ -603,6 +603,7 @@ MidiRegionView::add_note(const boost::shared_ptr<Note> note)
 {
        assert(note->time() >= 0);
        //assert(note->time() < _region->length());
+       assert(midi_view()->note_mode() == Sustained || midi_view()->note_mode() == Percussive);
 
        ArdourCanvas::Group* const group = (ArdourCanvas::Group*)get_canvas_group();
        
@@ -639,7 +640,8 @@ MidiRegionView::add_note(const boost::shared_ptr<Note> note)
 
        } else if (midi_view()->note_mode() == Percussive) {
                
-               //cerr << "MRV::add_note percussive " << note->note() << " @ " << note->time() << endl;
+               //cerr << "MRV::add_note percussive " << note->note() << " @ " << note->time()
+               //      << " .. " << note->end_time() << endl;
                
                const double diamond_size = midi_stream_view()->note_height() / 2.0;
                const double x = trackview.editor.frame_to_pixel((nframes_t)note->time());
@@ -651,6 +653,7 @@ MidiRegionView::add_note(const boost::shared_ptr<Note> note)
                ev_diamond->property_fill_color_rgba() = note_fill_color(note->velocity());
                ev_diamond->property_outline_color_rgba() = note_outline_color(note->velocity());
                _events.push_back(ev_diamond);
+       
        }
 }
 
index 343e8692923fa495afa0f2afd7065fcf106c6051..534305eaa6800a25224e565aa214760f6dfd8645 100644 (file)
@@ -230,7 +230,7 @@ MidiTimeAxisView::build_mode_menu()
 void
 MidiTimeAxisView::set_note_mode(NoteMode mode)
 {
-       if (_note_mode != mode) {
+       if (_note_mode != mode || midi_track()->note_mode() != mode) {
                _note_mode = mode;
                midi_track()->set_note_mode(mode);
                _view->redisplay_diskstream();
index 7307ff220dad44aa6a589fc88a3e8aa02c50f016..8e41df84ef4c4ed3e6ef7651c2b17f756d8f2923 100644 (file)
@@ -47,6 +47,7 @@ using namespace PBD;
 MidiTrack::MidiTrack (Session& sess, string name, Route::Flag flag, TrackMode mode)
        : Track (sess, name, flag, mode, DataType::MIDI)
        , _immediate_events(1024) // FIXME: size?
+       , _note_mode(Sustained)
 {
        MidiDiskstream::Flag dflags = MidiDiskstream::Flag (0);