diff options
Diffstat (limited to 'libs/ardour/ardour/midi_ring_buffer.h')
-rw-r--r-- | libs/ardour/ardour/midi_ring_buffer.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/libs/ardour/ardour/midi_ring_buffer.h b/libs/ardour/ardour/midi_ring_buffer.h index 567f375bc3..14934456e1 100644 --- a/libs/ardour/ardour/midi_ring_buffer.h +++ b/libs/ardour/ardour/midi_ring_buffer.h @@ -21,9 +21,12 @@ #include <iostream> #include <algorithm> + +#include "evoral/EventRingBuffer.hpp" + #include "ardour/types.h" #include "ardour/buffer.h" -#include "evoral/EventRingBuffer.hpp" +#include "ardour/midi_state_tracker.h" namespace ARDOUR { @@ -80,8 +83,19 @@ protected: return (0x80 <= event_type_byte) && (event_type_byte <= 0xE0); } + inline bool is_note_on(uint8_t event_type_byte) { + // mask out channel information + return (event_type_byte & 0xF0) == MIDI_CMD_NOTE_ON; + } + + inline bool is_note_off(uint8_t event_type_byte) { + // mask out channel information + return (event_type_byte & 0xF0) == MIDI_CMD_NOTE_OFF; + } + private: volatile uint32_t _channel_mask; // 16 bits mode, 16 bits mask + MidiStateTracker _tracker; }; |