Add Lua binding to un/assign VCAs
authorRobin Gareus <robin@gareus.org>
Fri, 18 Aug 2017 20:00:24 +0000 (22:00 +0200)
committerRobin Gareus <robin@gareus.org>
Fri, 18 Aug 2017 20:00:24 +0000 (22:00 +0200)
libs/ardour/ardour/vca_manager.h
libs/ardour/luabindings.cc
libs/ardour/vca_manager.cc

index 356ed63292350aab084ebac685ce7ef9127c3d04..2270a77e9497b1ceb1c27e7561def46866192392 100644 (file)
@@ -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(); }
index 04275991b718cdbef020d69f68e985738c4edda0..01aca8901556b49f93866d5eed2e44bae46d1cce 100644 (file)
@@ -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()
index f8b566ecaf32c0bac6d777b96206c7c52394f319..62589c8fdfa44371f8dc354e34fe1208694df28e 100644 (file)
@@ -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 ()
 {