It's still not clear when the next release of JACK (1.9.23) is coming, but it will ship with a completely rewritten FreeBSD audio (OSS API) backend. As a preview and call for testing, a build option was added to the audio/jack port to try out the new backend. Any feedback on this is appreciated, to weed out possible regressions before the release.
How to get it: The option has been added to the main branch (not in quarterly) of the ports tree. Select the SOSSO option and rebuild. A
Features:
The new backend uses the sosso library which avoids most of these shortcomings by combining a timing based approach with memory mapped IO. There's a double buffer management in JACK, and a new helper thread to feed the OSS buffers in case JACK's primary thread is busy for too long. This effectively decouples the JACK period from OSS buffer size, no more need to fiddle with that.
Testing: Watch out for
Thanks for testing!
How to get it: The option has been added to the main branch (not in quarterly) of the ports tree. Select the SOSSO option and rebuild. A
pkg upgrade
should detect the changed options and update the jackit package. JACK settings are the same, no need to touch them.Features:
- Copes much better with different combinations of JACK period, OSS buffer and latency settings.
- More precise and reproducible latencies from JACK to sound card out, and from sound card in to JACK.
- Better recovery from under- and overruns, drift correction.
- Capable to run with JACK periods < 1ms for low latency use cases.
poll()
) when input and output are on a different pace, and there's no way to tell the exact write()
/ read()
position after under- and overruns.The new backend uses the sosso library which avoids most of these shortcomings by combining a timing based approach with memory mapped IO. There's a double buffer management in JACK, and a new helper thread to feed the OSS buffers in case JACK's primary thread is busy for too long. This effectively decouples the JACK period from OSS buffer size, no more need to fiddle with that.
Testing: Watch out for
- General regressions, runtime problems
- Power draw on laptops
- Low latency if interested
buffer_ms
to 1ms, a high sample rate to get low latency on the DA/AD converters, and then decrease the JACK period to 1ms.Thanks for testing!