From 4a429fab0e26f7268d76119028bbbd3df13a4607 Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Fri, 13 Nov 2015 07:49:13 +0100 Subject: [PATCH] Add support to signal the transport state by OSC Implement transport_speed in the same style like transport_frame. Up to now transport_speed and record_enabled are implemented. --- libs/surfaces/osc/osc.cc | 30 ++++++++++++++++++++++++++++++ libs/surfaces/osc/osc.h | 4 ++++ 2 files changed, 34 insertions(+) diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc index 6a771d9b48..c3e3cd9c86 100644 --- a/libs/surfaces/osc/osc.cc +++ b/libs/surfaces/osc/osc.cc @@ -336,7 +336,10 @@ OSC::register_callbacks() REGISTER_CALLBACK (serv, "/ardour/transport_stop", "", transport_stop); REGISTER_CALLBACK (serv, "/ardour/transport_play", "", transport_play); REGISTER_CALLBACK (serv, "/ardour/transport_frame", "", transport_frame); + REGISTER_CALLBACK (serv, "/ardour/transport_speed", "", transport_speed); + REGISTER_CALLBACK (serv, "/ardour/record_enabled", "", record_enabled); REGISTER_CALLBACK (serv, "/ardour/set_transport_speed", "f", set_transport_speed); + REGISTER_CALLBACK (serv, "/ardour/locate", "ii", locate); REGISTER_CALLBACK (serv, "/ardour/save_state", "", save_state); REGISTER_CALLBACK (serv, "/ardour/prev_marker", "", prev_marker); @@ -788,6 +791,33 @@ OSC::transport_frame (lo_message msg) lo_message_free (reply); } +void +OSC::transport_speed(lo_message msg) +{ + double ts = session->transport_speed (); + + lo_message reply = lo_message_new (); + lo_message_add_double (reply, ts); + + lo_send_message (lo_message_get_source (msg), "/ardour/transport_speed", reply); + + lo_message_free (reply); +} + +void +OSC::record_enabled(lo_message msg) +{ + int re = (int)session->get_record_enabled (); + + lo_message reply = lo_message_new (); + lo_message_add_int32 (reply, re); + + lo_send_message (lo_message_get_source (msg), "/ardour/record_enabled", reply); + + lo_message_free (reply); +} + + int OSC::route_mute (int rid, int yn) { diff --git a/libs/surfaces/osc/osc.h b/libs/surfaces/osc/osc.h index 38aad2945f..dee420a401 100644 --- a/libs/surfaces/osc/osc.h +++ b/libs/surfaces/osc/osc.h @@ -122,6 +122,8 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI void routes_list (lo_message msg); void transport_frame(lo_message msg); + void transport_speed(lo_message msg); + void record_enabled(lo_message msg); #define PATH_CALLBACK_MSG(name) \ static int _ ## name (const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data) { \ @@ -134,6 +136,8 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI PATH_CALLBACK_MSG(routes_list); PATH_CALLBACK_MSG(transport_frame); + PATH_CALLBACK_MSG(transport_speed); + PATH_CALLBACK_MSG(record_enabled); #define PATH_CALLBACK(name) \ static int _ ## name (const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data) { \