Archlinux и Jack установка, настройка и использование

В этой короткой заметке речь пойдет о Archlinux 2008.3-1 и аудиосервере Jack 0.109.2. Сразу оговорюсь, что я не профессиональный музыкант, и Jack мне понадобился только лишь для того, чтобы например, при прослушивании музыки, я мог быстренько просмотреть, что идет по ТВ(через TVTime) или мельком промотать свежескачанный фильм без необходимости закрывать плеер(Audacious 1.5.0).

Да и еще маленькая оговорочка, я не первый день в Линуксе, и раньше для этой цели мне удавалось использовать возможности плагина dmix из пакета Alsa, но в Archlinux он почему-то не заработал.

Итак приступим. Для начала синхронизируем наш репозиторий пакетов с репозиторием на сервере Archlinux и обновим устаревшие пакеты:
$ pacman -Syu

Установим alsa-lib и alsa-utils:
$ pacman -S alsa-lib alsa-utils

Затем установим сам Jack:
$ pacman -S jack-audio-connection-kit

Теперь можно выполнить установку и настройку драйверов для вашей звуковой карты, для чего нужно выполнить скрипт:
$ alsaconf

После того, как скрипт отработает можно проверить работает ли собственно звук, например так:
$ mpg123 -zZ --stereo somemusicfile.mp3
тут главное не забыть включить колонки и поднять громкость, воспользовавшись к примеру утилитой alsamixer.

Если все в порядке приступаем к конфигурированию Jack. Для начала запустим Jack в самом простом виде:
$ jackd -d alsa
у меня уже на этом этапе возникло несколько ошибок. Первая – это отсутствие прав, которая решилась добавлением «меня»:-) в группу audio:
gpasswd -a andrey audio
где andrey – имя пользователя, под которым я зарегистрирован в системе.

Еще здесь нужно отметить, что сервер Jack следует запускать с правами обычного пользователя, при запуске с правами root сервер будет выполняться с ограничениями или вообще не запустится.

Далее необходимо установить права 666 для файла /dev/shm/jack-shm-registry:
$ chmod 0666 /dev/shm/jack-shm-registry

После всех манипуляций сервер Jack наконец запустился и настроив audacious на вывод через модуль Jack-output-plugin я услышал звук, но очень ужасный с помехами и щелчками, слушать который не представлялось возможным.

Итак приступаем к настройке. Здесь следует сразу оговориться, что многие из настроек специфичны для используемой звуковой карты, поэтому скорее всего вам прийдется подбирать их индивидуально.

Настройки хранятся в файле /etc/conf.d/jack-audio-connection-kit. Здесь определяются две переменные, в которых хранятся параметры запуска демона jackd и параметры драйвера. Это переменные SERVER_PARAMS и DRIVER_PARAMS соответственно. Мне понадобилось изменить обе:

SERVER_PARAMS="-s -R -d alsa"
DRIVER_PARAMS="-d hw:0 -p 256 -n 3 -r 48000 -z s -D -H"

Эти настройки вступят в силу после перезагрузки системы, а сейчас мы можем протестировать конфигурацию выполнив команду:
$ jackd -s -R -d alsa -d hw:0 -r 48000 -p 256 -n3 -H -z s -D

Запустите несколько программ использующих звуковую карту и настройте их вывод через Jack, и вы увидите, как все они замечательно разделяют между собой звуковой адаптер.

Попробую немного подробнее рассказать о параметрах запуска сервера:
-s -R -d alsa, здесь:
-s – подавляет какой-либо вывод в момент запуска
-R – устанавливает для сервера приоритет реального времени, т.е. звуковые программы смогут максимально быстро получать доступ к устройству. Реально необходим далеко не всем(мне в том числе)
-d alsa – указывает на использование драйвера Alsa.

Теперь параметры непосредственно драйвера:
-d hw:0 -r 48000 -p 256 -n3 -H -z s -D, здесь:
-d hw:0 – указывает на звуковое устройство hw:0, оно же используется по-умолчанию.
-r 48000 – битрейт. Большинству людей, не обладающих музыкальным слухом(как и я:-)) достаточно 44100.
-p 256 – определяет периодичность вызовов сервером Jack функции process(). Должно быть кратно 2. Честно сказать я толком не понял значение этого параметра, но если при работе Jack вы периодически видите в логах сообщение наподобе такого: **** alsa_pcm: xrun of at least 0.502 msecs значит вам нужно поэксперементировать со значениями этого параметра изменяя из в меньшую сторону.
-n 3 – определяет размер буфера в периодах? Так же не совсем понятная мне опция, но именно после изменения значения по-умолчанию 2 на 3, у меня пропали щелчки и помехи. Подбирается индивидуально.
-H – включает возможность аппаратного мониторинга используемых портов. Служит для уменьшения задержек при обращении к звуковому серверу. Должна поддерживаться звуковой картой для использования.
-z s – устанавливает режим смешивания. Т.е. насколько я понял это некая обработка звука. Опция s указывает на режим shaped. При экспериментах с этой опцией я разницы в качестве звука не заметил.
-D – указывает на использование, как устройства воспроизведения так и устройства захвата. Если вы используете микрофон, самое оно:-).

Надеюсь эта заметка помогла вам все настроить. Со всеми замечания и пожеланиями прошу в комментарии, отвечу всем.

upd: на радостях не заметил глюк с проигрыванием звука из flash-роликов, если кто знает как направить этот звук на Jack, поделитесь пожалуйста.

upd 2: при загрузке системы демон jackd не запускается, также по не совсем понятной причине, если кто может помочь, подскажите в комментариях.

upd 3: обнаружилось еще несколько неприятных моментов связанных с jack – это постоянные сегфаулты Audacious и искажение звука при большой загруженности системы. Бороться с этим уже нет никакого желания, в связи с чем Jack удален и далее постараюсь настроить смешивание каналов без использования какого-либо звукового сервера, т.е. при помощи плагинов Alsa.

Ответить