summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-07-07 16:44:41 +0200
committerRobin Gareus <robin@gareus.org>2016-07-07 16:44:41 +0200
commit266ecfbeec7088de6994a151630d788fe0613064 (patch)
tree4c6e2b7f3f7eb2f2da0660f0aa96fc8bf7a1783a /libs
parentd83be1baa3041975a1b0458a5b6b9a3b1178ab84 (diff)
implement designated enable/bypass port for lua-proc
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/luaproc.h5
-rw-r--r--libs/ardour/luaproc.cc6
2 files changed, 11 insertions, 0 deletions
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<std::pair<bool, int> > _ctrl_params;
std::map<int, ARDOUR::ParameterDescriptor> _param_desc;
std::map<int, std::string> _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<bool> ();
_param_desc[pn].enumeration = lr["enum"].isBoolean () && (lr["enum"]).cast<bool> ();
+ if (lr["bypass"].isBoolean () && (lr["bypass"]).cast<bool> ()) {
+ _designated_bypass_port = pn - 1; // lua table starts at 1.
+ }
+
if (lr["unit"].isString ()) {
std::string unit = lr["unit"].cast<std::string> ();
if (unit == "dB") { _param_desc[pn].unit = ParameterDescriptor::DB; }