diff options
author | David Robillard <d@drobilla.net> | 2007-08-01 20:50:09 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-08-01 20:50:09 +0000 |
commit | d7db3f757fde92126ef9886370ce604992b7e974 (patch) | |
tree | 4ac58366ad0a9980756c23ef58e413ce54bf395f /libs/ardour/midi_track.cc | |
parent | 3f421ac45025a856f03b779363f8f5f60b837b1e (diff) |
Better MidiModel command framework, ready to go for all your canvas editing needs.
Rewrote MidiEvent to be a well-behaved self-contained object that optionally owns it's buffer, has proper copying semantics, etc.
Fixed crazy bugs triggered by adding lots of events with varying times to a region.
Speed up initial session display significantly (don't redraw each MIDI region tons of times, though still happens more than once and can use fixing...).
git-svn-id: svn://localhost/ardour2/trunk@2213 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/midi_track.cc')
-rw-r--r-- | libs/ardour/midi_track.cc | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index 55d195fab0..ae1c8f1a07 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -584,11 +584,10 @@ MidiTrack::write_controller_messages(MidiBuffer& output_buf, nframes_t start_fra // Write immediate events (UI controls) MidiBuffer& cc_buf = mix_buffers.get_midi(0); cc_buf.silence(nframes, offset); - MidiEvent ev; - ev.size = 3; // CC = 3 bytes - Byte buf[ev.size]; + + Byte buf[3]; // CC = 3 bytes buf[0] = MIDI_CMD_CONTROL; - ev.buffer = buf; + MidiEvent ev(false, 0, 3, buf); // Write controller automation if (_session.transport_rolling()) { @@ -611,9 +610,9 @@ MidiTrack::write_controller_messages(MidiBuffer& output_buf, nframes_t start_fra assert(y >= 0.0); assert(y <= 127.0); - ev.time = stamp; - ev.buffer[1] = (Byte)list->parameter().id(); - ev.buffer[2] = (Byte)y; + ev.time() = stamp; + ev.buffer()[1] = (Byte)list->parameter().id(); + ev.buffer()[2] = (Byte)y; cc_buf.push_back(ev); |