summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-08-18 22:00:24 +0200
committerRobin Gareus <robin@gareus.org>2017-08-18 22:00:24 +0200
commitbe6abce398a82e2387aa6423993f039db6d2b9bf (patch)
tree8c7efa78a0265b3e67fe004fac220cf45004ec26 /libs
parent08c1300718157d08aed265c11c21d22719008aa2 (diff)
Add Lua binding to un/assign VCAs
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/vca_manager.h1
-rw-r--r--libs/ardour/luabindings.cc9
-rw-r--r--libs/ardour/vca_manager.cc14
3 files changed, 24 insertions, 0 deletions
diff --git a/libs/ardour/ardour/vca_manager.h b/libs/ardour/ardour/vca_manager.h
index 356ed63292..2270a77e94 100644
--- a/libs/ardour/ardour/vca_manager.h
+++ b/libs/ardour/ardour/vca_manager.h
@@ -48,6 +48,7 @@ public:
void remove_vca (boost::shared_ptr<VCA>);
boost::shared_ptr<VCA> vca_by_number(int32_t) const;
+ boost::shared_ptr<VCA> vca_by_name (std::string const&) const;
VCAList vcas() const;
VCAList::size_type n_vcas() const { return _vcas.size(); }
diff --git a/libs/ardour/luabindings.cc b/libs/ardour/luabindings.cc
index 04275991b7..01aca89015 100644
--- a/libs/ardour/luabindings.cc
+++ b/libs/ardour/luabindings.cc
@@ -196,6 +196,7 @@ CLASSKEYS(ARDOUR::PresentationInfo);
CLASSKEYS(ARDOUR::RCConfiguration);
CLASSKEYS(ARDOUR::Session);
CLASSKEYS(ARDOUR::SessionConfiguration);
+CLASSKEYS(ARDOUR::Slavable);
CLASSKEYS(ARDOUR::Source);
CLASSKEYS(ARDOUR::VCA);
CLASSKEYS(ARDOUR::VCAManager);
@@ -958,6 +959,11 @@ LuaBindings::common (lua_State* L)
.addConst ("max_order", ARDOUR::PresentationInfo::max_order)
.endClass ()
+ .beginWSPtrClass <Slavable> ("Slavable")
+ .addFunction ("assign", &Slavable::assign)
+ .addFunction ("unassign", &Slavable::unassign)
+ .endClass ()
+
.deriveWSPtrClass <Stripable, SessionObject> ("Stripable")
.addCast<Route> ("to_route")
.addCast<VCA> ("to_vca")
@@ -1019,6 +1025,7 @@ LuaBindings::common (lua_State* L)
.deriveWSPtrClass <Route, Stripable> ("Route")
.addCast<Track> ("to_track")
.addCast<Automatable> ("to_automatable")
+ .addCast<Slavable> ("to_slavable")
.addFunction ("set_name", &Route::set_name)
.addFunction ("comment", &Route::comment)
.addFunction ("active", &Route::active)
@@ -1250,6 +1257,7 @@ LuaBindings::common (lua_State* L)
.endClass ()
.deriveWSPtrClass <Automatable, Evoral::ControlSet> ("Automatable")
+ .addCast<Slavable> ("to_slavable")
.addFunction ("automation_control", (boost::shared_ptr<AutomationControl>(Automatable::*)(const Evoral::Parameter&, bool))&Automatable::automation_control)
//.addFunction ("what_can_be_automated", &Automatable::what_can_be_automated)
.endClass ()
@@ -2028,6 +2036,7 @@ LuaBindings::common (lua_State* L)
.addFunction ("create_vca", &VCAManager::create_vca)
.addFunction ("remove_vca", &VCAManager::remove_vca)
.addFunction ("vca_by_number", &VCAManager::vca_by_number)
+ .addFunction ("vca_by_name", &VCAManager::vca_by_name)
.addFunction ("vcas", &VCAManager::vcas)
.addFunction ("n_vcas", &VCAManager::n_vcas)
.endClass()
diff --git a/libs/ardour/vca_manager.cc b/libs/ardour/vca_manager.cc
index f8b566ecaf..62589c8fdf 100644
--- a/libs/ardour/vca_manager.cc
+++ b/libs/ardour/vca_manager.cc
@@ -152,6 +152,20 @@ VCAManager::vca_by_number (int32_t n) const
return boost::shared_ptr<VCA>();
}
+boost::shared_ptr<VCA>
+VCAManager::vca_by_name (std::string const& name) const
+{
+ Mutex::Lock lm (lock);
+
+ for (VCAList::const_iterator i = _vcas.begin(); i != _vcas.end(); ++i) {
+ if ((*i)->name() == name || (*i)->full_name() == name) {
+ return *i;
+ }
+ }
+
+ return boost::shared_ptr<VCA>();
+}
+
XMLNode&
VCAManager::get_state ()
{