Введение

Профессиональный звуковой сервер для Unix-подобных операционных систем.

JACK Audio Connection Kit (или JACK; рекурсивный акроним) — это профессиональный звуковой сервер, API и набор реализаций демонов, обеспечивающих соединения в реальном времени с низкой задержкой для аудио- и MIDI-данных между приложениями. JACK был разработан сообществом разработчиков с открытым исходным кодом под руководством Пола Дэвиса (который получил премию Open Source Award в 2004 году за эту работу) и с момента своего создания в 2002 году является ключевым элементом инфраструктуры и де-факто стандартом для профессионального аудио-программного обеспечения на Linux. Сервер является свободным программным обеспечением, лицензированным под GPL 2.0 или более поздней версии, а библиотека — под LGPL 2.1 или более поздней версии. JACK может использоваться с ALSA, PortAudio, CoreAudio, FFADO и OSS в качестве аппаратных бэкэндов. Кроме того, существует фиктивный драйвер (полезен, если не требуется звуковой вывод, например, для автономного рендеринга) и драйвер Audio over UDP. Одна или обе реализации могут работать на Linux, macOS, Solaris, Windows, iOS, FreeBSD, OpenBSD и NetBSD. API JACK также реализован в PipeWire для обратной совместимости как полноценный провайдер замены для клиентов JACK, преобразующий вызовы API JACK в эквивалентные вызовы PipeWire. При использовании в качестве замены ALSA и PulseAudio он может объединить различные звуковые серверы и API, обычно встречающиеся на компьютере, и обеспечить лучшую интеграцию между различными программами. PipeWire также заявляет о добавлении ряда функций и устранении ряда ограничений по сравнению с JACK. Использование PipeWire в качестве реализации JACK по умолчанию является настройкой по умолчанию в Fedora 34 и более новых версиях.

Планирование с низкой задержкой

Требования к планированию JACK для достижения достаточно низких задержек стали одним из ключевых факторов, стимулировавших усилия по оптимизации работы в реальном времени для серии ядра Linux 2.6, чья первоначальная производительность в отношении задержек оказалась разочаровывающей по сравнению с более старой серией 2.4. Работа по настройке для работы в реальном времени привела к многочисленным улучшениям планировщика в основном ядре и созданию ветви rt для более глубокой оптимизации в версии 2.6.24, а затем и патча CONFIG PREEMPT RT.