summaryrefslogtreecommitdiff
path: root/libs/surfaces/osc/osc.cc
diff options
context:
space:
mode:
authorLen Ovens <len@ovenwerks.net>2018-02-01 22:03:04 -0800
committerLen Ovens <len@ovenwerks.net>2018-02-01 22:03:04 -0800
commit16a5e3ce55be272ec8934996a474e9beb6b8c9f2 (patch)
treef385b0ba64137c29d5336232031a400af7e186e6 /libs/surfaces/osc/osc.cc
parentae3d9deefb4e88c85111f818eb909763561e0d60 (diff)
OSC: jog mode and jog mode name should be sent at refresh
Diffstat (limited to 'libs/surfaces/osc/osc.cc')
-rw-r--r--libs/surfaces/osc/osc.cc48
1 files changed, 48 insertions, 0 deletions
diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc
index 4d67b86864..37151bbc70 100644
--- a/libs/surfaces/osc/osc.cc
+++ b/libs/surfaces/osc/osc.cc
@@ -2184,6 +2184,40 @@ OSC::global_feedback (OSCSurface* sur)
// create a new Global Observer for this surface
OSCGlobalObserver* o = new OSCGlobalObserver (*this, *session, sur);
sur->global_obs = o;
+ uint32_t mode = sur->jogmode;
+ lo_address addr = lo_address_new_from_url (sur->remote_url.c_str());
+
+ switch(mode)
+ {
+ case JOG :
+ text_message ("/jog/mode/name", "Jog", addr);
+ break;
+ case SCRUB:
+ text_message ("/jog/mode/name", "Scrub", addr);
+ break;
+ case SHUTTLE:
+ text_message ("/jog/mode/name", "Shuttle", addr);
+ break;
+ case SCROLL:
+ text_message ("/jog/mode/name", "Scroll", addr);
+ break;
+ case TRACK:
+ text_message ("/jog/mode/name", "Track", addr);
+ break;
+ case BANK:
+ text_message ("/jog/mode/name", "Bank", addr);
+ break;
+ case NUDGE:
+ text_message ("/jog/mode/name", "Nudge", addr);
+ break;
+ case MARKER:
+ text_message ("/jog/mode/name", "Marker", addr);
+ break;
+ default:
+ PBD::warning << "Jog Mode: " << mode << " is not valid." << endmsg;
+ break;
+ }
+ int_message ("/jog/mode", mode, addr);
}
}
@@ -5993,6 +6027,20 @@ OSC::float_message_with_id (std::string path, uint32_t ssid, float value, bool i
}
int
+OSC::int_message (string path, int val, lo_address addr)
+{
+
+ lo_message reply;
+ reply = lo_message_new ();
+ lo_message_add_int32 (reply, (float) val);
+
+ lo_send_message (addr, path.c_str(), reply);
+ lo_message_free (reply);
+
+ return 0;
+}
+
+int
OSC::int_message_with_id (std::string path, uint32_t ssid, int value, bool in_line, lo_address addr)
{
lo_message msg = lo_message_new ();