summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-07-11 03:04:29 +0200
committerRobin Gareus <robin@gareus.org>2016-07-11 03:04:29 +0200
commita1bff57695c6063648e6cd650741db7a40726d8a (patch)
tree8a1fd685219ff51796c49ad14842945d25a1ecd6
parentb8a7ee001b3e1e19012e8713d2e1424e4c8820a6 (diff)
lua MidiBuffer bindings
-rw-r--r--libs/ardour/ardour/midi_buffer.h1
-rw-r--r--libs/ardour/luabindings.cc4
-rw-r--r--libs/ardour/midi_buffer.cc8
3 files changed, 13 insertions, 0 deletions
diff --git a/libs/ardour/ardour/midi_buffer.h b/libs/ardour/ardour/midi_buffer.h
index 8593a4ebb2..2a472e1783 100644
--- a/libs/ardour/ardour/midi_buffer.h
+++ b/libs/ardour/ardour/midi_buffer.h
@@ -45,6 +45,7 @@ public:
void merge_from (const Buffer& src, framecnt_t nframes, framecnt_t dst_offset = 0, framecnt_t src_offset = 0);
void copy(const MidiBuffer& copy);
+ void copy(MidiBuffer const * const);
bool push_back(const Evoral::MIDIEvent<TimeType>& event);
bool push_back(TimeType time, size_t size, const uint8_t* data);
diff --git a/libs/ardour/luabindings.cc b/libs/ardour/luabindings.cc
index 89d132015c..de46eb607b 100644
--- a/libs/ardour/luabindings.cc
+++ b/libs/ardour/luabindings.cc
@@ -1278,6 +1278,10 @@ LuaBindings::dsp (lua_State* L)
.beginClass <MidiBuffer> ("MidiBuffer")
.addEqualCheck ()
.addFunction ("silence", &MidiBuffer::silence)
+ .addFunction ("size", &MidiBuffer::size)
+ .addFunction ("empty", &MidiBuffer::empty)
+ .addFunction ("resize", &MidiBuffer::resize)
+ .addFunction ("copy", (void (MidiBuffer::*)(MidiBuffer const * const))&MidiBuffer::copy)
.addFunction ("push_event", (bool (MidiBuffer::*)(const Evoral::MIDIEvent<framepos_t>&))&MidiBuffer::push_back)
.addFunction ("push_back", (bool (MidiBuffer::*)(framepos_t, size_t, const uint8_t*))&MidiBuffer::push_back)
// TODO iterators..
diff --git a/libs/ardour/midi_buffer.cc b/libs/ardour/midi_buffer.cc
index 3a03a03f9e..41d638dc78 100644
--- a/libs/ardour/midi_buffer.cc
+++ b/libs/ardour/midi_buffer.cc
@@ -80,6 +80,14 @@ MidiBuffer::copy(const MidiBuffer& copy)
memcpy(_data, copy._data, copy._size);
}
+void
+MidiBuffer::copy(MidiBuffer const * const copy)
+{
+ assert(_capacity >= copy->size ());
+ _size = copy->size ();
+ memcpy(_data, copy->data(), _size);
+}
+
/** Read events from @a src starting at time @a offset into the START of this buffer, for
* time duration @a nframes. Relative time, where 0 = start of buffer.