JACK Audio Connection Kit: Профессиональный звуковой сервер для Unix-подобных систем
JACK Audio Connection Kit
JACK Audio Connection Kit: профессиональный звуковой сервер для Linux и Unix. Низкая задержка, соединение аудио/MIDI, поддержка ALSA, CoreAudio и др. Бесплатный, GPL.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Профессиональный звуковой сервер для Unix-подобных операционных систем.
Professional sound server daemon for Unix like operating systems
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 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) 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. 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. 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. The use of PipeWire as the default implementation of JACK is the default on Fedora 34 and newer.
Планирование с низкой задержкой
Требования к планированию JACK для достижения достаточно низких задержек стали одним из ключевых факторов, стимулировавших усилия по оптимизации работы в реальном времени для серии ядра Linux 2.6, чья первоначальная производительность в отношении задержек оказалась разочаровывающей по сравнению с более старой серией 2.4. Работа по настройке для работы в реальном времени привела к многочисленным улучшениям планировщика в основном ядре и созданию ветви rt для более глубокой оптимизации в версии 2.6.24, а затем и патча CONFIG PREEMPT RT.
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, whose initial latency performance had been disappointing compared to the older 2.4 series. 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.