Latency when playing MIDI

I read these posts:

But I was not able to solve the issue.
I should also say that this works perfectly will with Cubase, or with the standalone version of the same VST plugin I’m using (pianoteq), with the same sound interface and buffer configuration. For some reason Dorico still has a minor delay which makes it hard to play.

Can you please do Help > Create Diagnostic Report and attach the resulting zip file here so we can get a closer look at your configuration?

Dorico Diagnostics.zip (1.7 MB)

VST effects in the mixer might add latency? (I’m not certain)
Depending on the project template, Dorico might add some effects to your mixer, such as: “Reverence” on reverb send and “Compressor” on the master track.
Removing them might reduce latency.

On the face of it, everything looks OK. I notice that you have a large number of MIDI ports enabled: though it doesn’t look like this should be causing a problem it might be worth checking that you only have those ports enabled for input that you really need, i.e. the single one your MIDI keyboard is attached to. It might also be worth experimenting with trying the WinRT MIDI option (if it’s on, turn it off, or vice versa) to see if that behaves any differently.

I tried disabling the default compression and EQ - it made a noticeable positive difference (though I suspect it might still be just a tiny bit slower than Cubase or standalone VSTs)

It’s weird that it’s a problem since Cubase also have these effects with no issues.

Once I had a conversation about that topic with Ulf Stoermer from the Steinberg staff, were he explained what causes additional latency, I will quote this here (translated from German to English):

Blockquote
As for the input latency, yes, that’s a little difficult in Dorico because the MIDI handling is not as straight forward as in Cubase or Logic. The MIDI ports are opened and operated by the VSTAudioEngine. Incoming MIDI data is therefore read and sent to Dorico via IPC, i.e. this is where the first additional latency occurs. Then Dorico sends them back to the audio engine via IPC, and only then are they made audible.
Have you ever played with the ‘MIDI input latency compensation’ option in the Dorico preferences? It’s quite far down on the play tab.
Blockquote

My understanding it that the MIDI latency compensation option will not help with live playing but with aligning your recording to the metronome actual time?

My main concern is the playability in my keyboard as I sketch ideas before inputting / recording them.

Anyway it’s pretty unfortunate that Dorico’s architecture does not allow for a performance that is similar to Cubase for live playing… I hope this will get fixed eventually.

When I want to record live or just playing the piano in Dorico, I use a workaround in conjunction with the standalone version of Pianoteq (but should work with any other standalone VSTI that allows virtual MIDI inputs.
Here are the steps:

In macOS → Audio MIDISettings, enable the IAC driver (Network-midi).

In Dorico, create a project with a piano. In the preferences, select only your keyboard as Midi input source (never activate all inputs in this case). Midi-thru must be activated.

In play mode, under VST and MIDI, create a midi instrument with the IAC driver as destination. In Track-inspector → routing, assign the midi instrument you have just created to the piano. If you want, you can also save this setting as an endpoint configuration, so that it is automatically assigned when a piano player is added to the project.

In the Pianoteq stand-alone version, select only the IAC driver as input source (in any case, deactivate your keyboard as midi input here)

That’s it, the latency when recording live (or just playing the piano) in Dorico is only slightly higher than when I play the Pianoteq standalone directly.

It works the same way in Windows, but Loopbe must also be installed, as Windows itself does not provide virtual midi ports.

I hope this helps.

Übersetzt mit DeepL (https://www.deepl.com/app/?utm_source=ios&utm_medium=app&utm_campaign=share-translation)