Fix vertical order of MIDI notes.
Extend current active notes to end of region while recording. Initialize note state correctly. git-svn-id: svn://localhost/ardour2/trunk@1945 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
@@ -122,7 +122,9 @@ MidiRegionView::add_ghost (AutomationTimeAxisView& atv)
|
||||
void
|
||||
MidiRegionView::begin_write()
|
||||
{
|
||||
_active_notes = new ArdourCanvas::SimpleRect*[127];
|
||||
_active_notes = new ArdourCanvas::SimpleRect*[128];
|
||||
for (unsigned i=0; i < 128; ++i)
|
||||
_active_notes[i] = NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -148,7 +150,7 @@ MidiRegionView::add_event (const MidiEvent& ev)
|
||||
double y1 = trackview.height / 2.0;
|
||||
if ((ev.buffer[0] & 0xF0) == MIDI_CMD_NOTE_ON) {
|
||||
const Byte& note = ev.buffer[1];
|
||||
y1 = (trackview.height / 127.0) * note;
|
||||
y1 = trackview.height - ((trackview.height / 127.0) * note);
|
||||
|
||||
ArdourCanvas::SimpleRect * ev_rect = new Gnome::Canvas::SimpleRect(
|
||||
*(ArdourCanvas::Group*)get_canvas_group());
|
||||
@@ -179,4 +181,18 @@ MidiRegionView::add_event (const MidiEvent& ev)
|
||||
}
|
||||
|
||||
|
||||
/** Extend active notes to rightmost edge of region (if length is changed)
|
||||
*/
|
||||
void
|
||||
MidiRegionView::extend_active_notes()
|
||||
{
|
||||
if (!_active_notes)
|
||||
return;
|
||||
|
||||
for (unsigned i=0; i < 128; ++i)
|
||||
if (_active_notes[i])
|
||||
_active_notes[i]->property_x2() = trackview.editor.frame_to_pixel(_region->length());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -66,6 +66,7 @@ class MidiRegionView : public RegionView
|
||||
|
||||
void begin_write();
|
||||
void end_write();
|
||||
void extend_active_notes();
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
@@ -356,6 +356,7 @@ MidiStreamView::update_rec_regions (boost::shared_ptr<MidiBuffer> data, nframes_
|
||||
for (size_t i = 0; i < data->size(); ++i) {
|
||||
const MidiEvent& ev = (*data.get())[i];
|
||||
mrv->add_event(ev);
|
||||
mrv->extend_active_notes();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ MidiModel::append(const MidiBuffer& buf)
|
||||
{
|
||||
for (size_t i=0; i < buf.size(); ++i) {
|
||||
const MidiEvent& buf_event = buf[i];
|
||||
assert(buf_event.time >= _events.back().time);
|
||||
assert(_events.empty() || buf_event.time >= _events.back().time);
|
||||
|
||||
_events.push_back(buf_event);
|
||||
MidiEvent& my_event = _events.back();
|
||||
|
||||
Reference in New Issue
Block a user