Jump to content

JACK Audio Connection Kit: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
typo fix, wording
deleted list of applications, new category created.
Line 1: Line 1:
{{Prose|date=September 2008}}
{{ infobox software
{{ infobox software
| logo = [[File:JACK-logo.png|250px]]
| logo = [[File:JACK-logo.png|250px]]
Line 25: Line 24:
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 the current Linux 2.6 kernel series,<ref>{{cite web|url=http://lkml.org/lkml/2004/7/9/138 |title=Original annoucement of a voluntary pre-emption patch for the Linux 2.6 kernel series by Ingo Molnar, 2004|publisher=lkml.org |accessdate=17 February 2010}}</ref><ref>{{site web|url=http://lwn.net/images/conf/rtlws11/paper/proc/p02.pdf |title=Finding Origins of Latencies Using Ftrace, paper by Steven Rostedt from the Real-time Workshop 2009 |accessdate=17 February 2010}}</ref> whose initial latency performance had been disappointing compared to the older 2.4 series.<ref>{{cite web|url=http://lac.zkm.de/2006/papers/lac2006_lee_revell.pdf |title=Real-time audio vs. 2.6, Linux Audio Conference 2006 paper by Lee Revell |accessdate=17 February 2010}}</ref> 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 as of release 2.6.24.<ref>{{cite web|url=http://kernel.org/pub/linux/kernel/projects/rt/ |title=projects/rt directory on the kernel.org server|publisher=kernel.org | accessdate=17 February 2010}}</ref>
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 the current Linux 2.6 kernel series,<ref>{{cite web|url=http://lkml.org/lkml/2004/7/9/138 |title=Original annoucement of a voluntary pre-emption patch for the Linux 2.6 kernel series by Ingo Molnar, 2004|publisher=lkml.org |accessdate=17 February 2010}}</ref><ref>{{site web|url=http://lwn.net/images/conf/rtlws11/paper/proc/p02.pdf |title=Finding Origins of Latencies Using Ftrace, paper by Steven Rostedt from the Real-time Workshop 2009 |accessdate=17 February 2010}}</ref> whose initial latency performance had been disappointing compared to the older 2.4 series.<ref>{{cite web|url=http://lac.zkm.de/2006/papers/lac2006_lee_revell.pdf |title=Real-time audio vs. 2.6, Linux Audio Conference 2006 paper by Lee Revell |accessdate=17 February 2010}}</ref> 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 as of release 2.6.24.<ref>{{cite web|url=http://kernel.org/pub/linux/kernel/projects/rt/ |title=projects/rt directory on the kernel.org server|publisher=kernel.org | accessdate=17 February 2010}}</ref>


== Applications ==
[[File:Jack-connecting audio.png|thumb|Audio tab of QjackCtl]]
[[File:Jack-connecting audio.png|thumb|Audio tab of QjackCtl]]
[[File:QjackctlMainForm1.png|thumb|QjackCtl managing JACK]]
[[File:QjackctlMainForm1.png|thumb|QjackCtl managing JACK]]


Some software that works with JACK:


* [[Aqualung (music player)|Aqualung]] – a [[GTK]] based music player
* [[Ardour (audio processor)|Ardour]] – a free [[digital audio workstation]] program for Linux and OS X.
* [[Audacity]]<ref>http://music.columbia.edu/pipermail/linux-audio-user/2005-July/024519.html</ref> - a digital audio editor and recording application.
* [[Baudline]] – a signal analysis tool
* [[CheeseTracker]] – an Impulse Tracker clone
* [[ChucK]] – a real-time audio programming language
* [[Freqtweak]] – a digital [[Equalisation|EQ]]
* [[Hydrogen (software)|Hydrogen]] – an advanced drum machine
* [[jaaa]] – audio signal generator and spectrum analyser <ref>http://www.kokkinizita.net/linuxaudio</ref>
* japa – a 'perceptual' or 'psychoacoustic' audio spectrum analyser. <ref> http://www.kokkinizita.net/linuxaudio</ref>
* [[MusE]] – a Qt-based [[MIDI]]/audio [[music sequencer|sequencer]]
* [[MuseScore]] – a multiplatform scorewriter. Support for jack audio & midi.
* [[Music Player Daemon]] – what the name says. A [[Daemon_(computer_software)|daemon]] that runs in the background and plays music.
* [[Pure data]] – a graphical programming language for multimedia
* [[Qjackctl]] – a [[Qt toolkit|Qt]] based tool to control JACK
* [[Renoise]] – a contemporary [[Digital_Audio_Workstation|DAW]]/[[Tracker (music software)|tracker]].
* [[Rosegarden]] – a free [[digital audio workstation]] program for Linux
* [[SuperCollider]] – a real-time audio programming language
* [[XMMS]] – a free music player for [[X11]]
* [[XMMS2]] – client/server based redesign of XMMS
* [[ZynAddSubFX]] – an opensource software synthesizer
* [[Music on Console|MOC]] – A ncurses based music player

As of 2007, there are many applications with JACK support; every well known video player supports JACK as audio output, and nearly every audio playing application for Linux supports JACK output.

== Libraries ==
* [[Allegro library|Allegro]] - a game programming library
* [[bio2jack]] - a library that allows for simple porting of blocked I/O (bio) OSS/ALSA audio applications to JACK
* [[libjackasyn]] - a library that converts programs written for the OSS system into JACK-aware applications


== See also ==
== See also ==

Revision as of 21:55, 17 February 2010

JACK Audio Connection Kit
Original author(s)Paul Davis
Developer(s)JACK team[1]
Stable release
1.9.5 / 2 February 2010
Repository
Written inC[2]
Operating systemLinux, FreeBSD, Mac OS X, Windows, Solaris
TypeSound server
LicenseGNU GPL, GNU LGPL
Websitejackaudio.org

JACK (a recursive acronym which expands to JACK Audio Connection Kit) 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. It is under constant development by a community of open source developers led by Paul Davis (who won an Open Source Award in 2004 for this work[3]) 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.

Its design focuses on two key areas: synchronous execution of all clients, and low latency operation.[4] To support JACK, an application has to register a process() callback that deals with incoming audio and computes audio for its output(s). It is not invoked by the application itself, but rather by the JACK daemon, which serves as a central instance in the audio signal graph. For simplicity and efficiency, JACK mandates the use of 32bit float audio data, and a common (but user-configurable) sample rate.

JACK has brought the UNIX philosophy of small, focused tools ("do one thing, and do it well") to real-time audio, which lends itself well to the open source programming methodology, as it fosters code re-use and creative flexibility. The JACK API is easier to implement than native hardware access and allows for cross-platform operation. These advantages have been powerful incentives to developers and have led to JACK's widespread success and rapid adoption in the free audio software community.

JACK can use ALSA, PortAudio, CoreAudio, FreeBoB, 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, Mac OS X, Solaris, Windows, and FreeBSD. 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 (née jackdmp), a re-implementation in C++ led by Stephane Letz, which is under aggressive development and has introduced multi-processor scalability and support for operating systems other than Linux.[5]

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 the current Linux 2.6 kernel series,[6][7] whose initial latency performance had been disappointing compared to the older 2.4 series.[8] 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 as of release 2.6.24.[9]

Audio tab of QjackCtl
QjackCtl managing JACK


See also

References

  1. ^ "JACK Developer Information". jackaudio.org. Retrieved 2 January 2010.
  2. ^ "Ohloh Analysis Summary - JACK". Ohloh. Retrieved 2 January 2010.
  3. ^ "Open Source Awards 2004: Paul Davis for JACK". techrepublic.com.com. Retrieved 16 February 2010.
  4. ^ "JACK Connecting a world of audio". jackaudio.org. Retrieved 15 February 2010.
  5. ^ "What's new in JACK2? - Linux Audio Conference 2009 paper by primary JACK2 author Stephane Letz". linuxaudio.org. Retrieved 17 February 2010.
  6. ^ "Original annoucement of a voluntary pre-emption patch for the Linux 2.6 kernel series by Ingo Molnar, 2004". lkml.org. Retrieved 17 February 2010.
  7. ^ "Finding Origins of Latencies Using Ftrace, paper by Steven Rostedt from the Real-time Workshop 2009" (PDF). Retrieved 17 February 2010.
  8. ^ "Real-time audio vs. 2.6, Linux Audio Conference 2006 paper by Lee Revell" (PDF). Retrieved 17 February 2010.
  9. ^ "projects/rt directory on the kernel.org server". kernel.org. Retrieved 17 February 2010.

External links