OSC: jog mode and jog mode name should be sent at refresh

This commit is contained in:
Len Ovens
2018-02-01 22:03:04 -08:00
parent ae3d9deefb
commit 16a5e3ce55
2 changed files with 49 additions and 0 deletions

View File

@@ -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);
}
}
@@ -5992,6 +6026,20 @@ OSC::float_message_with_id (std::string path, uint32_t ssid, float value, bool i
return 0;
}
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)
{

View File

@@ -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);