diff options
author | Len Ovens <len@ovenwerks.net> | 2016-06-10 13:05:58 -0700 |
---|---|---|
committer | Len Ovens <len@ovenwerks.net> | 2016-06-10 13:05:58 -0700 |
commit | b588308bede25c226ef6c3b3eefff41ac6fc6fcc (patch) | |
tree | b080889d2e24e0fc6d44febd60bcadd2ece07961 /libs/surfaces/osc | |
parent | a1be0d0fe102d39a75963632d73171a9d3ec6634 (diff) |
OSC: force non-active controls to zero. Keep pan within range wide allows.
Diffstat (limited to 'libs/surfaces/osc')
-rw-r--r-- | libs/surfaces/osc/osc.cc | 92 | ||||
-rw-r--r-- | libs/surfaces/osc/osc.h | 1 |
2 files changed, 62 insertions, 31 deletions
diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc index 8d4c82c539..d6dc4277e8 100644 --- a/libs/surfaces/osc/osc.cc +++ b/libs/surfaces/osc/osc.cc @@ -542,7 +542,6 @@ OSC::register_callbacks() REGISTER_CALLBACK (serv, "/strip/polarity", "ii", strip_phase); REGISTER_CALLBACK (serv, "/strip/gain", "if", route_set_gain_dB); REGISTER_CALLBACK (serv, "/strip/fader", "if", route_set_gain_fader); - REGISTER_CALLBACK (serv, "/strip/trimabs", "if", route_set_trim_abs); REGISTER_CALLBACK (serv, "/strip/trimdB", "if", route_set_trim_dB); REGISTER_CALLBACK (serv, "/strip/pan_stereo_position", "if", route_set_pan_stereo_position); REGISTER_CALLBACK (serv, "/strip/pan_stereo_width", "if", route_set_pan_stereo_width); @@ -1526,10 +1525,13 @@ OSC::route_mute (int ssid, int yn, lo_message msg) boost::shared_ptr<Stripable> s = session->get_remote_nth_stripable (rid, PresentationInfo::Route); if (s) { - s->mute_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup); + if (s->mute_control()) { + s->mute_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup); + return 0; + } } - return 0; + return route_send_fail ("mute", ssid, 0, lo_message_get_source (msg)); } int @@ -1552,10 +1554,13 @@ OSC::route_solo (int ssid, int yn, lo_message msg) boost::shared_ptr<Stripable> s = session->get_remote_nth_stripable (rid, PresentationInfo::Route); if (s) { - s->solo_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup); + if (s->solo_control()) { + s->solo_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup); + return 0; + } } - return 0; + return route_send_fail ("solo", ssid, 0, lo_message_get_source (msg)); } int @@ -1596,7 +1601,6 @@ OSC::route_recenable (int ssid, int yn, lo_message msg) } } } - // hmm, not set for whatever reason tell surface return route_send_fail ("recenable", ssid, 0, lo_message_get_source (msg)); } @@ -1626,7 +1630,6 @@ OSC::route_recsafe (int ssid, int yn, lo_message msg) } } } - // hmm, not set for whatever reason tell surface return route_send_fail ("record_safe", ssid, 0,lo_message_get_source (msg)); } @@ -1641,13 +1644,14 @@ OSC::route_monitor_input (int ssid, int yn, lo_message msg) if (s) { boost::shared_ptr<Track> track = boost::dynamic_pointer_cast<Track> (s); if (track) { - track->monitoring_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup); - } else { - route_send_fail ("monitor_input", ssid, 0, lo_message_get_source (msg)); + if (track->monitoring_control()) { + track->monitoring_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup); + return 0; + } } } - return 0; + return route_send_fail ("monitor_input", ssid, 0, lo_message_get_source (msg)); } int @@ -1672,13 +1676,14 @@ OSC::route_monitor_disk (int ssid, int yn, lo_message msg) if (s) { boost::shared_ptr<Track> track = boost::dynamic_pointer_cast<Track> (s); if (track) { - track->monitoring_control()->set_value (yn ? 2.0 : 0.0, PBD::Controllable::NoGroup); - } else { - route_send_fail ("monitor_disk", ssid, 0, lo_message_get_source (msg)); + if (track->monitoring_control()) { + track->monitoring_control()->set_value (yn ? 2.0 : 0.0, PBD::Controllable::NoGroup); + return 0; + } } } - return 0; + return route_send_fail ("monitor_disk", ssid, 0, lo_message_get_source (msg)); } int @@ -1702,10 +1707,13 @@ OSC::strip_phase (int ssid, int yn, lo_message msg) boost::shared_ptr<Stripable> s = session->get_remote_nth_stripable (rid, PresentationInfo::Route); if (s) { - s->phase_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup); + if (s->phase_control()) { + s->phase_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup); + return 0; + } } - return 0; + return route_send_fail ("polarity", ssid, 0, lo_message_get_source (msg)); } int @@ -1814,7 +1822,13 @@ OSC::route_set_gain_abs (int rid, float level, lo_message msg) boost::shared_ptr<Stripable> s = session->get_remote_nth_stripable (rid, PresentationInfo::Route); if (s) { - s->gain_control()->set_value (level, PBD::Controllable::NoGroup); + if (s->gain_control()) { + s->gain_control()->set_value (level, PBD::Controllable::NoGroup); + } else { + return 1; + } + } else { + return 1; } return 0; @@ -1835,9 +1849,9 @@ OSC::route_set_gain_dB (int ssid, float dB, lo_message msg) ret = route_set_gain_abs (rid, dB_to_coefficient (dB), msg); } if (ret != 0) { - route_send_fail ("gain", ssid, -193, lo_message_get_source (msg)); + return route_send_fail ("gain", ssid, -193, lo_message_get_source (msg)); } - return ret; + return 0; } int @@ -1866,9 +1880,9 @@ OSC::route_set_gain_fader (int ssid, float pos, lo_message msg) ret = route_set_gain_abs (rid, slider_position_to_gain_with_max ((pos/1023), 2.0), msg); } if (ret != 0) { - route_send_fail ("fader", ssid, 0, lo_message_get_source (msg)); + return route_send_fail ("fader", ssid, 0, lo_message_get_source (msg)); } - return ret; + return 0; } int @@ -1893,17 +1907,24 @@ OSC::route_set_trim_abs (int ssid, float level, lo_message msg) if (s) { if (s->trim_control()) { s->trim_control()->set_value (level, PBD::Controllable::NoGroup); + return 0; } } - return 0; + return -1; } int OSC::route_set_trim_dB (int ssid, float dB, lo_message msg) { - return route_set_trim_abs(ssid, dB_to_coefficient (dB), msg); + int ret; + ret = route_set_trim_abs(ssid, dB_to_coefficient (dB), msg); + if (ret != 0) { + return route_send_fail ("trimdB", ssid, 0, lo_message_get_source (msg)); + } + +return 0; } int @@ -1950,11 +1971,11 @@ OSC::route_set_pan_stereo_position (int ssid, float pos, lo_message msg) if (s) { if(s->pan_azimuth_control()) { s->pan_azimuth_control()->set_value (pos, PBD::Controllable::NoGroup); + return route_send_fail ("pan_stereo_position", ssid, s->pan_azimuth_control()->get_value (), lo_message_get_source (msg)); } } - return 0; - + return route_send_fail ("pan_stereo_position", ssid, 0.5, lo_message_get_source (msg)); } int @@ -1968,11 +1989,11 @@ OSC::route_set_pan_stereo_width (int ssid, float pos, lo_message msg) if (s) { if (s->pan_width_control()) { s->pan_width_control()->set_value (pos, PBD::Controllable::NoGroup); + return 0; } } - return 0; - + return route_send_fail ("pan_stereo_width", ssid, 1, lo_message_get_source (msg)); } int @@ -1997,15 +2018,22 @@ OSC::route_set_send_gain_abs (int ssid, int sid, float val, lo_message msg) if (s->send_level_controllable (sid)) { s->send_level_controllable (sid)->set_value (val, PBD::Controllable::NoGroup); + return 0; } - return 0; + return -1; } int OSC::route_set_send_gain_dB (int ssid, int sid, float val, lo_message msg) { - return route_set_send_gain_abs (ssid, sid, dB_to_coefficient (val), msg); + int ret; + ret = route_set_send_gain_abs (ssid, sid, dB_to_coefficient (val), msg); + if (ret != 0) { + return route_send_fail ("send/gain", ssid, -193, lo_message_get_source (msg)); + } + +return 0; } int @@ -2020,6 +2048,10 @@ OSC::route_set_send_fader (int ssid, int sid, float pos, lo_message msg) } else { ret = route_set_send_gain_abs (ssid, sid, slider_position_to_gain_with_max ((pos/1023), 2.0), msg); } + if (ret != 0) { + return route_send_fail ("send/fader", ssid, -193, lo_message_get_source (msg)); + } + return ret; } diff --git a/libs/surfaces/osc/osc.h b/libs/surfaces/osc/osc.h index 304c747af0..e337fbb669 100644 --- a/libs/surfaces/osc/osc.h +++ b/libs/surfaces/osc/osc.h @@ -406,7 +406,6 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest> PATH_CALLBACK2_MSG(route_set_gain_abs,i,f); PATH_CALLBACK2_MSG(route_set_gain_dB,i,f); PATH_CALLBACK2_MSG(route_set_gain_fader,i,f); - PATH_CALLBACK2_MSG(route_set_trim_abs,i,f); PATH_CALLBACK2_MSG(route_set_trim_dB,i,f); PATH_CALLBACK2_MSG(route_set_pan_stereo_position,i,f); PATH_CALLBACK2_MSG(route_set_pan_stereo_width,i,f); |