... I could have stopped here, but one thing had been left open. You may have noticed, that I used the MIDI driver raw in the roundtrip tests of the USB-MIDI interfaces.
But in the JACK Audio Connection Kit I can select one of three options:
MIDI Driver none | raw | seq.
The MIDI Driver seq is the one that Pianoteq chooses automatically, once a Midi input is selected in Pianoteq (for example the EdiRol UM-1SX):
$ lsof | grep seq
Pianoteq 1656 zi 8u CHR 116,1 0t0 9754 /dev/snd/seq
Pianoteq 1656 1659 zi 8u CHR 116,1 0t0 9754 /dev/snd/seq
Pianoteq 1656 1660 zi 8u CHR 116,1 0t0 9754 /dev/snd/seq
Pianoteq 1656 1661 zi 8u CHR 116,1 0t0 9754 /dev/snd/seq
Pianoteq 1656 1664 zi 8u CHR 116,1 0t0 9754 /dev/snd/seq
Pianoteq 1656 2378 zi 8u CHR 116,1 0t0 9754 /dev/snd/seq
vpuptthd 1656 2379 zi 8u CHR 116,1 0t0 9754 /dev/snd/seq
tith 1656 2380 zi 8u CHR 116,1 0t0 9754 /dev/snd/seq
JUCE\x20T 1656 2381 zi 8u CHR 116,1 0t0 9754 /dev/snd/seq
JUCE\x20M 1656 2443 zi 8u CHR 116,1 0t0 9754 /dev/snd/seq
So I made two new tests with the Edirol - one with "raw" as before and one with "seq" - and tried to visualize the results in a spreadsheet:

(original data at the end of this post)
The midi latency with the driver seq is higher and smeared over a wider range.
This "smearing" around an average latency is usually called MIDI Jitter.
Although the difference between both MIDI drivers seems to be small, it would be nice if Pianoteq would have an option to choose the driver (raw or seq) in the GUI.
And/or in the CLI similar to jackd with options -Xraw and -Xseq.
Happy New Year!
PS:
I found a workaround to use the MIDI Driver raw in Pianoteq:
- Deselected all midi inputs inside Pianoteq and stopped it.
- Then started jackd with Midi driver raw and Pianoteq.
- Connected my USB MIDI clients (Korg B2 and a continuous sustain-pedal) virtually with the writeable client Pianoteq in the Connect pane.
Alas I can't use this workaround, because it produces more load on my fanless Intel and I have some Xruns (jackd now has to handle MIDI additionally - before I used MIDI Driver "none")
Original data:
=================================================================
MIDI Driver seq in qjackctrl
/usr/bin/jackd -p128 -dalsa -dhw:USB -r44100 -p64 -n2 -Xseq -P -o2
$ jack_midi_latency_test
Waiting for connections ...
Waiting for test completion ...
Reported out-port latency: 0.00-0.00 ms (0-0 frames)
Reported in-port latency: 0.00-0.00 ms (0-0 frames)
Average latency: 5.98 ms (263.59 frames)
Lowest latency: 5.40 ms (238 frames)
Highest latency: 6.65 ms (293 frames)
Peak MIDI jitter: 1.25 ms (55 frames)
Average MIDI jitter: 0.24 ms (10.07 frames)
Jitter Plot:
0.0 - 0.1 ms: 222
0.1 - 0.2 ms: 227
0.2 - 0.3 ms: 187
0.3 - 0.4 ms: 219
0.4 - 0.5 ms: 129
0.5 - 0.6 ms: 38
0.6 - 0.7 ms: 2
Latency Plot:
5.3 - 5.4 ms: 1
5.4 - 5.5 ms: 30
5.5 - 5.6 ms: 87
5.6 - 5.7 ms: 90
5.7 - 5.8 ms: 101
5.8 - 5.9 ms: 113
5.9 - 6.0 ms: 112
6.0 - 6.1 ms: 119
6.1 - 6.2 ms: 114
6.2 - 6.3 ms: 84
6.3 - 6.4 ms: 116
6.4 - 6.5 ms: 43
6.5 - 6.6 ms: 12
6.6 - 6.7 ms: 2
Messages sent: 1024
Messages received: 1024
==================================================================
MIDI Driver raw
/usr/bin/jackd -p128 -dalsa -dhw:USB -r44100 -p64 -n2 -Xraw -P -o2
$ jack_midi_latency_test
Waiting for connections ...
Waiting for test completion ...
Reported out-port latency: 0.00-0.00 ms (0-0 frames)
Reported in-port latency: 0.00-0.00 ms (0-0 frames)
Average latency: 5.61 ms (247.27 frames)
Lowest latency: 5.42 ms (239 frames)
Highest latency: 5.92 ms (261 frames)
Peak MIDI jitter: 0.50 ms (22 frames)
Average MIDI jitter: 0.09 ms (3.42 frames)
Jitter Plot:
0.0 - 0.1 ms: 615
0.1 - 0.2 ms: 396
0.2 - 0.3 ms: 12
0.3 - 0.4 ms: 1
Latency Plot:
5.4 - 5.5 ms: 150
5.5 - 5.6 ms: 379
5.6 - 5.7 ms: 236
5.7 - 5.8 ms: 239
5.8 - 5.9 ms: 19
5.9 - 6.0 ms: 1
Messages sent: 1024
Messages received: 1024
Last edited by groovy (01-01-2021 12:52)