Skip navigation.
Home

What is JACK?

Have you ever wanted to take the audio output of one piece of software and send it to another? How about taking the output of that same program and send it to two others, then record the result in the first program? Or maybe you're a programmer who writes real-time audio and music applications and who is looking for a cross-platform API that enables not only device sharing but also inter-application audio routing, and is incredibly easy to learn and use? If so, JACK may be what you've been looking for.

JACK is system for handling real-time, low latency audio (and MIDI). It runs on GNU/Linux, Solaris, FreeBSD, OS X and Windows (and can be ported to other POSIX-conformant platforms). It can connect a number of different applications to an audio device, as well as allowing them to share audio between themselves. Its clients can run in their own processes (ie. as normal applications), or can they can run within the JACK server (ie. as a "plugin"). JACK also has support for distributing audio processing across a network, both fast & reliable LANs as well as slower, less reliable WANs.

JACK was designed from the ground up for professional audio work, and its design focuses on two key areas: synchronous execution of all clients, and low latency operation. More background information is available.

Understanding JACK in different ways

The term "JACK" doesn't really identify anything very precisely. What "JACK" means depends a little bit on your perspective. There are several ways of understanding the term, all equally valid:

The JACK API
The definition of the data structures, protocols and functions used by programs that use JACK
An implementation of the API
Actual software, including a server application, often called "jack", and a library used by clients. There are already two implementations of the API, known as "jack1" and "jack2" (formerly "jackmp"). Different implementations are (in almost every way) drop-in replacements for each other.
A GUI control application
The existing implementations do not come with any GUI at all. To make life easier for most users, GUI control apps exist that allow easy modification of JACK startup parameters, and ways to monitor the state of a running JACK system. qjackctl is the most widely used GUI control application.
A running instance of JACK with a variety of JACK-aware applications
This will likely include the server application, the control GUI, and zero or more actual applications that use JACK, such as Ardour (a DAW), Hydrogen (a drum machine) or many, many more.

JACK 0.116.1 released (netjack bugfix)

JACK 0.116.1 is now released. It contains a critical bugfix for the netjack driver discovered last night. There are no other changes between this and 0.116.0. Apologies to any distribution packagers who jumped on the 0.116.0 release (but thanks also for your attention).

JACK 0.116.0 released

On behalf of the JACK development community, I am happy to announce the release of JACK 0.116.0. This is an important release, because it fixes all the problems reported with 0.115.6 and now makes 0.109.2 completely obsolete. Nobody should be using 0.109.2 within a few weeks, and even that is only to allow for distributions to update.

As usual, upgrading to this new version does not require clients to be rebuilt or relinked. Packagers should note that there really are manpages for most of the "tools" clients now (unlike the claim in 0.115.6). These manpages will improve as we get closer to 1.0, as will netjack which remains a hotbed of development activity thanks to Torben.

Changes since 0.115.6

(in rough order of importance)

  • compile on OS X
  • fixed deadlock in jack when handling multiple vanishing clients
  • netjack now supports CELT codec to allow use over DSL/WAN
  • many fixes and redesign for netjack code
  • add missing changes for mixed 32/64-bit server/client support
  • make dynamic SIMD work on OS X
  • man pages for most toolkit clients
  • transport control client added to toolkit clients
  • build system notably cleaned up and stabilized

JACK 0.115.6 released

On behalf of all those work on JACK, I am happy to announce the release of JACK 0.115.6.

http://jackaudio.org/downloads/jack-audio-connection-kit-0.115.6.tar.gz

(corresponding to svn rev 3132)

Qualitatively speaking, this is the best and most stable version of JACK ever released. It fixes many problems with the 0.109.2 release (which in truth should probably never have been allowed out of the door), as well as improving many areas of JACK. The list of changes below summarizes the changes over the last 10 months.

New release : Jack 0.109.2

As always, releasing reveals issues... and then they get solved... so we release...

Jack 0.109.2

Changelog
=========

* fix use of popen() to work on systems that reset PATH for popen'ed command (e.g. OS X)
* USX2Y driver updates to enable JACK MIDI devices to show up
in raw-usb mode (previously, raw-usb mode didn't initialize
or call MIDI drivers properly).
* revert name of ALSA audio backend to "alsa_pcm" so that pre-0.109 connection information can be used again.
* add disgusting kludge so that "ALSA:...." port names continue to work, thus not breaking connection information for 0.109

New release : Jack 0.109.0

Changelog
=========

API changes:
* add jack_thread_wait API
* remove port_(un)lock functions
* add new time APIs
* add port aliases
* add new client registration callback
* add port connect callback

Backends:
* ALSA: fix for use of snd_pcm_link
* ALSA: hardware jack-midi support
* ALSA: fix for enabling big-endian 16bit format discovery
* FreeBoB: fix deallocation segfault
* FireWire: add 'firewire' backend for use with FFADO
* OSS: add support for proper triggering in OSS driver when in full duplex mode
* ALSA: fix illegal use of ALSA API
* OSS: disable software mixing and samplerate conversions on OSS 4.x
* CoreAudio: fix sample rate management

Other:
* add JACK_PROMISCUOUS_SERVER handling
* make /dev/shm the default tmpdir
* add -Z flag to cancel zombification on timeout
* add per-port update total latency
* increment default watchdog timeout to 10sec

New release : Jack 0.103.0

Changes:
Fixed broken --disable-freebob config option.
Jack now reads the global config file.
Fix for jack_midiseq.
For for HPET code to use 32-bit reads on all platforms, for atomicity reasons.
Directly accessing Jack port internal structure is forbidden.
Minor fixes for midi support.
Fix for freebob driver crash.
Fix for alsa usb interleave_skip handling.
Fix for memory leak in ringbuffer.
Fix for shutdown segfault fix.
Added -lpthread to jack.pc so that clients which don't use pthreads will still get -lpthread in their link step.
New parameters for freebob driver. Check help for details.

New JACK release: 0.102.20

We're pleased to present the latest JACK release: 0.102.20.

Download here

Now with experimental MIDI support!

JACK for Windows?

Stephane Letz at GRAME, of JackOSX and jackdmp (multi-processor jackd) fame, has been working on a Windows port of JACK (specifically, jackdmp), and reports early initial success. We apparently need a new ASIO backend, and there is much other work to be done, but the basics appear to work satisfactorily. The original author of JACK is preparing to eat hats, crow and his own left foot as payment for all the times he said it could not be done. Watch this space for more information as it happens.

JACK now using Subversion for development

JACK has moved away from Sourceforge.net's to its own Subversion system at jackaudio.org. Those without write access can get the absolutely current source with this command:
    svn co http://subversion.jackaudio.org/jack/trunk/jack
You can also point a web browser at that URL to see the latest revision of all files.