Add support to signal the transport state by OSC
authorJohannes Mueller <github@johannes-mueller.org>
Fri, 13 Nov 2015 06:49:13 +0000 (07:49 +0100)
committerRobin Gareus <robin@gareus.org>
Wed, 2 Dec 2015 21:38:29 +0000 (22:38 +0100)
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
libs/surfaces/osc/osc.h

index 6a771d9b48a7e14af86225409edea9b984917043..c3e3cd9c867c1b2ff8f01a706492ab6293149155 100644 (file)
@@ -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)
 {
index 38aad2945fac0f4c2ef5f455d266f004b8a19698..dee420a40186c91abec12d18e6f4971ac57e5c2a 100644 (file)
@@ -122,6 +122,8 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
 
        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<OSCUIRequest>
 
        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) { \