Hi,
I just discovered that ardour is controllable via OSC in pd! In the past, I
have used midi keys to sync my pd patches and ardour, but this was always a
little painful. So, as I hadn't seen any other reference of this, I thought
I would post what commands are available here.
First, you have to turn on OSC within ardour (2.2 or up), which is in
options->misc options. Then, if this is your first time, a file will be
written to .ardour2/osc_url that contains what udp port ardour communicates
osc messages. This is connectable in pd with, in my case:
| connect localhost 3819 (
|
[sendOSC]
Then you have these commands available within pd (this is taken directly out
of ardour-2.4.1/src/libs/ardour/osc.cc). The message you would type in pd
would be something like "send /ardour/add_marker". I haven't tried any of
these but start and stop yet, but here they are:
REGISTER_CALLBACK (serv, "/ardour/add_marker", "", add_marker);
REGISTER_CALLBACK (serv, "/ardour/loop_toggle", "", loop_toggle);
REGISTER_CALLBACK (serv, "/ardour/goto_start", "", goto_start);
REGISTER_CALLBACK (serv, "/ardour/goto_end", "", goto_end);
REGISTER_CALLBACK (serv, "/ardour/rewind", "", rewind);
REGISTER_CALLBACK (serv, "/ardour/ffwd", "", ffwd);
REGISTER_CALLBACK (serv, "/ardour/transport_stop", "",
transport_stop);
REGISTER_CALLBACK (serv, "/ardour/transport_play", "",
transport_play);
REGISTER_CALLBACK (serv, "/ardour/set_transport_speed", "f",
set_transport_speed);
REGISTER_CALLBACK (serv, "/ardour/save_state", "", save_state);
REGISTER_CALLBACK (serv, "/ardour/prev_marker", "", prev_marker);
REGISTER_CALLBACK (serv, "/ardour/next_marker", "", next_marker);
REGISTER_CALLBACK (serv, "/ardour/undo", "", undo);
REGISTER_CALLBACK (serv, "/ardour/redo", "", redo);
REGISTER_CALLBACK (serv, "/ardour/toggle_punch_in", "",
toggle_punch_in);
REGISTER_CALLBACK (serv, "/ardour/toggle_punch_out", "",
toggle_punch_out);
REGISTER_CALLBACK (serv, "/ardour/rec_enable_toggle", "",
rec_enable_toggle);
REGISTER_CALLBACK (serv, "/ardour/toggle_all_rec_enables", "",
toggle_all_rec_enables);
#if 0
REGISTER_CALLBACK (serv, "/ardour/*/#current_value", "",
current_value);
REGISTER_CALLBACK (serv, "/ardour/set", "", set);
#endif
#if 0
// un/register_update args= s:ctrl s:returl s:retpath
lo_server_add_method(serv, "/register_update", "sss",
OSC::global_register_update_handler, this);
lo_server_add_method(serv, "/unregister_update", "sss",
OSC::global_unregister_update_handler, this);
lo_server_add_method(serv, "/register_auto_update", "siss",
OSC::global_register_auto_update_handler, this);
lo_server_add_method(serv, "/unregister_auto_update", "sss",
OSC::_global_unregister_auto_update_handler, this);
-rich