23 #ifndef __ardour_rt_midi_buffer_h__
24 #define __ardour_rt_midi_buffer_h__
28 #include <glibmm/threads.h>
39 class MidiNoteTracker;
40 class MidiStateTracker;
59 size_t size()
const {
return _size; }
60 bool empty()
const {
return _size == 0; }
82 throw std::exception ();
87 uint8_t
const *
bytes (
Item const & item, uint32_t& size) {
90 return &item.
bytes[1];
92 uint32_t offset = item.
offset & ~(1<<(CHAR_BIT-1));
93 Blob* blob =
reinterpret_cast<Blob*
> (&_pool[offset]);
104 for (
size_t n = 0; n < _size; ++n) {
105 _data[n].timestamp += distance;
137 Glib::Threads::RWLock::WriterLock
lm;
WriteProtectRender(RTMidiBuffer &rtm)
Glib::Threads::RWLock::WriterLock lm
uint32_t read(MidiBuffer &dst, samplepos_t start, samplepos_t end, MidiNoteTracker &tracker, samplecnt_t offset=0)
uint8_t const * bytes(Item const &item, uint32_t &size)
uint32_t store_blob(uint32_t size, uint8_t const *data)
void track(MidiStateTracker &, samplepos_t start, samplepos_t end)
Glib::Threads::RWLock _lock
uint32_t alloc_blob(uint32_t size)
Item const & operator[](size_t n) const
uint32_t write(TimeType time, Evoral::EventType type, uint32_t size, const uint8_t *buf)
void shift(sampleoffset_t distance)
PBD::PropertyDescriptor< timepos_t > start
Temporal::samplecnt_t samplecnt_t
Temporal::sampleoffset_t sampleoffset_t
Temporal::samplepos_t samplepos_t
static int midi_event_size(uint8_t status)