JACK Audio Connection Kit аудиосервер с низкими задержками.
JACK Audio Connection Kit (чаще просто JACK) — звуковой сервер-демон, позволяющий с низкой задержкой соединять между собой так называемые «джэкифицированные» («jackified») приложения и становится возможной передача как аудио-, так и MIDI-данных.
Название «JACK Audio Connection Kit» переводится на русский язык как «Набор для соединения аудио Джэк» и является рекурсивным акронимом.
JACK основа всего профессионального музыкального софта для Linux.
JACK играет роль общей шины с низкими задержками для всех аудиопрограмм.
В отличие от aRTs, EsounD и других звуковых серверов JACK обращает внимание в первую очередь именно на обеспечение минимальных задержек звукового потока.
Это накладывает серьёзные требования как на использующие JACK программы (как правило, эти программы используют отдельную нить работающую на приоритете реального времени с блокированием всей памяти от свапа) так и на сам сервер JACK.
JACK предоставляет так называемые "порты" - это виртуальные соединительные точки, к которым могут присоединяться разные программы. Порты бывают двух видов: входные (по аналогии с розеткой) и выходные (по аналогии с сетевой вилкой). При запуске JACK создаёт некоторое количество входных и выходных портов, в зависимости от возможностей Вашей звуковой карты.
Входные порты используются для вывода звука (т.е. программа туда отправляет аудиопоток), а выходные - для оцифровки звука (источник записи (Line-In, Mic-In) определяется настройками микшера). Также порт может предназначаться как для цифровых аудиопотоков, так и для потока MIDI событий.
Каждая программа, в идеале, не только использует существующие порты, но также создаёт свои.
Например, MIDI секвенсер
Каждый выходной порт может быть соединен с неограниченым количеством входных портов. Например, если установить источник записи в микшере на микрофон, затем соединить выходной порт "alsa_pcm/Out" с входным портом "alsa_pcm/In", мы услышим в наушниках (или в колонках) то, что "слышит" микрофон.
Примеры применения JACK
Предположим, нам нужно записать многоканальную композицию с вокалом и синтезатором в качестве инструментов. У нас есть MIDI-клавиатура, программный (виртуальный) синтезатор на компьютере, а также микрофон, подключённый ко входу звуковой карты. По каким-то причинам мы хотим записать обе дорожки одновременно.
Тогда, с помощью JACK, мы можем подключить:
► MIDI-клавиатуру к виртуальному синтезатору;
► Звуковой выход синтезатора к аудиокарте (чтобы слышать, что играем);
► Звуковой выход синтезатора к соответствующей дорожке программы звукозаписи;
► Звуковой вход аудиокарты (туда подключён микрофон) к соответствующей дорожке программы звукозаписи.
Соответственно, когда мы нажмём на запись, две эти дорожки будут записываться синхронно.
Дублированный перевод
Пример не связан с записью музыки. Благодаря тому, что JACK поддерживается любым из известных в Linux проигрывателей видео (и аудио-проигрывателей, разумеется), можно всё так же подключить микрофон к дорожке программы звукозаписи, но, кроме того, ещё и подключить эту программу к проигрывателю видео. Таким образом можно смотреть фильм и переводить его. Причём перемещение по фильму приведёт к аналогичному перемещению по записываемой звуковой дорожке и наоборот.
Еще пример... Вы используете MIDI секвенсор Rosegarden и хотите записать результирующую музыку в файл формата OGG Vorbis.
Чтобы достичь этого, мы делаем так:
► Запускаем Rosengarden, он создаёт (среди прочего) выходной MIDI порт
► Запускаем fluidsynth, он создаёт входной MIDI порт
► Соединяем выход Rosengarden на вход Fluidsynth (в QJackCtl это делается простым перетаскиванием выходного порта на соответствующий вход).
► Запускаем, к примеру,
► Стартуем запись в Audacity после чего запускаем Rosegarden на проигрывание.