void silence (nframes_t nframes, nframes_t offset = 0);
void read_from (const Buffer& src, nframes_t nframes, nframes_t dst_offset = 0, nframes_t src_offset = 0);
+ void merge_from (const Buffer& src, nframes_t nframes, nframes_t dst_offset = 0, nframes_t src_offset = 0);
void copy(const MidiBuffer& copy);
bool push_back(const Evoral::MIDIEvent<TimeType>& event);
bool push_back(const jack_midi_event_t& event);
+ bool push_back(TimeType time, size_t size, const uint8_t* data);
uint8_t* reserve(TimeType time, size_t size);
void resize(size_t);
*((TimeType*)(buffer._data + offset)),
event_size, ev_start);
}
+ inline EventType operator*() {
+ uint8_t* ev_start = buffer._data + offset + sizeof(TimeType);
+ int event_size = Evoral::midi_event_size(ev_start);
+ assert(event_size >= 0);
+ return EventType(EventTypeMap::instance().midi_event_type(*ev_start),
+ *((TimeType*)(buffer._data + offset)),
+ event_size, ev_start);
+ }
+
inline iterator_base<BufferType, EventType>& operator++() {
uint8_t* ev_start = buffer._data + offset + sizeof(TimeType);
int event_size = Evoral::midi_event_size(ev_start);
friend class iterator_base< MidiBuffer, Evoral::MIDIEvent<TimeType> >;
friend class iterator_base< const MidiBuffer, const Evoral::MIDIEvent<TimeType> >;
- size_t _size; ///< Size in bytes of used portion of _data
uint8_t* _data; ///< timestamp, event, timestamp, event, ...
};