diff options
-rw-r--r-- | libs/surfaces/osc/osc.cc | 48 | ||||
-rw-r--r-- | libs/surfaces/osc/osc.h | 1 |
2 files changed, 49 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 (); diff --git a/libs/surfaces/osc/osc.h b/libs/surfaces/osc/osc.h index b655638722..e6b8b5c43c 100644 --- a/libs/surfaces/osc/osc.h +++ b/libs/surfaces/osc/osc.h @@ -90,6 +90,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest> // generic osc send int float_message (std::string, float value, lo_address addr); + int int_message (std::string, int value, lo_address addr); int text_message (std::string path, std::string val, lo_address addr); int float_message_with_id (std::string, uint32_t ssid, float value, bool in_line, lo_address addr); int int_message_with_id (std::string, uint32_t ssid, int value, bool in_line, lo_address addr); |