summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_track.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-08-01 20:50:09 +0000
committerDavid Robillard <d@drobilla.net>2007-08-01 20:50:09 +0000
commitd7db3f757fde92126ef9886370ce604992b7e974 (patch)
tree4ac58366ad0a9980756c23ef58e413ce54bf395f /libs/ardour/midi_track.cc
parent3f421ac45025a856f03b779363f8f5f60b837b1e (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.cc13
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);