summaryrefslogtreecommitdiff
path: root/libs/midi++2/midi++/event.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/midi++2/midi++/event.h')
-rw-r--r--libs/midi++2/midi++/event.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/libs/midi++2/midi++/event.h b/libs/midi++2/midi++/event.h
index 89f7dd4c07..123ff8f7fc 100644
--- a/libs/midi++2/midi++/event.h
+++ b/libs/midi++2/midi++/event.h
@@ -24,6 +24,7 @@
#include <stdint.h>
#include <cstdlib>
#include <cstring>
+#include <sstream>
#include <assert.h>
#include <midi++/types.h>
@@ -93,8 +94,9 @@ struct Event {
_time = copy._time;
if (_owns_buffer) {
if (copy._buffer) {
- if (copy._size > _size)
+ if (copy._size > _size) {
_buffer = (uint8_t*)::realloc(_buffer, copy._size);
+ }
memcpy(_buffer, copy._buffer, copy._size);
} else {
free(_buffer);
@@ -216,6 +218,15 @@ struct Event {
inline bool is_sysex() const { return _buffer[0] == 0xF0 || _buffer[0] == 0xF7; }
inline const uint8_t* buffer() const { return _buffer; }
inline uint8_t*& buffer() { return _buffer; }
+ inline std::string to_string() const {
+ std::ostringstream result(std::ios::ate);
+ result << "MIDI::Event type:" << std::hex << "0x" << int(type()) << " buffer: ";
+
+ for(uint32_t i = 0; i < size(); ++i) {
+ result << " 0x" << int(_buffer[i]);
+ }
+ return result.str();
+ }
private:
double _time; /**< Sample index (or beat time) at which event is valid */