JACK Audio Connection Kit

JACK Audio Connection Kit (or JACK; a recursive acronym) is a professional sound server API and pair of daemon implementations to provide real-time, low-latency connections for both audio and MIDI data between applications. JACK was developed by a community of open-source developers led by Paul Davis (who won an Open Source Award in 2004 for this work)[2] and has been a key piece of infrastructure and the de facto standard for professional audio software on Linux since its inception in 2002. The server is free software, licensed under the GNU GPL, while the library is licensed under the more permissive GNU LGPL.

JACK Audio Connection Kit
Original author(s)Paul Davis, Stéphane Letz
Developer(s)JACK team
Stable release
JACK1:v0.125 / September 14, 2016 (2016-09-14)
JACK2:v1.9.14 / November 19, 2019 (2019-11-19)
Repositorygithub.com/jackaudio/jack2
Written inC,[1] C++
Operating systemBSD, Linux, macOS, Solaris, Windows, iOS
TypeSound server
LicenseGNU GPL, GNU LGPL
Websitejackaudio.org

Implementations

The JACK API is standardized by consensus, and two compatible implementations exist: jack1, which is implemented in plain C and has been in maintenance mode for a while, and jack2 (originally jackdmp), a re-implementation in C++ originally led by Stéphane Letz, which introduced multi-processor scalability and support for operating systems other than Linux.[3]

JACK can be used with ALSA, PortAudio, CoreAudio, FFADO and OSS as hardware back-ends. Additionally, a dummy driver (useful if no sound output is desired, e.g. for offline rendering) and an Audio-over-UDP driver exist. One or both implementations can run on Linux, macOS, Solaris, Windows, iOS, FreeBSD, OpenBSD and NetBSD.

Low-latency scheduling

Like PulseAudio, JACK daemon is an "audio daemon", i.e. it does mixing of audio from applications via software. For this it assumes to have exclusive access to the kernel's audio sub-system.

The scheduling requirements of JACK to achieve sufficiently low latencies were one of the driving forces behind the real-time optimization effort for the Linux kernel 2.6 series,[4][5] whose initial latency performance had been disappointing compared to the older 2.4 series.[6] Real-time tuning work culminated in numerous scheduling improvements to the mainline kernel and the creation of an -rt branch for more intrusive optimizations in the release 2.6.24, and later the CONFIG_PREEMPT_RT patch.[7]

See also

References

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.