+ REGISTER_CALLBACK (serv, "/ardour/all_tracks_rec_in", "f", all_tracks_rec_in);
+ REGISTER_CALLBACK (serv, "/ardour/all_tracks_rec_out", "f", all_tracks_rec_out);
+ REGISTER_CALLBACK (serv, "/ardour/remove_marker", "", remove_marker_at_playhead);
+ REGISTER_CALLBACK (serv, "/ardour/jump_bars", "f", jump_by_bars);
+ REGISTER_CALLBACK (serv, "/ardour/jump_seconds", "f", jump_by_seconds);
+ REGISTER_CALLBACK (serv, "/ardour/mark_in", "", mark_in);
+ REGISTER_CALLBACK (serv, "/ardour/mark_out", "", mark_out);
+ REGISTER_CALLBACK (serv, "/ardour/toggle_click", "", toggle_click);
+ REGISTER_CALLBACK (serv, "/ardour/midi_panic", "", midi_panic);
+ REGISTER_CALLBACK (serv, "/ardour/toggle_roll", "", toggle_roll);
+ REGISTER_CALLBACK (serv, "/ardour/stop_forget", "", stop_forget);
+ REGISTER_CALLBACK (serv, "/ardour/set_punch_range", "", set_punch_range);
+ REGISTER_CALLBACK (serv, "/ardour/set_loop_range", "", set_loop_range);
+ REGISTER_CALLBACK (serv, "/ardour/set_session_range", "", set_session_range);
+ REGISTER_CALLBACK (serv, "/ardour/toggle_monitor_mute", "", toggle_monitor_mute);
+ REGISTER_CALLBACK (serv, "/ardour/toggle_monitor_dim", "", toggle_monitor_dim);
+ REGISTER_CALLBACK (serv, "/ardour/toggle_monitor_mono", "", toggle_monitor_mono);
+ REGISTER_CALLBACK (serv, "/ardour/quick_snapshot_switch", "", quick_snapshot_switch);
+ REGISTER_CALLBACK (serv, "/ardour/quick_snapshot_stay", "", quick_snapshot_stay);
+ REGISTER_CALLBACK (serv, "/ardour/fit_1_track", "", fit_1_track);
+ REGISTER_CALLBACK (serv, "/ardour/fit_2_tracks", "", fit_2_tracks);
+ REGISTER_CALLBACK (serv, "/ardour/fit_4_tracks", "", fit_4_tracks);
+ REGISTER_CALLBACK (serv, "/ardour/fit_8_tracks", "", fit_8_tracks);
+ REGISTER_CALLBACK (serv, "/ardour/fit_16_tracks", "", fit_16_tracks);
+ REGISTER_CALLBACK (serv, "/ardour/fit_32_tracks", "", fit_32_tracks);
+ REGISTER_CALLBACK (serv, "/ardour/fit_all_tracks", "", fit_all_tracks);
+ REGISTER_CALLBACK (serv, "/ardour/zoom_100_ms", "", zoom_100_ms);
+ REGISTER_CALLBACK (serv, "/ardour/zoom_1_sec", "", zoom_1_sec);
+ REGISTER_CALLBACK (serv, "/ardour/zoom_10_sec", "", zoom_10_sec);
+ REGISTER_CALLBACK (serv, "/ardour/zoom_1_min", "", zoom_1_min);
+ REGISTER_CALLBACK (serv, "/ardour/zoom_5_min", "", zoom_5_min);
+ REGISTER_CALLBACK (serv, "/ardour/zoom_10_min", "", zoom_10_min);
+ REGISTER_CALLBACK (serv, "/ardour/zoom_to_session", "", zoom_to_session);
+ REGISTER_CALLBACK (serv, "/ardour/temporal_zoom_in", "f", temporal_zoom_in);
+ REGISTER_CALLBACK (serv, "/ardour/temporal_zoom_out", "f", temporal_zoom_out);
+ REGISTER_CALLBACK (serv, "/ardour/scroll_up_1_track", "f", scroll_up_1_track);
+ REGISTER_CALLBACK (serv, "/ardour/scroll_dn_1_track", "f", scroll_dn_1_track);
+ REGISTER_CALLBACK (serv, "/ardour/scroll_up_1_page", "f", scroll_up_1_page);
+ REGISTER_CALLBACK (serv, "/ardour/scroll_dn_1_page", "f", scroll_dn_1_page);
+
+
+ /*
+ * NOTE: these messages are provided for (arguably broken) apps
+ * that MUST send float args ( TouchOSC and Lemur ).
+ * Normally these ardour transport messages don't require an argument,
+ * so we're providing redundant calls with vestigial "float" args.
+ *
+ * These controls are active on 1.0 only (to prevent duplicate action on
+ * press "/button 1", and release "/button 0")
+ * http://hexler.net/docs/touchosc-controls-reference
+ */
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/loop_toggle", "f", loop_toggle);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/add_marker", "f", add_marker);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/goto_start", "f", goto_start);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/goto_end", "f", goto_end);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/rewind", "f", rewind);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/ffwd", "f", ffwd);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/transport_stop", "f", transport_stop);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/transport_play", "f", transport_play);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/save_state", "f", save_state);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/prev_marker", "f", prev_marker);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/next_marker", "f", next_marker);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/undo", "f", undo);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/redo", "f", redo);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/toggle_punch_in", "f", toggle_punch_in);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/toggle_punch_out", "f", toggle_punch_out);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/rec_enable_toggle", "f", rec_enable_toggle);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/toggle_all_rec_enables", "f", toggle_all_rec_enables);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/all_tracks_rec_in", "f", all_tracks_rec_in);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/all_tracks_rec_out", "f", all_tracks_rec_out);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/remove_marker", "f", remove_marker_at_playhead);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/mark_in", "f", mark_in);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/mark_out", "f", mark_out);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/toggle_click", "f", toggle_click);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/midi_panic", "f", midi_panic);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/toggle_roll", "f", toggle_roll);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/stop_forget", "f", stop_forget);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/set_punch_range", "f", set_punch_range);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/set_loop_range", "f", set_loop_range);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/set_session_range", "f", set_session_range);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/toggle_monitor_mute", "f", toggle_monitor_mute);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/toggle_monitor_dim", "f", toggle_monitor_dim);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/toggle_monitor_mono", "f", toggle_monitor_mono);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/quick_snapshot_switch", "f", quick_snapshot_switch);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/quick_snapshot_stay", "f", quick_snapshot_stay);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/fit_1_track", "f", fit_1_track);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/fit_2_tracks", "f", fit_2_tracks);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/fit_4_tracks", "f", fit_4_tracks);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/fit_8_tracks", "f", fit_8_tracks);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/fit_16_tracks", "f", fit_16_tracks);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/fit_32_tracks", "f", fit_32_tracks);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/fit_all_tracks", "f", fit_all_tracks);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/zoom_100_ms", "f", zoom_100_ms);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/zoom_1_sec", "f", zoom_1_sec);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/zoom_10_sec", "f", zoom_10_sec);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/zoom_1_min", "f", zoom_1_min);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/zoom_5_min", "f", zoom_5_min);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/zoom_10_min", "f", zoom_10_min);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/zoom_to_session", "f", zoom_to_session);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/temporal_zoom_in", "f", temporal_zoom_in);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/temporal_zoom_out", "f", temporal_zoom_out);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/scroll_up_1_track", "f", scroll_up_1_track);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/scroll_dn_1_track", "f", scroll_dn_1_track);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/scroll_up_1_page", "f", scroll_up_1_page);
+ REGISTER_CALLBACK (serv, "/ardour/pushbutton/scroll_dn_1_page", "f", scroll_dn_1_page);
+
+ /* These commands require the route index in addition to the arg; TouchOSC (et al) can't use these */