JACK 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. The API can be used through either JACK1 or JACK2.
JACK provides a basic infrastructure for audio applications to communicate with each other and with audio hardware. Through JACK, users are enabled to build powerful systems for signal processing and music production. Jack 1 and Jack 2 are equivalent implementations of the same protocol. More Info »
JACK2 aka jackdmp is a C++ version of the JACK low-latency audio server for multi-processor machines. It is a new implementation of the JACK server core features that aims at removing some limitations of the JACK1 design. The activation system has been changed for a data flow model and lock-free programming techniques for graph access have been used to have a more dynamic and robust system.
• uses a new client activation model, that allows simultaneous client execution (on a SMP machine) when parallel clients exist in the graph (client that have the same inputs). This activation model allows to better use available CPU on a smp machine, but also works on mono-processor machine.
• uses a lock-free way to access (read/write) the client graph, thus allowing connections/disconnection to be done without interrupting the audio stream. The result is that connections/disconnections are glitch-free.
• can work in two different modes at the server level:
- synchronous activation: in a given cycle, the server waits for all clients to be finished (similar to normal jackd)
- asynchronous activation: in a given cycle, the server does not wait for all clients to be finished and use output buffer computed the previous cycle.
For more information on the differences between JACK1 and JACK2, see https://github.com/jackaudio/jackaudio.github.com/wiki/Q_difference_jack1_jack2
It is often used with a frontend such as qjackctl.