JACK Audio Connection Kit

Last updated
JACK Audio Connection Kit
Original author(s) Paul Davis, Stéphane Letz
Developer(s) JACK team
Initial release2002 (2002)
Stable release
JACK1:v0.126.0 / January 15, 2022;2 years ago (2022-01-15)
JACK2:v1.9.22 / February 3, 2023;21 months ago (2023-02-03)
Repository github.com/jackaudio/jack2
Written in C, [1] C++
Operating system BSD, Linux, macOS, Solaris, Windows, iOS
Type Sound server
License Server: GPL-2.0-or-later
Library: LGPL-2.1-or-later [2]
Website jackaudio.org OOjs UI icon edit-ltr-progressive.svg

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) [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 GPL-2.0-or-later, while the library is licensed under LGPL-2.1-or-later. [2]

Contents

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. [4]

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.

The JACK API is also implemented by PipeWire for backwards compatibility as a complete drop-in replacement provider for JACK clients, mapping JACK API calls to equivalent PipeWire calls. [5] If used as a replacement for ALSA and PulseAudio as well, it can unify the different sound servers and APIs that might be typically found on a machine, and allow better integration between different software. PipeWire also claims to add a number of features and fix a number of limitations compared to JACK. [6] The use of PipeWire as the default implementation of JACK is the default on Fedora 34 and newer. [7]

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. Linux kernel and daemons with exclusive access.svg
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, [8] [9] whose initial latency performance had been disappointing compared to the older 2.4 series. [10] 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. [11]

Applications with JACK support

See also

Related Research Articles

<span class="mw-page-title-main">Advanced Linux Sound Architecture</span> Software framework

Advanced Linux Sound Architecture (ALSA) is a software framework and part of the Linux kernel that provides an application programming interface (API) for sound card device drivers.

The Open Sound System (OSS) is an interface for making and capturing sound in Unix and Unix-like operating systems. It is based on standard Unix devices system calls. The term also sometimes refers to the software in a Unix kernel that provides the OSS interface; it can be thought of as a device driver for sound controller hardware. The goal of OSS is to allow the writing of sound-based applications that are agnostic of the underlying sound hardware.

freedesktop.org (fd.o), formerly X Desktop Group (XDG), is a project to work on interoperability and shared base technology for free-software desktop environments for the X Window System (X11) and Wayland on Linux and other Unix-like operating systems. Although freedesktop.org produces specifications for interoperability, it is not a formal standards body.

A sound server is software that manages the use of and access to audio devices. It commonly runs as a background process.

Planet CCRMA Planet CCRMA software is a collection of open-source tools and applications designed for music composition, sound synthesis, and audio processing. It is primarily built on the Linux operating system and integrates various software packages, making it suitable for music researchers, composers, and educators. It is a collection of Red Hat packages to help set up and optimize a Red Hat-based workstation for audio work.

<span class="mw-page-title-main">Free and open-source graphics device driver</span> Software that controls computer-graphics hardware

A free and open-source graphics device driver is a software stack which controls computer-graphics hardware and supports graphics-rendering application programming interfaces (APIs) and is released under a free and open-source software license. Graphics device drivers are written for specific hardware to work within a specific operating system kernel and to support a range of APIs used by applications to access the graphics hardware. They may also control output to the display if the display driver is part of the graphics hardware. Most free and open-source graphics device drivers are developed by the Mesa project. The driver is made up of a compiler, a rendering API, and software which manages access to the graphics hardware.

<span class="mw-page-title-main">Audacious (software)</span> Free and open source audio player

Audacious is a free and open-source audio player software with a focus on low resource use, high audio quality, and support for a wide range of audio formats. It is designed primarily for use on POSIX-compatible Unix-like operating systems, with limited support for Microsoft Windows. Audacious was the default audio player in Ubuntu Studio in 2011–12, and was the default music player in Lubuntu until October 2018, when it was replaced with VLC.

<span class="mw-page-title-main">PulseAudio</span> Sound server for Unix-like operating systems

PulseAudio is a network-capable sound server program distributed via the freedesktop.org project. It runs mainly on Linux, including Windows Subsystem for Linux on Microsoft Windows and Termux on Android; various BSD distributions such as FreeBSD, OpenBSD, and macOS; as well as Illumos distributions and the Solaris operating system. It serves as a middleware in between applications and hardware and handles raw PCM audio streams.

A Bluetooth stack is software that is an implementation of the Bluetooth protocol stack.

nouveau (software) Open source software driver for Nvidia GPU

nouveau is a free and open-source graphics device driver for Nvidia video cards and the Tegra family of SoCs written by independent software engineers, with minor help from Nvidia employees.

<span class="mw-page-title-main">Ubuntu Studio</span> Derivative of the Ubuntu operating system

Ubuntu Studio is a recognized flavor of the Ubuntu Linux distribution, which is geared to general multimedia production. The original version, based on Ubuntu 7.04, was released on 10 May 2007.

Video Acceleration API (VA-API) is an open source application programming interface that allows applications such as VLC media player or GStreamer to use hardware video acceleration capabilities, usually provided by the graphics processing unit (GPU). It is implemented by the free and open-source library libva, combined with a hardware-specific driver, usually provided together with the GPU driver.

<span class="mw-page-title-main">Mode setting</span>

Mode setting is a software operation that activates a display mode for a computer's display controller by using VESA BIOS Extensions or UEFI Graphics extensions.

<span class="mw-page-title-main">Wayland (protocol)</span> Display system intended to replace X11

Wayland is a communication protocol that specifies the communication between a display server and its clients, as well as a C library implementation of that protocol. A display server using the Wayland protocol is called a Wayland compositor, because it additionally performs the task of a compositing window manager.

bhyve is a type-2 (hosted) hypervisor initially written for FreeBSD. It can also be used on a number of illumos based distributions including SmartOS, OpenIndiana, and OmniOS. A port of bhyve to macOS called xhyve is also available.

<span class="mw-page-title-main">DNF (software)</span> RPM package manager

DNF or Dandified YUM is the next-generation version of the Yellowdog Updater Modified (yum), a package manager for .rpm-based Linux distributions. DNF was introduced in Fedora 18 in 2013; it has been the default package manager since Fedora 22 in 2015, Red Hat Enterprise Linux 8, and OpenMandriva, and is also an alternative package manager for Mageia.

<span class="mw-page-title-main">LDAC (codec)</span> Digital audio encoding technology

LDAC is a proprietary audio coding technology developed by Sony, which allows streaming high-resolution audio over Bluetooth connections at up to 990 kbps at 32 bits/96 kHz. It is used by various products, including headphones, earphones, smartphones, portable media players, active speakers, and home theaters.

WireGuard is a communication protocol and free and open-source software that implements encrypted virtual private networks (VPNs). It aims to be lighter and better performing than IPsec and OpenVPN, two common tunneling protocols. The WireGuard protocol passes traffic over UDP.

<span class="mw-page-title-main">PipeWire</span> Media processing server for Linux

PipeWire is a server for handling audio, video streams, and hardware on Linux. It was created by Wim Taymans at Red Hat. It handles multimedia routing and pipeline processing.

References

  1. "JACK". Analysis Summary. Ohloh . Retrieved 2012-01-08.
  2. 1 2 "JACK Audio Connection Kit - License". Archived from the original on 2021-05-03. Retrieved 2021-06-08.
  3. "Open Source Awards 2004: Paul Davis for JACK". techrepublic.com.com. Retrieved 24 May 2016.
  4. "What's new in JACK2? - Linux Audio Conference 2009 paper by primary JACK2 author Stephane Letz". linuxaudio.org. Retrieved 17 February 2010.[ permanent dead link ]
  5. "JACK - Wiki - PipeWire/pipewire". PipeWire on GitLab. Retrieved 11 February 2021.
  6. "FAQ - Wiki - PipeWire/pipewire". PipeWire on GitLab. Retrieved 11 February 2021.
  7. Larabel, Michael. "Fedora 34 Gets Sign-Off For Trying To Default To PipeWire For Audio Needs". Phoronix. Phoronix Media. Retrieved 11 February 2021.
  8. "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.
  9. "Finding Origins of Latencies Using Ftrace, paper by Steven Rostedt from the Real-time Workshop 2009" (PDF). Retrieved 17 February 2010.
  10. "Real-time audio vs. 2.6, Linux Audio Conference 2006 paper by Lee Revell" (PDF). Archived from the original (PDF) on 10 November 2020. Retrieved 17 February 2010.
  11. "Real-Time Linux Wiki". Kernel.org (The Linux Kernel Archives). Retrieved 8 June 2010.