Настройка звукового сервера JACK в Linux
Содержание:
1.Режим реального времени (Вы читаете данный раздел);
2. Настройка.
Запуская в 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 передаст его на выход. Расторопность программы зависит от многих факторов: от её внутреннего устройства, от работы подключенных плагинов и так далее.
Так запускать ли JACK в режиме реального времени и как? На вопрос «как» ответить просто - надо в файле /etc/security/ limits.conf прописать следующее:
И добавить в группу audio того пользователя, кому вы хотите разрешить запускать JACK в режиме реального времени (пользователь должен после этого выйти из аккаунта и снова войти в него). Затем сам сервер запускается с ключом -R, либо в qJackCtl надо поставить галочку на «Режим реал. времени» на вкладке «Настройки» одноименного окна. В новых версиях JACK, которые еще не вошли во все дистрибутивы Linux, режим реального времени включается по умолчанию, а отключается ключом -r, то есть именно маленькой буквой «r», а не большой. Большая включает, как и раньше.
Что же до целесообразности запуска в реальном времени... В этом режиме можно добиться более низкой задержки, однако повышается шанс нестабильной работы как цепочки вашего звукового софта, так и системы. Короче говоря, надо смотреть по обстоятельствам. Мне, например, в режиме реального времени работать со звуком удобнее, нежели в обычном режиме.
1.
2. Настройка.
Запуская в 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 передаст его на выход. Расторопность программы зависит от многих факторов: от её внутреннего устройства, от работы подключенных плагинов и так далее.
Так запускать ли JACK в режиме реального времени и как? На вопрос «как» ответить просто - надо в файле /etc/security/ limits.conf прописать следующее:
@audio - rtprio 99
@audio - memlock unlimited
@audio - memlock unlimited
И добавить в группу audio того пользователя, кому вы хотите разрешить запускать JACK в режиме реального времени (пользователь должен после этого выйти из аккаунта и снова войти в него). Затем сам сервер запускается с ключом -R, либо в qJackCtl надо поставить галочку на «Режим реал. времени» на вкладке «Настройки» одноименного окна. В новых версиях JACK, которые еще не вошли во все дистрибутивы Linux, режим реального времени включается по умолчанию, а отключается ключом -r, то есть именно маленькой буквой «r», а не большой. Большая включает, как и раньше.
Что же до целесообразности запуска в реальном времени... В этом режиме можно добиться более низкой задержки, однако повышается шанс нестабильной работы как цепочки вашего звукового софта, так и системы. Короче говоря, надо смотреть по обстоятельствам. Мне, например, в режиме реального времени работать со звуком удобнее, нежели в обычном режиме.