From b0e5ab1b81d10d29d4c4812f2033495f6f8f6b91 Mon Sep 17 00:00:00 2001 From: Len Ovens Date: Sat, 18 Mar 2017 20:05:04 -0700 Subject: OSC add /monitor/mute,dim,mono --- libs/surfaces/osc/osc.cc | 40 +++++++++++++++++++++++++++++++++++++++- libs/surfaces/osc/osc.h | 6 ++++++ 2 files changed, 45 insertions(+), 1 deletion(-) (limited to 'libs/surfaces') diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc index cfa0598102..d6463411da 100644 --- a/libs/surfaces/osc/osc.cc +++ b/libs/surfaces/osc/osc.cc @@ -478,7 +478,6 @@ OSC::register_callbacks() REGISTER_CALLBACK (serv, "/set_loop_range", "f", set_loop_range); REGISTER_CALLBACK (serv, "/set_session_range", "", set_session_range); REGISTER_CALLBACK (serv, "/set_session_range", "f", set_session_range); - // /toggle_monitor_* not working (comented out) REGISTER_CALLBACK (serv, "/toggle_monitor_mute", "", toggle_monitor_mute); REGISTER_CALLBACK (serv, "/toggle_monitor_mute", "f", toggle_monitor_mute); REGISTER_CALLBACK (serv, "/toggle_monitor_dim", "", toggle_monitor_dim); @@ -542,6 +541,9 @@ OSC::register_callbacks() REGISTER_CALLBACK (serv, "/master/pan_stereo_position", "f", master_set_pan_stereo_position); REGISTER_CALLBACK (serv, "/monitor/gain", "f", monitor_set_gain); REGISTER_CALLBACK (serv, "/monitor/fader", "f", monitor_set_fader); + REGISTER_CALLBACK (serv, "/monitor/mute", "i", monitor_set_mute); + REGISTER_CALLBACK (serv, "/monitor/dim", "i", monitor_set_dim); + REGISTER_CALLBACK (serv, "/monitor/mono", "i", monitor_set_mono); // Controls for the Selected strip REGISTER_CALLBACK (serv, "/select/recenable", "i", sel_recenable); @@ -1808,6 +1810,42 @@ OSC::monitor_set_fader (float position) return 0; } +int +OSC::monitor_set_mute (uint32_t state) +{ + if (!session) return -1; + + if (session->monitor_out()) { + boost::shared_ptr mon = session->monitor_out()->monitor_control(); + mon->set_cut_all (state); + } + return 0; +} + +int +OSC::monitor_set_dim (uint32_t state) +{ + if (!session) return -1; + + if (session->monitor_out()) { + boost::shared_ptr mon = session->monitor_out()->monitor_control(); + mon->set_dim_all (state); + } + return 0; +} + +int +OSC::monitor_set_mono (uint32_t state) +{ + if (!session) return -1; + + if (session->monitor_out()) { + boost::shared_ptr mon = session->monitor_out()->monitor_control(); + mon->set_mono (state); + } + return 0; +} + int OSC::route_get_sends(lo_message msg) { if (!session) { diff --git a/libs/surfaces/osc/osc.h b/libs/surfaces/osc/osc.h index 134593b1e5..c3722bd7d5 100644 --- a/libs/surfaces/osc/osc.h +++ b/libs/surfaces/osc/osc.h @@ -351,6 +351,9 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI PATH_CALLBACK1(master_set_mute,i,); PATH_CALLBACK1(monitor_set_gain,f,); PATH_CALLBACK1(monitor_set_fader,f,); + PATH_CALLBACK1(monitor_set_mute,i,); + PATH_CALLBACK1(monitor_set_dim,i,); + PATH_CALLBACK1(monitor_set_mono,i,); #define PATH_CALLBACK1_MSG(name,arg1type) \ static int _ ## name (const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data) { \ @@ -546,6 +549,9 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI int master_set_mute (uint32_t state); int monitor_set_gain (float dB); int monitor_set_fader (float position); + int monitor_set_mute (uint32_t state); + int monitor_set_dim (uint32_t state); + int monitor_set_mono (uint32_t state); int sel_recenable (uint32_t state, lo_message msg); int sel_recsafe (uint32_t state, lo_message msg); int sel_mute (uint32_t state, lo_message msg); -- cgit v1.2.3