From 266ecfbeec7088de6994a151630d788fe0613064 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 7 Jul 2016 16:44:41 +0200 Subject: implement designated enable/bypass port for lua-proc --- libs/ardour/ardour/luaproc.h | 5 +++++ libs/ardour/luaproc.cc | 6 ++++++ 2 files changed, 11 insertions(+) (limited to 'libs') diff --git a/libs/ardour/ardour/luaproc.h b/libs/ardour/ardour/luaproc.h index 39afb72c96..bd77efaff9 100644 --- a/libs/ardour/ardour/luaproc.h +++ b/libs/ardour/ardour/luaproc.h @@ -89,6 +89,10 @@ public: bool parameter_is_input (uint32_t) const; bool parameter_is_output (uint32_t) const; + uint32_t designated_bypass_port () { + return _designated_bypass_port; + } + std::string state_node_name() const { return "luaproc"; } void add_state (XMLNode *) const; int set_state (const XMLNode&, int version); @@ -145,6 +149,7 @@ private: std::vector > _ctrl_params; std::map _param_desc; std::map _param_doc; + uint32_t _designated_bypass_port; float* _control_data; float* _shadow_data; diff --git a/libs/ardour/luaproc.cc b/libs/ardour/luaproc.cc index 26442aa32e..75d957779d 100644 --- a/libs/ardour/luaproc.cc +++ b/libs/ardour/luaproc.cc @@ -52,6 +52,7 @@ LuaProc::LuaProc (AudioEngine& engine, , _script (script) , _lua_does_channelmapping (false) , _lua_has_inline_display (false) + , _designated_bypass_port (UINT32_MAX) , _control_data (0) , _shadow_data (0) , _has_midi_input (false) @@ -75,6 +76,7 @@ LuaProc::LuaProc (const LuaProc &other) , _script (other.script ()) , _lua_does_channelmapping (false) , _lua_has_inline_display (false) + , _designated_bypass_port (UINT32_MAX) , _control_data (0) , _shadow_data (0) , _has_midi_input (false) @@ -286,6 +288,10 @@ LuaProc::load_script () _param_desc[pn].sr_dependent = lr["ratemult"].isBoolean () && (lr["ratemult"]).cast (); _param_desc[pn].enumeration = lr["enum"].isBoolean () && (lr["enum"]).cast (); + if (lr["bypass"].isBoolean () && (lr["bypass"]).cast ()) { + _designated_bypass_port = pn - 1; // lua table starts at 1. + } + if (lr["unit"].isString ()) { std::string unit = lr["unit"].cast (); if (unit == "dB") { _param_desc[pn].unit = ParameterDescriptor::DB; } -- cgit v1.2.3