Controlling Ardour transport via HTTP?

Hello everyone. I would like to ask if there’s a way to control Ardour’s Transport using regular HTTP requests? I need to be able to start/stop (toggle roll) and, importantly, jump to a certain time.

Some background: I had previously used Ardour with MuseScore3 with transport sync via JACK for transcribing music: it still works wonderfully, I can toggle playback in MuseScore or jump to any position and these changes are mirrored in Ardour.

Recently I tried to switch to MuseScore 4, as it has a lot of new features that I’d like to use in my transcription workflow. Unfortunately, I found out that the developers of MuseScore have removed the support for JACK.

So I started to look for a solution. I know that it is possible to write your own QML plugins for MuseScore, and it’s been pointed out to me that there exist a couple of plugins that syncronize VLC with MuseScore. They do not work that well for me personally, and any way I would like to continue using Ardour.

I know that one could perform HTTP requests from a QML plugin, hence my question. Also, I believe that MuseScore is not built with QtNetwork, so there’s no way to use OSC (UDP) or WebSocket interfaces of Ardour (also, “locate/jump to time” endpoint is not supported by WebSocket interface).

Maybe I am missing some obvious solution, so I’d greatly appreciate if anyone could point it out! Or just gave me a NO on all my assumptions so I could accept my defeat.

Well, OSC would be the obvious solution… Could you perhaps run a command

oscsend osc.udp://localhost:3819 /locate ii 48000 0

Other than that, MIDI may be an option. The simplest would be MMC [1,2], or otherwise MTC or MIDI Clock (enable in Ardour, Preferences > Transport > Chase).


[1] MIDI Machine Control (MMC)
[2] MIDI Machine Control - Wikipedia

With 8.12, this gives me a core dump…

/usr/include/c++/15/bits/stl_vector.h:1263: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator [with _Tp = float; _Alloc = std::allocator; reference = float&; size_type = long unsigned int]: Assertion ‘__n < this->size()’ failed.