Звук в Линуксе/ALSA и звуковой сервер JACK

Пользователям

править

Музыкантам

править

Создание звукового сервера реального времени JACK стало возможным благодаря появлению новой звуковой подсистемы Linux — ALSA, наконец-то обеспечивающей возможность обмена между приложениями звуковыми данными с гарантируемой предельно низкой задержкой. С ядрами Linux серии 2.4 ALSA работает как дополнительно устанавливаемый модуль. В ядрах серии 2.6 ALSA является стандартной звуковой подсистемой.

Существует небольшая разница в реализации исправлений для ядер серии 2.4 и ядер серии 2.6. В настоящее время рекомендуется использовать специально собранное ядро, находящееся в пакете kernel-image-wks*. Его установка также подразумевает установку всех дополнительных модулей к ядру, таких как драйвера к видеокартам nVidia.

Звуковой сервер JACK доводит низколатентную концепцию ALSA до логического завершения, позволяя запущенным как его клиенты приложениям обмениваться звуковыми данными с задержкой вплоть до 2 мс. Существует уже несколько десятков таких приложений, полный и постоянно обновляемый список которых находится по адресу http://jackaudio.org/applications

Звуковой сервер запускается при помощи команды jackd (от суперпользователя) или jackstart (от непривелегированного пользователя. Справку по параметрам запуска можно получить, запустив любую из команд с ключом --help, либо вызвав на экран man-страницу.

Примечание: если JACK не запускается на ALSA-поддерживаемой звуковой карте, попробуйте явно указать параметры -p и -n и поэкспериментировать с их значениями. Например -p 256 -n 3 для звуковой карты на чипсете ymfpci.

Более простой способ запустить JACK — воспользоваться графической оболочкой к нему. Эта программа называется QJackCtl (пакет qjackctl) и помимо собственно выполнения функции запуска и останова сервера обладает рядом дополнительных возможностей:

  • диагностика работы сервера;
  • статистика работы сервера;
  • визуальное соединение звуковых приложений;
  • визуальный коммутатор MIDI-приложений.

QJackCtl также позволяет выполнять заранее написанные сценарии (на любом языке) после запуска и остановки сервера JACK.

В JACK также реализован механизм JACK Transport, позволяющий из одного JACK-клиента (ведущего, master) управлять воспроизведением данных в другом JACK-клиенте (ведомом, slave). Это делает возможным, к примеру, синхронный запуск воспроизведения в драм-машине и MIDI-секвенсере.