Вступление

Однажды давно (полгода назад) мне было немного скучно и я занялся написанием пары статей в блог по указанной теме. Оригинальные статьи писались для ресурса basslife.

Оригинальные записи:

Здесь я хочу их продублровать по двум причинам:

  1. Потешить себя лишней записью в бложике.
  2. Объединить три статьи в одну.
  3. Исправить недочёты, дополнить описания, получить отзывы от других людей.

Хардварь

Для записи звука в Linux (да и не только в Linux) нам потребуется некоторое количество аппаратного обеспечения. Подразумевается, что базовый набор для игры на инструменте у нас есть (инструмент, комбарь и кабель для подключения).

Компьютер.

Не то чтобы нужна ужасная производительность, но некоторые программы эмулируют эффекты, а это - достаточно затратно (особенно в режиме реального времени). Мне для счастья хватает Asus X501A для простой записи — да, но как только дело касается достаточного количества виртуальных инструментов, всё начинает жутко тормозить.

Способ доставки звука.

Например, звуковая карта. Обычно крестьяне вроде меня пользуют простые решения в виде внешних USB-карт. В моём случае это Alesis IO4. В любом случае тут есть один важный пункт — карта должна работать под Linux! Нельзя просто так взять и купить звуковую карту. Желательно как минимум прочитать отзывы в интернете. Могут понадобится знания Буржуйского Языка (но мы же уже как-то поставили Linux на свою несчастную ЭВМ? :) ). Если есть возможность включить и проверить™, то лучше так и сделать. Ещё одно важно замечание: карта вполне может работать под Linux, но все ваши могучие битрейты и прочие запредельные характеристики будут ограничены сверху возможностями системы - надо быть к этому готовым.

Пара лишних инструментальных кабелей.

Даже если Вы не пользуетесь примочками, то вполне вероятно, что Ваша звуковая карта умеет мониторинг - уже лишний кабель, а если всё сложно и потребуется страшная схема - то и не один.

Программочки

Вот тут-то и начинается Безудержное Веселье.

Realtime kernel

Те, кто не очень понимают, что это и зачем, могут прочитать вот эту замечательную книгу. Я сам её не читал, но люто рекомендую :).

В Debian пакет называется linux-image-rt-<ваша архитектура>. Если собираемся записываться - перезагружаемся и выбираем в загрузчике наше RT-ядро.

Jack Audio Connection Kit (JACK)

Мой любимый пункт. Что это и с чем жуют в подробностях написано на Arch Wiki. Я расскажу вкратце.

Jack - звуковой сервер с низкой задержкой. Умеет работать поверх всего (вроде даже c Pulseaudio научился работать). Итак, у нас есть звуковой сервер. “Зачем?” — спросите вы. А я расскажу. Допустим, что наши программы не просто так швыряют звук во всё что ни есть в системе, а есть клиенты. Клиенты нашего звукового сервера. Будучи клиентами, приложения имеют входы и выходы. А что делают со входами и выходами? Правильно, соединяют. Но если обычно ответственность за соединение всего и вся висит на приложении, то тут коммутацией занимается сервер. Это в свою очередь позволяет нам соединять что угодно с чем угодно в произвольном порядке, составляя любую нужную нам цепь. Круто, да?

Итак, про сам Jack-сервер мы немного узнали. Но как нам прожевать эту магию? Правильный ответ — с болью.

Базовую настройку этой радости я описывать не буду — читайте на Arch Wiki.

Отвечу на свой же вопрос, возникший у меня однажды. Много позже, когда вы уже запустите сервер и будете развлекаться с эффектами, вы спросите: “Что такое XRUN и почему когда он красненький и больше нуля, то всё падает?”. Так вот, когда сервер принимает звук на обработку, информация поступает к нему выборками по сколько-нибудь байт. В случае, если сервер не успевает обработать выборку, он пропускает текущую и принимается за следующую. Так вот такие ошибки и обозначаются волшебным числом XRUN. Впринципе, само наличие таких ошибок не страшно - главное, чтобы оно не увеличивалось с постоянной скоростью, иначе Jack-сервер упадёт. Как бороться с этими ошибками? Увеличивать размер выборки. Но latency будет расти. Вот такая вот печаль.

Ладно, отвлеклись на XRUN. Теперь продолжим про запись звука.

QJackCtl

QJackCtl - графическая утилита, написанная с использованием библиотеки Qt. Без этой утилиты использование Jack является болью. Особенно для тех, кто с ним мало знаком. Во всех известных мне дистрибутивах пакет так и называется — qjackctl.

QJackCtl Screenshot

  1. Настройка

    Первая полезная функция этой улититы - настройка самого Jack. После запуска QJackCtl нажимаем на Параметры. Про “магические настройки” смотрите в Arch Wiki. Пока что нас будут интересовать поля Интерфейс и Драйвер.

    В большинстве случаев в поле Драйвер должно быть написано “alsa” (все буквы в нижнем регистре - это важно). Скорее всего у Вас это поле уже заполнено как надо.

    Поле Интерфейс - то, что нам нужно. Тут мы должны проставить нашу звуковую карту. Для этого тыкаем на стрелку вправо, которая находится рядом с самим полем. У меня там есть пункт “IO4”. У вас что-то своё.

    В правом нижнем углу будет приблизительная задержка. На своём железе с RT-ядром и прочими фиксами у меня задержка в 2 мс почти без XRUN’ов. И это с процессорами эффектов, о которых позже.

    Для любителей посинтезировать клавишами нужно поправить ещё одно поле - Драйвер MIDI. Там вместо “нет” нужно поставить либо “raw” либо “seq”. Про драйвер MIDI для JACK можно почитать вот тут.

    После того, как мы настроили Jack, надо его запустить. Для этого надо нажать Запустить.

  2. Соединения

    Для работы с соединениями есть кнопка Соединения. Удивительно, не правда ли? Итак, открывшееся окно у нас поделено на две части. Левая - входы. Правая - выходы. Остальное достаточно интуитивно.

    QJackCtl connections Screenshot

    Стоит отметить, что system — это входы и выходы звуковой карты. Остальное — различные приложения. Три основные вкладки — Звук, MIDI и ALSA. Для работы с обычными клиентами нам нужна вкладка Звук. Я ещё иногда подключаю USB-Midi клаву — для таких соединений нужна вкладка MIDI.

  3. Коммутатор

    Каждый раз проставлять соединения? Может быть. А если их 50? 100? Тут-то нам на помощь и приходит Коммутатор.

    Коммутатор позволяет завадавать схемы соединений и сохранять их в файлы. Для запоминания этого дела используются имена клиентов и названия их входов/выходов. Для добавления соединения тыкаем на добавить, выбираем приложение и вход/выход. Затем соединяем нужные нам приложения и нажимаем сохранить. Остальное достаточно интуитивно.

    QJackCtl commutator screenshot

Ещё немного про JACK

Есть ещё одна функция у Jack, о которой я хочу рассказать. И эта функция касается времени и темпа.

Для тех приложений, у которых есть темп и/или текущее время (положение в проигрываемой композиции), Jack предоставляет возможность обмена этой информацией. Для этого задаётся один master, который и определяет общий темп и текущее время.

Например, используя драммашину и лупер (о которых я расскажу далее), необходимо их настраивать так, чтобы одно работало синхронно с другим. Для этого драммашина выставляется в master, а в лупере нужно поставить галочку “синхронизация с Jack” - таким образом лупер будет синхронизироваться с драммашиной. Очень удобно.

На всякий случай укажу страницу, на которой есть список приложений, работающих с Jack Audio Connection Kit: http://jackaudio.org/applications.

Микшер

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

Сам по себе Jack Mixer достаточно прост. Можно даже сказать, что он примитивен. Но для работы с Jack его вполне достаточно.

Jack Mixer screenshot

В Mixer’е есть два вида каналов: входные и выходные. Каждый из них может быть как стерео, так и моно. Выходными каналами я не пользуюсь (кроме MAIN - общий канал). Входные же использую для подключения в них приложений. При этом каждый из каналов имеет свой выход.

Вообще, в идеале всё можно подключать через Mixer, но лучше найти оптимальную схему. Настройки Mixer’а можно сохранять в файл.

Важное замечание: jack-mixer будучи включенным нарушает работу некоторых программ, среди которых Ardour, так что я от микшера отказался.

Графический коммутатор

Графический коммутатор предназначен для тех, кто любит поперетаскивать соединения. Для этого существует приложение Patchage. Достаточно красивая утилита, интерфейс интуитивен. Но в её удобстве я немного сомневаюсь.

Patchage screenshot

LADSPA Host

LADSPA — это как VST, только под ринупс. Соответственно для LADSPA должен быть хост. Одним из таких является Jack Rack. Можно эффекты в цепь добавлять, можно удалять, можно настраивать. Достаточно прост.

Jack Rack screenshot

Метроном

В качестве метронома я использую Gtklick. Снова очень простая программа. Даже описывать не буду.

Gtklick screenshot

Тюнер

Тюнеров под Jack как и метрономов много. Я пробовал некоторые из них и более всего мне понравился Lingot.

Lingot screenshot

DAW

Среди DAW для Jack мне известны Ardour и Traverso. С натяжкой таковым можно считать ещё и QTractor, но его лучше назвать audio/midi секвенсором.

Я пользуюсь Ardour, поэтому считаю его лучшим :) . Описывать подробности не буду, ибо их там ОЧЕНЬ много, но скажу, что кто-то в интернетах называл Ardour похожим на Pro Tools. Не знаю, насколько это правда, потому что в жизни не видел Pro Tools.

Ardour screenshot

Драммашина

Hydrogen

Так как редко у кого есть персональный ударник с собой и установкой 24/7, удобно иметь драммашину. Единственным нормальным творением под Jack такого рода является Hydrogen.

Умеет много чего приятного, в том числе делиться текущими временем и темпом с другими Jack-приложениями.

Hydrogen screenshot

Но тут есть одно замечание. У меня не заработало переключение на Jack из гуйца. Для того, чтобы Hydrogen стал работать так, как нам надо, нужно открыть файл ~/.hydrogen/hydrogen.conf. Там знакомый многим XML. Ищем строку

<audio_driver>Alsa</audio_driver>

и заменяем её вот этой

<audio_driver>Jack</audio_driver>

Если хотим сделать его master’ом, то тыкаем на J.MASTER, если хотим вообще отключить транспорт времени и темпа, то тыкаем на J.TRANS (при этом звук будет всё равно идти через Jack).

Drumgizmo

Ещё одна драммашина. Представляет из себя LV2-плагин с миди входом и аудио выходом, так что как в Hydrogen не получится записать партию в самой программе, зато удобно использовать с Ardour, прописывая партию в midi дорожке.

Drumgizmo screenshot

Заметно выделяется тем, что использует неимоверное количество памяти и процессора, иногда даже Ardour вылетает из-за него.

На офф. сайте есть три установки для скачивания, но единственная более-менее нормальная распространяется под лицензией, не разрешающей коммерческое использование.

Процессоры эффектов

По моему опыту, записать бас достаточно просто: берём линейный сигнал, проходимся по нему немного компрессором и готово. А вот с гитарастами всё намного тяжелее. Дист, воткнутый в линию выдаёт жужжание и лютый треск, а на клине слушать линейный сигнал гитары просто невозможно. Надо что-то делать с этим. Вот как раз для этого я обычно использую процессоры эффектов.

Мне известно две более-менее продвинутых программы: Guitarix и Rakarrack.

Guitarix

Guitarix screenshot

Для тех, кто знаком с GuitarRig интерфейс покажется знакомым. Да и функции примерно такие же. Кабинеты, усилители, перегрузы… Всё в этом духе. Незаменимая вещь. Есть несколько встроенных пресетов, которые хорошо звучат.

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

Rakarrack

Rakarrack screenshot

Rakarrack имеет свои особенности.

Первая особенность - настройки трогать руками не стоит (те, которые Settings → Preferences), потому что вероятность падения в таком случае возрастает многократно.

Вторая особенность - совершенно безумные эффекты, например генератор шума на основе сигнала или “имитация” человеческого голоса на основе всё того же сигнала. 60 пресетов из коробки, полных космических цепей.

Если вы любите играть Ambient, но не умеете или не имеете фортепиано, то Rakarrack - то, что вам нужно.

Rakarrack screenshot

Синтезаторы

Тут я, к сожалению, совсем не в теме. Ибо не пользую особо. Единственное приложение, которое я хоть иногда запускаю — Qsynth, который является графической оболочкой для fluidsynth. Пока без скриншотиков и инструкций, ибо лень. Может быть потом как-нибудь доделаю. В любом случае, синтезаторами я не пользуюсь, да и не думаю, что fluidsynth является лучшим решением.

Calf

Стоит отдельного упоминания. Calf — пакет студийных эффектов в виде LV2-плагинов. Среди них есть несколько синтезаторов, компрессор, delay, reverb и многие другие. Сейчас полностью перешёл на эти обработчики.

Convolver

Многим, работавшим со всякими Guitar Rig’ами и Amplitube’ами эта штука известна как Impulse Response (что не совсем верно).

Я особо в матане не разбраюсь, поэтому пояснить про математическую основу не могу. Изучайте матан!

Если объяснять для таких людей как я, то такие обработчики моделируют прохождение сигнала через моделируемую цепь с помощью заранее записанного отклика.

В linux мне известно два convolver’а: встроенный в Rakarrack и ir.lv2. Rakarrack’овый меня не очень устраивает, поэтому я пользуюсь ir.lv2.

Как видно из названия, ir.lv2 является lv2 плагином, что делает его использование очень удобным вместе с Ardour. Использовать достаточно просто, нужно только найти файлы отклюков. Настройки пока что не особо ковырял, но хочу обратить внимание на то, что ползунок Dry надо сразу установить в 0, потому как сырой сигнал нас в большинстве случаев не интересует :)

Конкретно я использую ir.lv2 для моделирования гитарных и басовых усилителей, файлы откликов которых легко гуглятся.

Looper

Луперов под Jack тоже предостаточно. Даже в Rakarrack’е есть свой. Но я более всего пользуюсь SooperLooper.

SooperLooper screenshot

Пользоваться SooperLooper не очень просто, поэтому я напишу пару строк на эту тему.

Во-первых, для особых любителей скажу, что нужное нам приложение называется в системе не sooperlooper, а slgui, ибо сам sooperlooper - демон.

После запуска мы увидим одну пустую дорожку и общие настройки сверху. SooperLooper умеет полноценно обрабатывать midi-события, так что если у вас завалался midi-контроллер — возрадуйтеся. У меня не завалялся :( .

Я опишу тот случай, когда мы пользуем лупер с Hydrogen.

Первым делом проставим в поле sync to значение Jack/Host. Темп у нас автоматически проставится такой же, как и в Hydrogen. Далее выставляем quantize : cycle. Теперь к настройкам дорожек. Там надо ткнуть на sync и play sync. В таком случае у нас дорожка будет автоматически выравниваться с Hydrogen’ом. Пожалуй, всё.

Как работают кнопочки record, overdub и прочие большие синенькие кнопки, предлагаю разобраться экспериментально :) .

Визуализация

В этом пункте я упомяну приложения, которые делают на основе звука картинку.

Я пробовал несколько таких, но заработал у меня нормально только ProjectM. Для работы с Jack есть отдельный пакет — projectm-jack.

Программа достаточно тривиальна. Для того, чтобы попасть в меню, надо нажать Ctrl-M, это — единственное, о чём здесь стоит упомянуть. Посмотрите видосики или скриншотики на официальном сайте. Есть очень даже симпатичные визуализаторы.

Примеры записей

Пример композиции, записанной в Linux.

Ссылка

Записывал я сам специально для Basslife.ru

  • Запись не подвергалась никакой обработке (разве что компрессором бас поджал). Все дорожки оставлены в том виде, в котором были записаны.
  • Все инструменты (бас и гитара) были подключены напрямую в звуковую карту - никаких микрофонов или чего-то ещё.
  • Для гитарного звука использовались Rakarrack (чистый) и Guitarix (перегруженный).
  • Бас писался “как есть”.
  • На барабанах играет Hydrogen.

Ещё один пример композиции

Ссылка

Снова я писал сам все инструменты.

  • Общий микс обработан ревербом и V-образным эквалайзером.
  • Все инструменты писались через ir.lv2 с использованием откликов достаточно дорогих усилителей :)
  • Бас слегка обработан компрессором.
  • На соло-участке гитары висит delay.

Мои вопросы

В этой секции я буду описывать те вопросы, ответы на которые не смог найти сам. Если кто-то сможет мне с этим помочь, буду очень благодарен.

  1. Есть ли LV2-плагин preverb’а?