-
- // write MIDI buffer contents
- success = Evoral::EventRingBuffer<T>::full_read(ev_size, write_loc);
-
- cerr << "wrote MidiEvent to Buffer: ";
- for (size_t i=0; i < ev_size; ++i) {
- printf("%X ", write_loc[i]);
+
+ ev_size = *(reinterpret_cast<uint32_t*>((uintptr_t)(peekbuf + sizeof(T) + sizeof (Evoral::EventType))));
+ this->increment_read_ptr (prefix_size);
+ this->increment_read_ptr (ev_size);
+ }
+}
+
+template<typename T>
+void
+MidiRingBuffer<T>::dump(ostream& str)
+{
+ size_t rspace;
+
+ if ((rspace = this->read_space()) == 0) {
+ str << "MRB::dump: empty\n";
+ return;
+ }
+
+ T ev_time;
+ Evoral::EventType ev_type;
+ uint32_t ev_size;
+
+ RingBufferNPT<uint8_t>::rw_vector vec;
+ RingBufferNPT<uint8_t>::get_read_vector (&vec);
+
+ if (vec.len[0] == 0) {
+ return;
+ }
+
+ str << this << ": Dump size = " << vec.len[0] + vec.len[1]
+ << " r@ " << RingBufferNPT<uint8_t>::get_read_ptr()
+ << " w@" << RingBufferNPT<uint8_t>::get_write_ptr() << endl;
+
+
+ uint8_t *buf = new uint8_t[vec.len[0] + vec.len[1]];
+ memcpy (buf, vec.buf[0], vec.len[0]);
+
+ if (vec.len[1]) {
+ memcpy (buf+vec.len[1], vec.buf[1], vec.len[1]);
+ }
+
+ uint8_t* data = buf;
+ const uint8_t* end = buf + vec.len[0] + vec.len[1];
+
+ while (data < end) {
+
+ memcpy (&ev_time, data, sizeof (T));
+ data += sizeof (T);
+ str << "\ttime " << ev_time;
+
+ if (data >= end) {
+ str << "(incomplete)\n ";
+ break;