summaryrefslogtreecommitdiff
path: root/libs/ardour/luabindings.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-04-24 04:10:10 +0200
committerRobin Gareus <robin@gareus.org>2017-04-24 04:21:25 +0200
commit201fd55743367aca35561507fa3cc552037a6c58 (patch)
tree82273edbf3d43f233b13f4c56599654808160326 /libs/ardour/luabindings.cc
parentd837914e28c659bc190c7a96ae4ba250bfcd1c04 (diff)
Add ControlEvent Lua bindings and related methods to access MIDI-CC
Diffstat (limited to 'libs/ardour/luabindings.cc')
-rw-r--r--libs/ardour/luabindings.cc24
1 files changed, 22 insertions, 2 deletions
diff --git a/libs/ardour/luabindings.cc b/libs/ardour/luabindings.cc
index ac1f27f240..536c552bde 100644
--- a/libs/ardour/luabindings.cc
+++ b/libs/ardour/luabindings.cc
@@ -200,6 +200,7 @@ CLASSKEYS(PBD::StatefulDestructible);
CLASSKEYS(Evoral::Beats);
CLASSKEYS(Evoral::Event<framepos_t>);
+CLASSKEYS(Evoral::ControlEvent);
CLASSKEYS(std::vector<std::string>);
@@ -208,6 +209,8 @@ CLASSKEYS(std::vector<float*>);
CLASSKEYS(std::vector<double>);
CLASSKEYS(std::list<int64_t>);
+CLASSKEYS(std::list<Evoral::ControlEvent*>);
+
CLASSKEYS(std::vector<ARDOUR::Plugin::PresetRecord>);
CLASSKEYS(std::vector<boost::shared_ptr<ARDOUR::Processor> >);
CLASSKEYS(std::vector<boost::shared_ptr<ARDOUR::Source> >);
@@ -500,6 +503,11 @@ LuaBindings::common (lua_State* L)
.addFunction ("id", &Evoral::Parameter::id)
.endClass ()
+ .beginClass <Evoral::ControlEvent> ("ControlEvent")
+ .addData ("when", &Evoral::ControlEvent::when)
+ .addData ("value", &Evoral::ControlEvent::value)
+ .endClass ()
+
.beginWSPtrClass <Evoral::ControlList> ("ControlList")
.addFunction ("add", &Evoral::ControlList::add)
.addFunction ("thin", &Evoral::ControlList::thin)
@@ -510,7 +518,9 @@ LuaBindings::common (lua_State* L)
.addFunction ("truncate_end", &Evoral::ControlList::truncate_end)
.addFunction ("truncate_start", &Evoral::ControlList::truncate_start)
.addFunction ("clear", (void (Evoral::ControlList::*)(double, double))&Evoral::ControlList::clear)
+ .addFunction ("clear_list", (void (Evoral::ControlList::*)())&Evoral::ControlList::clear)
.addFunction ("in_write_pass", &Evoral::ControlList::in_write_pass)
+ .addFunction ("events", &Evoral::ControlList::events)
.endClass ()
.beginWSPtrClass <Evoral::ControlSet> ("ControlSet")
@@ -761,10 +771,10 @@ LuaBindings::common (lua_State* L)
.deriveClass <PBD::OwnedPropertyList, PBD::PropertyList> ("OwnedPropertyList")
.endClass ()
- .beginWSPtrClass <AutomationList> ("AutomationList")
+ .deriveWSPtrClass <AutomationList, Evoral::ControlList> ("AutomationList")
.addCast<PBD::Stateful> ("to_stateful")
.addCast<PBD::StatefulDestructible> ("to_statefuldestructible")
- .addCast<Evoral::ControlList> ("list")
+ .addCast<Evoral::ControlList> ("list") // deprecated
.addFunction ("get_state", &AutomationList::get_state)
.addFunction ("memento_command", &AutomationList::memento_command)
.addFunction ("touching", &AutomationList::touching)
@@ -1136,6 +1146,7 @@ LuaBindings::common (lua_State* L)
.addFunction ("set_video_locked", &Region::set_video_locked)
.addFunction ("set_position_locked", &Region::set_position_locked)
.addFunction ("source", &Region::source)
+ .addFunction ("control", static_cast<boost::shared_ptr<Evoral::Control>(Region::*)(const Evoral::Parameter&, bool)>(&Region::control))
.endClass ()
.deriveWSPtrClass <MidiRegion, Region> ("MidiRegion")
@@ -1498,6 +1509,9 @@ LuaBindings::common (lua_State* L)
.beginStdList <boost::shared_ptr<Evoral::Note<Evoral::Beats> > > ("NotePtrList")
.endClass ()
+ .beginConstStdList <Evoral::ControlEvent*> ("EventList")
+ .endClass ()
+
#if 0 // depends on Evoal:: Note, Beats see note_fixer.h
// typedef Evoral::Note<Evoral::Beats> Note;
// std::set< boost::weak_ptr<Note> >
@@ -1532,6 +1546,12 @@ LuaBindings::common (lua_State* L)
.addFunction ("from", &BeatsFramesConverter::from)
.endClass ()
+ .beginClass <DoubleBeatsFramesConverter> ("DoubleBeatsFramesConverter")
+ .addConstructor <void (*) (const TempoMap&, framepos_t)> ()
+ .addFunction ("to", &DoubleBeatsFramesConverter::to)
+ .addFunction ("from", &DoubleBeatsFramesConverter::from)
+ .endClass ()
+
.beginClass <TempoMap> ("TempoMap")
.addFunction ("add_tempo", &TempoMap::add_tempo)
.addFunction ("add_meter", &TempoMap::add_meter)