JACK — это демон профессионального звукового сервера, который обеспечивает соединения в режиме реального времени с малой задержкой для аудио и MIDI-данных между приложениями, реализующими его API. API можно использовать через JACK1 или JACK2.
JACK предоставляет базовую инфраструктуру для взаимодействия аудиоприложений друг с другом и с аудиооборудованием. Благодаря JACK пользователи могут создавать мощные системы для обработки сигналов и производства музыки. Jack 1 и Jack 2 являются эквивалентными реализациями одного и того же протокола.
JACK2, также известный как jackdmp, — это C++-версия аудиосервера JACK с малой задержкой для многопроцессорных машин. Это новая реализация основных функций сервера JACK, направленная на снятие некоторых ограничений конструкции JACK1. Система активации была изменена на модель потока данных, а методы программирования без блокировок для доступа к графу были использованы для создания более динамичной и надежной системы.
• использует новую модель активации клиентов, которая позволяет одновременное выполнение клиентов (на SMP-машине), когда в графе существуют параллельные клиенты (клиенты с одинаковыми входными данными). Эта модель активации позволяет лучше использовать доступный ЦП на машине smp, но также работает на машине с одним процессором.
• использует безблокировочный способ доступа (чтения/записи) графа клиента, что позволяет выполнять соединения/отключения без прерывания аудиопотока. В результате соединения/отключения проходят без сбоев.
• может работать в двух разных режимах на уровне сервера:
- синхронная активация: в заданном цикле сервер ожидает завершения работы всех клиентов (аналогично обычному jackd)
- асинхронная активация: в заданном цикле сервер не ждет завершения работы всех клиентов и использует выходной буфер, вычисленный в предыдущем цикле.
Дополнительные сведения о различиях между JACK1 и JACK2 см.https://github.com/jackaudio/jackaudio.github.com/wiki/Q_difference_jack1_jack2
Он часто используется с внешним интерфейсом, таким как qjackctl.