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