merlyn wrote: ↑Tue Nov 02, 2021 1:45 pm
WforWoollyMammoth wrote: ↑Mon Nov 01, 2021 2:00 pm
I've noted slight differences between the two USB interfaces I own (RME Babyface Pro and a Yamaha mixer with a built-in interface). It might be due to the hardware differences though.
Are they both USB 2? My friend has a Yamaha mixer that is USB 1.1, and USB1.1 does have worse latency. USB audio uses isochronous transfer. In USB 1.1 one packet is sent per millisecond, in USB 2 eight packets are sent per millisecond, so the diference would be around 2ms.
If you're using JACK you can shave one period off the buffer by using JACK in 'server synchronous' mode.
I'll be interested to hear about your results when you get a kernel with the fixed USB module. Hopefully the latency will be noticeably better.
Sorry for my late answer. I had a move, had left a lot of things in boxes and forgot to reply. I've now done some new tests, because I don't feel comfortable speaking about things that I tested already several years ago.
Here are the results from the roundtrip latency tests I did today with two different USB audio interfaces (RME Babyface Pro and Yamaha MG10XU mixer with a built-in audio interface). I've used QJackCtl for applying the settings. I only have "jackdmp" as the only available server option on my system (not sure if the results would be different with jackd). I only did 128 and 256 frames and 2 and 3 periods for the tests.
OS: Ubuntu 21.04 (though modified quite a bit)
Kernel 5.11.018-lowlatency
RME Babyface Pro
128 / 2 sync = 13.040 ms - QjackCtl reports 5.33 ms
128 / 2 async = 15.707 ms - QjackCtl reports 5.33 ms
128 / 3 sync = 19.207 ms - QjackCtl reports 8 ms
128 / 3 async = 21.873 ms - QjackCtl reports 8 ms
256 / 2 sync = 21.123 ms - QjackCtl reports 10.7 ms
256 / 2 async = 26.457 ms - QjackCtl reports 10.7 ms
256 / 3 sync = 27.207 ms - QjackCtl reports 16 ms
256 / 3 async = 32.540 ms - QjackCtl reports 16 ms
Yamaha MG10XU
128 / 2 sync = 16.530 ms - QjackCtl reports 5.33 ms
128 / 2 async = 19.239 ms - QjackCtl reports 5.33 ms
128 / 3 sync = 21.301 ms - QjackCtl reports 8 ms
128 / 3 async = 24.947 ms - QjackCtl reports 8 ms
256 / 2 sync = 28.114 ms - QjackCtl reports 10.7 ms
256 / 2 async = 33.468 ms - QjackCtl reports 10.7 ms
256 / 3 sync = 36.614 ms - QjackCtl reports 16 ms
256 / 3 async = 41.905 ms - QjackCtl reports 16 ms
It would seem that there's quite a big difference with all the settings I tried! Not sure what causes it (the Yamaha is considerably cheaper, so it has slower converters?). Both units are USB2 and I used the same cable for the tests. I think I had the same type of results with these two audio interfaces when I did the test last time around (I think that was 2½ years ago).
Can anyone point out any potential mistakes I might have made during the tests that might produce these type of results?
These results should, in any case, showcase the additional latency problem with the generic ALSA USB sound driver. Of course, the QJackCtl value isn't for roundtrip, but multiply the values by two for the results that have been done with two periods and you should get a better idea what the latency is "assumed to be" (I have no real idea why the values do not change in QJackCtl when you're using 3 periods).
Again, if I've been doing something stupid and wrong, please someone point it out to me. However, My test results with the RME Babyface Pro are similar to what's been reported e.g. here:
https://www.alsa-project.org/pipermail/ ... 41201.html