Меню Рубрики

Linux jack audio server

Настройка звукового сервера JACK в Linux

Запуская в Linux программы для обработки звука или создания музыки, вы обнаруживаете, что многие из них выводят звук через программу-сервер JACK. И зачастую это для них единственный способ ввода/вывода звука. Если же ваши нужды в работе программы простираются дальше, чем просто запустить-посмотреть, то оказывается, что JACK сам по себе, по умолчанию, без тонкой настройки, не обеспечивает наилучшее качество своей работы. Звук может как бы «выпадать» оттого, что JACK не успевает вовремя выполнять свои прямые обязанности — направлять звуковые потоки из одного порта (будь он виртуальным или физическим) в другой, а также получать сигнал от входа звуковой карты и отправлять сигнал на её выход.

Управлять настройками JACK можно двояко: через опции командной строки для jackd и через утилиту с графическим интерфейсом — qJackCtl, которая входит, пожалуй, в каждый дистрибутив GNU/Linux. qJackCtl, кстати, большей частью переведена на русский, однако не везде точно. По идее, было бы достаточно и командной строки: подобрали нужные параметры, написали с ними скрипт запуска, и запускайте каждый раз скрипт перед программой, требующей работы JACK. Однако qJackCtl — не просто «запускалка» сервера, но и удобное средство перенаправления звуковых потоков из портов и в порты.

Следует помнить, что неверные настройки сервера могут положить всю систему, так что заблаговременно подготовьте пути к отступлению. В этом Вам поможет система резервного восстановления данных (http://komp-uslugi.ru/vosstanovlenie_dannyh) или помощь опытного специалиста.

Прежде чем начать настройку сервера, надо решить, в каком режиме запускать его: обыкновенном или реального времени. Последний дает меньшую задержку. Задержка (latency) — это, грубо говоря, время между посылом звука на выход и фактическим воспроизведением этого звука. Малые значения задержки важны, когда вам надо слышать сигнал именно в то время, когда он обрабатывается или возникает. Например, вы играете на MIDI-клавиатуре, и время между нажатием на клавишу и воспроизведением ноты будет зависеть от значения задержки. Другой пример — на канал, куда поступает сигнал от гитары, навешен какой-нибудь эффект и вы хотите слышать его действие сразу во время, как берете вживую аккорд. Как понимаете, здесь тоже важна малая задержка. Малая — это, скажем, меньше 10 миллисекунд (а лучше — даже меньше 5). Вместе с тем задержка не так критична в случаях, когда идеальная точность времени воспроизведения не требуется. Например, для сведения партий достаточно любой задержки, хоть 50. При записи задержка тоже не играет особой роли — записывающие многоканальные программы знают время задержки и после записи сдвигают на дорожке записанный материал на время, соответствующее задержке.

Теперь немного и упрощенно о внутреннем устройстве. У JACK есть буфер, который заполняется программой-клиентом. Этот буфер не сразу весь обрабатывается в JACK, а в несколько периодов. Чем больше периодов отведено пользователем на обработку одного буфера, тем больше задержка. Величина периода измеряется в кадрах (frames). Не следует путать кадры с сэмплами (единовременными замерами оцифрованного звука). Например, кадр 2 отсылает нас к сэмплу номер 2 левого канала и сэмплу номер 2 правого канала. Сэмплы же хранятся в буфере чередуясь: левый-правый, левый-правый. Зачем увеличивать число периодов и размер буфера? Чтобы программа-клиент успевала наполнять буфер прежде, чем JACK передаст его на выход. Расторопность программы зависит от многих факторов: от её внутреннего устройства, от работы подключенных плагинов и так далее.

И добавить в группу audio того пользователя, кому вы хотите разрешить запускать JACK в режиме реального времени (пользователь должен после этого выйти из аккаунта и снова войти в него). Затем сам сервер запускается с ключом -R, либо в qJackCtl надо поставить галочку на «Режим реал. времени» на вкладке «Настройки» одноименного окна. В новых версиях JACK, которые еще не вошли во все дистрибутивы Linux, режим реального времени включается по умолчанию, а отключается ключом -r, то есть именно маленькой буквой «r», а не большой. Большая включает, как и раньше.

Что же до целесообразности запуска в реальном времени. В этом режиме можно добиться более низкой задержки, однако повышается шанс нестабильной работы как цепочки вашего звукового софта, так и системы. Короче говоря, надо смотреть по обстоятельствам. Мне, например, в режиме реального времени работать со звуком удобнее, нежели в обычном режиме.

Источник

JACK в Linux: настройка

Пора приступить к настройкам. В примерах буду делать упор на qJackCtl, потому что в ней быстрее и «перекоммутировать» порты и настроить параметры сервера, если вас не устраивают текущие. Кроме того, qJackCtl умеет «сидеть» в области уведомлений — по умолчанию она этого не делает, но можно включить в настройках (на вкладке Misc). Главное окно qJackCtl — по-спартански простое (см. рисунок выше).

Кнопка «Загрузить» запускает сервер с текущими настройками, «Остановить» — останавливает его. Кнопка «Сообщения» открывает либо закрывает окно с подробным логом работы сервера. Кстати, особенность программы в том, что большинство кнопок главного окна действуют как переключатели видимости соответствующих кнопкам окон. Кнопка «Статус» показывает текущие настройки сервера и некоторые другие полезные сведения. Кнопка Connect — открывает окно для управления звуковыми портами; через это окно вы можете связывать JACK-клиенты между собой, перенаправляя звуковые потоки как угодно. Под кнопкой Patchbay скрывается утилита для ручной правки виртуальных разъемов сервера и создания из них наборов, ко-торые можно сохранять и потом загружать. Для загрузки такого набора при запуске qJackCtrl укажите имя файла набора в «Настройки — Параметры — Соединения — Активировать постоянный patchbay». Есть также информационная панель, а под ней — общий для всех JACK-клиентов «транспорт», то есть панель управления с кнопками воспроизведения и перемотки.

И наконец, под «Настроить» скрывается окно настроек, которое нам сейчас и важнее всего. На задержку влияют в основном два параметра: «Периодов на буфер» и «Выборок в буфере». Последний перевод неточен — правильно будет «Кадров в буфере». Чем больше кадров и чем больше периодов, тем больше задержка, но тем стабильнее звук, без щелчков. Снизу справа в отдельном поле пишется задержка с текущими настройками. Меняйте значения, пробуйте сервер с новыми настройками — одним словом, устанавливайте опытным путем, что вам больше подходит.

В главном окне, на дисплее статуса работы, вы можете заметить слева два числа: одно без скобок, другое в скобках. Они отображают количество так называемых xrun’ов — когда JACK не успевает вовремя обработать буфер, что вызывает потерю данных при их передаче. Буква X в слове xrun означает under или overrun, в зависимости от возникшего положения. Overrun — это когда возникает попытка заполнить буфер данными, превышая его размер. Underrun — когда обработка сигнала не завершилась, однако подошло время что-то проиграть на выход — в этом случае в выходной буфер помещается тишина либо случайные сэмплы. Overrun’ы обычно случаются, когда звуковая карта не успевает вовремя выводить получаемые данные. На underrun влияет уже задержка обработки звука внутри вашей звуковой программы. Число без скобок — последнее обна-руженное количество xrun’ов, а в скобках — накопительный счетчик, их общее количество со времени запуска сервера. Отсутствие xrun’ов и маленькая задержка — явления, противоречащие друг другу. Если один xrun возникает раз в несколько секунд при небольшой задержке — это приемлемо. Но если речь идет о десятках и даже сотнях xrun’ов в секунду — это перебор! Увеличивайте буферы и количество периодов — пускай растет задержка.

Прежде чем играться с настройками буферов, выберите драйвер — звуковую подсистему, с которой будет взаимодействовать JACK. Там есть список, он так и называется — «Драйвер». Для большинства Linux-систем надо выбрать ALSA. Далее, список «Интерфейс» (в командной строке сервера за это отвечает ключ —device) — надо выбрать один из портов звуковой карты (карт). Более точно входной и выходной порты задаются через списки «Устройство входа» и «Устройство выхода».

Теперь о других важных настройках. Частота дискретизации — какую установить? Не пускаясь в долгие рассуждения, скажу, что если вы делаете музыку для альбома, то выбирайте 44100 герц, а если для видео — 48000. Список «Звук» — выбирайте в нем значение «Дуплекс», тогда вы можете одновременно и записывать звук, и воспроизводить. Только старые звуковые карты не умели работать в таком режиме, либо работали с различными оговорками. Параметр «Сглаживание» — опять неточный перевод, в подлиннике dither. Сглаживание — это, скорее, interpolation. А dither — или, как говорят наши звуковики, дизер — это очень тихий случайный шум, который добавляется к звуку, чтобы при переводе сигнала из высокой битовой глубины в более низкую (например, из 32-битного плавающего формата в целочисленный 16-битный) потери уровней динамического диапазона были менее ощутимыми на слух. И вот в списке можно выбрать либо типы этого дизера, либо ничего.

«Аппаратный мониторинг» (он же «Прямой мониторинг») — прямое перенаправление входа звуковой карты на выход, фактически с нулевой задержкой. Если, конечно, аппаратный мониторинг поддерживается звуковой картой. Есть еще программный мониторинг (обычно он и работает) — в нем звуковой поток сначала копируется со входа в буфер, а потом из буфера, обработанный, уже идет на выход. Задержка при этом, конечно, увеличивается — в зависимости от микшерного движка программы и плагинов.

qJackCtrl по умолчанию записывает настройки сервера (в виде готовой командной строки его запуска) в файл $HOME/.jackdrc. По идее разработчиков JACK, если какой-то JACK-клиент запускается до запуска самого сервера, то клиент пытается загрузить сервер именно с этими настройками. На практике эта благая задумка не получила распространение. Клиенты либо предоставляют свой интерфейс настройки и запуска JACK, либо просто пишут, что у вас, кажется, не запущен JACK! Наиболее удобный, на мой взгляд, запуск уже настроенного сервера — через qJackCtl, с галкой «Запускать звуковой JACK-сервер при старте программы» на вкладке Misc окна настроек. На вкладке Настройки можно, кстати, выбирать пресеты — там есть список. Для тяжеловесных программ годятся одни настройки, для небольших могут быть удобнее другие. Конечно, вы сами должны создать эти предустановки, исходя из своего опыта.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Mac os проверка trim
  • Mac os проверка hdd
  • Mac os принудительное завершение программы
  • Mac os принудительно перезагрузить
  • Mac os принудительная перезагрузка