Расскажу, как минимальными усилиями заставить пингвина играть ваши ноты. Да, эта статья не о записи звука, сведении, мастеринге, а о таком замечательном инструменте как rosegarden – midi-секвенсоре, нотном редакторе.
Что имеем
Чтобы писать ноты и потом их воспроизводить не нужно RT ядро (реального времени) и какая-то особая настройка системы. Что важно, так это через что система выводит звук. В ОС Линукс в основном, по умолчанию, используется либо pulseaudio, либо более современная pipewire. Узнать, какая звуковая подсистема используется можно c помощью утилиты alsa-info (поставляется с пакетом alsa-utils):
alsa-info.sh --stdout | grep -B 1 "Running - Yes"
Если у вас используется pulseaudio советую, наконец уже, обновить дистрибутив (pipewire по умолчанию используется в современных версиях популярных linux'ов) или установить pipewire вручную (хотя это уже не самые минимальные усилия), ведь это вещь крайне замечательная, с которой всё работает без проблем, "из коробки"; с ней даже без jack'а (ещё одна звуковая подсистема) можно музыку играть, но его мы всё равно установим, т.к. много музыкального софта работает через оный.
Что нужно
Нужно, собственно, установить следующие пакеты (нужные зависимости подтянутся, в вашем дистрибутиве названия могут отличаться, хотя, скорее всего, они именно такие):
qjackctl qsynth rosegarden
Также понадобится soundfont ("звуковой шрифт") – набор сэмплов для midi-инструментов. Можно поставить "стандартный" soundfont-fluid – так пакет называется в arch-based дистрибутивах, в debian-based – fluidr3mono-gm-soundfont, можно поискать в репозиториях titanic (soundfont-titanic в AUR), или найти в интернете какой-нибудь .sf2 файл.
Первый запуск
qjackctl
Запускаем qjackctl, видим примерно следующее окошко:
Останавливаем (кнопка "Стоп"), если автоматически запустился звуковой сервер; открываем "Параметры". Во вкладке "Общие -> Основные" нас интересует две опции: "Драйвер" и "Драйвер MIDI", устанавливаем их "alsa" и "raw" соответственно, остальное – по мере надобности:
Далее переходим во вкладку "Разное" и проставляем/убираем галочки, чтобы jack без лишних слов запускался и останавливался (это нужно, чтобы упростить запуск rosegarden'а) – как показано стрелочками на скриншоте:
Нажимаем "Применить", "ОК" и выходим в главное окошко, нажимаем "Запустить". Ошибки, которые могут возникнуть будут описаны в конце статьи, если вашей ошибки там нет – пишите в комментарии, добавлю в статью.
qsynth
Далее нужно запустить и настроить qsynth. Открываем настройки (которые "Setup"):
Во вкладке MIDI устанавливаем MIDI Driver как "alsa_seq", запоминаем, "MIDI Client Name" (его можно поменять).
Во вкладке Audio устанавливаем Audio Driver как "jack", запоминаем "Jack Client Name" (тоже можно поменять название).
Не забываем про галочки для автоматического соединения входов midi и выходов jack.
Далее во вкладке Soundfonts нажимаем кнопку "open". Если сэмплы (soundfont) установлены с репозитория, они, как правило, располагаются в каталоге "/usr/share/soundfonts/". Если с интернета – там, куда скачали. Ищем .sf2 файлы.
Все, тыкаем "OK", qsynth может сказать, что нужно перезапустить движок – соглашаемся.
rosegarden
Jack и Qsynth запущены и исправно работают – теперь можно открыть наш rosegarden. Чтобы подключиться к midi-синтезатору, нужно открыть "Управление MIDI-устройствами" (левая верхняя стрелочка на скриншоте) и из доступных выходов выбрать название midi-клиента qsynth, которое мы запомнили ранее. Чтобы убедиться, что звук и midi в порядке, наводим курсор на значки клавиатуры и звуковой волны в правой нижней части окна.
Теперь можно пользоваться! В последующие запуски rosegarden будет автоматически подключаться к выбранному устройству midi (если не подключается, в настройках есть пункт для автоподключения: Правка -> Параметры -> MIDI -> MIDI Sync -> Автоматически соединять выход со всеми используемыми устройствами). Интерфейс интуитивно понятный – с основами разобраться хватит часу, наводя и тыкая на разные кнопки, однако есть несколько фишек, которые реализованы достаточно нелогично, но об этом нужно рассказывать в отдельной статье.
Небольшой скрипт
Чтобы каждый раз не открывать и не закрывать qsynth и qjackctl вручную достаточно написать небольшой скрипт:
#! /bin/sh
qjackctl & sleep 1 # если qjack/qsynth запускаются долго
qsynth & sleep 1 # единицу нужно заменить на время их запуска
rosegarden $1
killall qsynth
killall qjackctl
сохранить в файл, например, "rg" и выдать права на запуск:
chmod +x rg
сделать ярлык/значок запуска на рабочий стол.
Ошибки
не запускается сервер jack
Проблемы могут быть самые разные – нужно смотреть логи (или "Сообщения" в окошке qjackctl). Самые распространенные – это dbus и pulseaudio. Pulseaudio можно смело отключать/приостанавливать перед запуском qjackctl: pasuspender -- qjackctl
(pasuspender – часть пакета pulseaudio-utils) или pulseaudio --kill
. D-Bus – нужно убрать галочки в настройках qjackctl: Параметры -> Разное -> Включить интерфейс D-Bus и Параметры -> Разное -> Включить интерфейс jack к шине D-Bus;
jack мешает воспроизведению звука в других приложениях под управлением pulseaudio
Нужно установить пакет pulseaudio-module-jack
и настроить запуск скрипта в qjackctl: Параметры -> Сценарии и журнал -> Выполнять сценарий при запуске и вставить туда следующую строчку: pacmd set-default-sink jack_out
, но для этого нужно будет включить dbus... (сам я с этой проблемой не сталкивался, потому дам ссылку, на сайт с обсуждением этой проблемы);
rosegarden не играет ноты / пишет, что проблемы со звуком / проблемы с midi
Если jack и qsynth исправно запустились, скорее всего, нужные входы-выходы просто не подключились друг к другу – нужно подсоединить вручную. В окне qjackctl открываем "граф" и подсоединяем все как показано на скриншоте (вспомните ваши названия MIDI Client Name и Jack Client Name):
все работает, но звука нет
Он есть, просто не там, где вы ожидаете..) Откройте "граф" из предыдущего спойлера и подсоедините зеленые выходы к нужному устройству с зелеными входами (динамики (speakers), наушники (headphones или гарнитура) или bluetooth - тут название девайса). Или в параметрах qjackctl выберите устройство вывода: Параметры -> Общие -> Дополнительные -> Устройство выхода (обычно нужно hw:0 или hw:Generic,0)
ругается на системный таймер
С этой проблемой я сталкивался пару лет назад, на старой версии debian'a, точно не помню, что помогло, но эту проблему можно игнорировать – она не критичная. Стоит попробовать обновиться; загрузить модуль snd-rtctimer: sudo modprobe snd-rtctimer
и перезапустить rosegarden (так, по крайней мере, советует сообщение об ошибке); попробовать разные таймеры в настройках секвенсора: rosegarden -> правка -> параметры -> midi -> таймер секвенсера.
Заключение
Надеюсь, у вас всё работает! Всем вдохновенья и терпенья в освоении данной замечательной программки (она, кстати, ещё и печатать ноты умеет, через lilypond и в pdf). Поначалу может казаться, что он как-то не делает то, что нужно, но надо потратить время, чтобы разобраться, как менять силу нажатия, выводить линейки контроллеров, применять штрихи, понять, что кнопка "запись" не для экспорта нот в аудиофайл... Это всё потянет на отдельную статью, а пока – не теряйте тонику!
P.S.
Просто записать результат можно через jack_capture ;)
Примеры того, что можно написать тут (да, это мой сайт, да, всё сделано в rosegarden, да, я хочу именно такой дизайн!). Вообще советую скачать с интернета пару midi файлов известных треков (из "Пиратов Карибского моря", например) и посмотреть, как это всё выглядит в нотах/midi.
Комментарии (3)
Kerosinoff
15.09.2024 21:40+1Скажите, а этот замечательный, весь на костылях, rosegarden, может библиотеки Kontakt кушать ? Или другие, не менее аутентичные . И да, зачем музыканту знать bash ?!
Sid_Pic Автор
15.09.2024 21:40Можно nki конвертировать в sf2 через Extreme Sample Converter и пользоваться (или ещё в какой-нибудь съедобный формат, и через carla пихать). А bash знать не обязательно) - скрипт можно просто скопировать.
sterr
Зачем так напрягаться? Давно думал про линух, но на винде все это проще и прозрачнее