New feature request: audio output latency compensation

Just doing a bit of work with some Bluetooth speakers, and there’s a huge delay. I’m not doing any MIDI recording - just editing and auditioning. It would be nice to able to compensate for the delay in the audio output. The delay is nothing to do with Dorico - I have the same delay using other audio sources.
Nice how it all worked so easily though - I’m working in my car, and I have another audio app open at the same time.

(in the meantime, the easy workaround is not to use Bluetooth - it’s just nice having the sound coming out of my car stereo, that’s all. Also, I realise that there’s no way around the fact that the sound will always be delayed compared to my keyboard interactions - the latency compensation would only really help for playback)

It worked for a while, but then barfed. I’ve lost interest. (I have no reason to believe Dorico is at fault)

What do want it compensated in relation to? Usually latency compensation works by delaying quicker plugins so that their audio matches slower ones.

In relation to playback only, so that the playhead lines up with the audio. But this is a very low priority request - it’s of little value, after thinking about it.

Yes - the plugin latency should be taken into account too, ideally, but in this particular case, the Bluetooth latency dwarfs the plugin latency. It’s huge.

The way it would work would be like the existing MIDI latency setting - provide a similar setting for output latency. To go further, provide some assistance to arrive at the most accurate settings.

I see what you mean - delaying the playhead to be in time with the bluetooth audio. The problem I’m sure is that there is no way of accurately reporting the delay, unless Dorico were to have an option to delay playhead by x seconds. That would only work if the delay was the same every time.

Watch the playhead as if it was a conductor beating in front…? :wink:

Digital consumer-level equipment often introduces huge delays in the signal path.

If you still have one, compare an old analog portable radio receiver with a modern digital one receiving the same broadcast. The old one may be as much as a second in ahead of the new one.

Dorico certainly has the capability of compensating for playback delays, provided they are predictable and the output device can report them. For example the play head keeps time with NotePerformer, even though NP introduces a one-second playback delay so it can “look ahead” to see what follows a note before it decides how to play it.

Actually, thinking about it, I’m not very concerned about jitter - there’s no reason for jitter to occur I don’t think, even with a very large amount of buffering in the Bluetooth. The most likely cause of jitter is the way Dorico interacts with the audio driver - my understanding is that if Dorico implements “double buffering” of the audio, there’s no need for there to be any jitter, even for very large audio buffer sizes. If only single buffering is used, the average latency is reduced, but then there is jitter. The Cantabile VST host documentation talks about this.