X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fmidi_ring_buffer.h;h=652f1c49cfa22a89d6a53166cd64090071ad7df6;hb=f485cfa324717f57b9f820f43f1b53307b96a8b9;hp=78d14b91851d810ffa365e192ca80ed84e073d2c;hpb=10a4b2d3eda15101d527249ad799c93bb1097d52;p=ardour.git diff --git a/libs/ardour/ardour/midi_ring_buffer.h b/libs/ardour/ardour/midi_ring_buffer.h index 78d14b9185..652f1c49cf 100644 --- a/libs/ardour/ardour/midi_ring_buffer.h +++ b/libs/ardour/ardour/midi_ring_buffer.h @@ -22,8 +22,7 @@ #include #include -#include "evoral/EventRingBuffer.hpp" - +#include "ardour/event_ring_buffer.h" #include "ardour/libardour_visibility.h" #include "ardour/types.h" #include "ardour/midi_state_tracker.h" @@ -41,41 +40,23 @@ class MidiBuffer; * [timestamp][type][size][size bytes of raw MIDI][timestamp][type][size](etc...) */ template -class /*LIBARDOUR_API*/ MidiRingBuffer : public Evoral::EventRingBuffer { +class /*LIBARDOUR_API*/ MidiRingBuffer : public EventRingBuffer { public: - /** @param size Size in bytes. - */ - MidiRingBuffer(size_t size) - : Evoral::EventRingBuffer(size) {} + /** @param size Size in bytes. */ + MidiRingBuffer(size_t size) : EventRingBuffer(size) {} inline bool read_prefix(T* time, Evoral::EventType* type, uint32_t* size); inline bool read_contents(uint32_t size, uint8_t* buf); size_t read(MidiBuffer& dst, framepos_t start, framepos_t end, framecnt_t offset=0, bool stop_on_overflow_in_destination=false); + size_t skip_to(framepos_t start); void dump(std::ostream& dst); void flush (framepos_t start, framepos_t end); void reset_tracker (); - void loop_resolve (MidiBuffer& dst, framepos_t); - -protected: - inline bool is_channel_event(uint8_t event_type_byte) { - // mask out channel information - event_type_byte &= 0xF0; - // midi channel events range from 0x80 to 0xE0 - 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; - } + void resolve_tracker (MidiBuffer& dst, framepos_t); + void resolve_tracker (Evoral::EventSink& dst, framepos_t); private: MidiStateTracker _tracker;