OSC: Add master_send_enable for MB
authorLen Ovens <len@ovenwerks.net>
Sat, 24 Jun 2017 00:07:11 +0000 (17:07 -0700)
committerLen Ovens <len@ovenwerks.net>
Sat, 24 Jun 2017 00:09:54 +0000 (17:09 -0700)
libs/surfaces/osc/osc.cc
libs/surfaces/osc/osc.h
libs/surfaces/osc/osc_select_observer.cc

index 4ec2f18d4b46eb5a5c93c48112c356b7f08051ce..7d44efda26976d5283755893a16c895a74214192 100644 (file)
@@ -564,6 +564,7 @@ OSC::register_callbacks()
                REGISTER_CALLBACK (serv, "/select/send_gain", "if", sel_sendgain);
                REGISTER_CALLBACK (serv, "/select/send_fader", "if", sel_sendfader);
                REGISTER_CALLBACK (serv, "/select/send_enable", "if", sel_sendenable);
+               REGISTER_CALLBACK (serv, "/select/master_send_enable", "i", sel_master_send_enable);
                REGISTER_CALLBACK (serv, "/select/send_page", "f", sel_send_page);
                REGISTER_CALLBACK (serv, "/select/plug_page", "f", sel_plug_page);
                REGISTER_CALLBACK (serv, "/select/plugin", "f", sel_plugin);
@@ -3709,6 +3710,25 @@ OSC::sel_sendenable (int id, float val, lo_message msg)
        return sel_send_fail ("send_enable", id, 0, get_address (msg));
 }
 
+int
+OSC::sel_master_send_enable (int state, lo_message msg)
+{
+       OSCSurface *sur = get_surface(get_address (msg));
+       boost::shared_ptr<Stripable> s;
+       if (sur->expand_enable) {
+               s = get_strip (sur->expand, get_address (msg));
+       } else {
+               s = _select;
+       }
+       if (s) {
+               if (s->master_send_enable_controllable ()) {
+                       s->master_send_enable_controllable()->set_value (state, PBD::Controllable::NoGroup);
+                       return 0;
+               }
+       }
+       return cue_float_message ("/select/master_send_enable", 0, get_address(msg));
+}
+
 int
 OSC::select_plugin_parameter (const char *path, const char* types, lo_arg **argv, int argc, lo_message msg) {
        OSCSurface *sur = get_surface(get_address (msg));
index faa5f79c2e20d0511703b33a3c7ee5d1ad222ff9..805a3df663d45687cff95ff8e61098069b80e2c8 100644 (file)
@@ -422,6 +422,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
        PATH_CALLBACK1_MSG(sel_recenable,i);
        PATH_CALLBACK1_MSG(sel_recsafe,i);
        PATH_CALLBACK1_MSG(sel_mute,i);
+       PATH_CALLBACK1_MSG(sel_master_send_enable,i);
        PATH_CALLBACK1_MSG(sel_solo,i);
        PATH_CALLBACK1_MSG(sel_solo_iso,i);
        PATH_CALLBACK1_MSG(sel_solo_safe,i);
@@ -633,6 +634,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
        int sel_sendgain (int id, float dB, lo_message msg);
        int sel_sendfader (int id, float pos, lo_message msg);
        int sel_sendenable (int id, float pos, lo_message msg);
+       int sel_master_send_enable (int state, lo_message msg);
        int sel_expand (uint32_t state, lo_message msg);
        int sel_pan_elevation (float val, lo_message msg);
        int sel_pan_frontback (float val, lo_message msg);
index caec1ec07137b8f6dc3dcc1c892e8fb00f86db91..52c0d47c0cc41d8c8b86f49b9603ffbdd1162e53 100644 (file)
@@ -150,6 +150,11 @@ OSCSelectObserver::OSCSelectObserver (boost::shared_ptr<Stripable> s, lo_address
 
                // sends, plugins and eq
                // detecting processor changes is now in osc.cc
+               // but... MB master send enable is different
+               if (_strip->master_send_enable_controllable ()) {
+                       _strip->master_send_enable_controllable ()->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::enable_message, this, X_("/select/master_send_enable"), _strip->master_send_enable_controllable()), OSC::instance());
+                       enable_message ("/select/master_send_enable", _strip->master_send_enable_controllable());
+               }
 
                // Compressor
                if (_strip->comp_enable_controllable ()) {