JACK Audio Connection Kit
Original author(s) | Paul Davis, Stéphane Letz |
---|---|
Developer(s) | JACK team |
Stable release |
(JACK1) v0.124.1 (January 22, 2014 ) [±] (JACK2) v1.9.10 (July 20, 2014 ) [±] |
Written in | C,[1] C++ |
Operating system | BSD, Linux, OS X, Solaris, Windows, iOS |
Type | Sound server |
License | GNU GPL, GNU LGPL |
Website |
jackaudio |
JACK Audio Connection Kit (or JACK; a recursive acronym) is a professional sound server daemon that provides real-time, low-latency connections for both audio and MIDI data between applications that implement its API. JACK has been 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.
Implementations
JACK can use 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. It runs on Linux, OS X, Solaris, Windows, iOS, FreeBSD, OpenBSD and NetBSD. 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++ led by Stéphane Letz, which is under aggressive development and has introduced multi-processor scalability and support for operating systems other than Linux.[3]
Low-latency scheduling
The scheduling requirements of JACK to achieve sufficiently low latencies have been 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 has 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]
JACK Audio Connection Kit is used for connecting studio applications such as the Ardour digital audio workstation and the Rosegarden MIDI sequencer.
JACK Audio Connection Kit is a sound system for connecting professional audio production applications and hardware output. Its focus is low-latency and application interconnection. It is not useful for normal desktop or embedded use. It is not an API that is particularly useful if all you want to do is simple PCM playback. JACK supports multiple backends, although ALSA is best supported. JACK is portable beyond Linux. Among the supported backends are ALSA, OSS.
See also
- LADSPA & LV2 – prevailing APIs for plugins
- PulseAudio – prevailing sound server for desktop use
- List of Linux audio software
- Comparison of free software for audio
References
- ↑ "JACK". Analysis Summary. Ohloh. Retrieved 2012-01-08.
- ↑ "Open Source Awards 2004: Paul Davis for JACK". techrepublic.com.com. Retrieved 24 May 2016.
- ↑ "What's new in JACK2? - Linux Audio Conference 2009 paper by primary JACK2 author Stephane Letz". linuxaudio.org. Retrieved 17 February 2010.
- ↑ "Original announcement of a voluntary pre-emption patch for the Linux 2.6 kernel series by Ingo Molnar, 2004". lkml.org. Retrieved 17 February 2010.
- ↑ "Finding Origins of Latencies Using Ftrace, paper by Steven Rostedt from the Real-time Workshop 2009" (PDF). Retrieved 17 February 2010.
- ↑ "Real-time audio vs. 2.6, Linux Audio Conference 2006 paper by Lee Revell" (PDF). Retrieved 17 February 2010.
- ↑ "Real-Time Linux Wiki". Kernel.org (The Linux Kernel Archives). Retrieved 8 June 2010.
External links
- Official website
- JACK API Documentation
- Linux Journal article
- Jackdmp with links to OSX and Windows binaries at the Wayback Machine (archived June 6, 2012)
- List of JACK enabled applications
- Another article on JACK
- JACK on iOS (iPhone and iPad)