summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/midi_state_tracker.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2014-11-30 18:33:22 -0500
committerDavid Robillard <d@drobilla.net>2014-11-30 23:56:19 -0500
commit008bfceb77298f21c592a3860d75d5cc4b315e4d (patch)
tree34e19194b2d450daa3b77aa0cf1c3062314bad0e /libs/ardour/ardour/midi_state_tracker.h
parent0f72ea4a349480cf1272571395f63c10b6152b4f (diff)
Clean up state tracking of raw MIDI.
Diffstat (limited to 'libs/ardour/ardour/midi_state_tracker.h')
-rw-r--r--libs/ardour/ardour/midi_state_tracker.h15
1 files changed, 2 insertions, 13 deletions
diff --git a/libs/ardour/ardour/midi_state_tracker.h b/libs/ardour/ardour/midi_state_tracker.h
index 1a3d480045..d8a31c10aa 100644
--- a/libs/ardour/ardour/midi_state_tracker.h
+++ b/libs/ardour/ardour/midi_state_tracker.h
@@ -39,6 +39,7 @@ public:
MidiStateTracker();
void track (const MidiBuffer::const_iterator& from, const MidiBuffer::const_iterator& to);
+ void track (const uint8_t* evbuf);
void add (uint8_t note, uint8_t chn);
void remove (uint8_t note, uint8_t chn);
void resolve_notes (MidiBuffer& buffer, framepos_t time);
@@ -54,19 +55,7 @@ public:
template<typename Time>
void track (const Evoral::Event<Time>& ev) {
- const uint8_t type = ev.buffer()[0] & 0xF0;
- const uint8_t chan = ev.buffer()[0] & 0x0F;
- switch (type) {
- case MIDI_CTL_ALL_NOTES_OFF:
- reset();
- break;
- case MIDI_CMD_NOTE_ON:
- add(ev.buffer()[1], chan);
- break;
- case MIDI_CMD_NOTE_OFF:
- remove(ev.buffer()[1], chan);
- break;
- }
+ track (ev.buffer());
}
private: