implement designated enable/bypass port for lua-proc
authorRobin Gareus <robin@gareus.org>
Thu, 7 Jul 2016 14:44:41 +0000 (16:44 +0200)
committerRobin Gareus <robin@gareus.org>
Thu, 7 Jul 2016 14:44:41 +0000 (16:44 +0200)
libs/ardour/ardour/luaproc.h
libs/ardour/luaproc.cc

index 39afb72c96ce6469cfa2e59573983b61e805ab50..bd77efaff9e9c761f625763acbae4c2a772729ec 100644 (file)
@@ -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;
index 26442aa32e45a8affe7f87b40f13c4d6926e5d79..75d957779d8f6402ca8deff04326a80e890e70f0 100644 (file)
@@ -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; }