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.
This commit is contained in:
Johannes Mueller
2015-11-13 07:49:13 +01:00
committed by Robin Gareus
parent fe4cc2e0a0
commit 4a429fab0e
2 changed files with 34 additions and 0 deletions

View 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)
{

View 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) { \