Расскажу, как минимальными усилиями заставить пингвина играть ваши ноты. Да, эта статья не о записи звука, сведении, мастеринге, а о таком замечательном инструменте как rosegarden – midi-секвенсоре, нотном редакторе.

Главное окно, редактор партитуры, пиано ролл
Главное окно, редактор партитуры, пиано ролл

Что имеем

Чтобы писать ноты и потом их воспроизводить не нужно RT ядро (реального времени) и какая-то особая настройка системы. Что важно, так это через что система выводит звук. В ОС Линукс в основном, по умолчанию, используется либо pulseaudio, либо более современная pipewire. Узнать, какая звуковая подсистема используется можно c помощью утилиты alsa-info (поставляется с пакетом alsa-utils):

alsa-info.sh --stdout | grep -B 1 "Running - Yes"
В выделенной строчке - /usr/bin/pipewire - значит используется pipewire
В выделенной строчке - /usr/bin/pipewire - значит используется pipewire

Если у вас используется 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, видим примерно следующее окошко:

окно qjackctl
окно qjackctl

Останавливаем (кнопка "Стоп"), если автоматически запустился звуковой сервер; открываем "Параметры". Во вкладке "Общие -> Основные" нас интересует две опции: "Драйвер" и "Драйвер MIDI", устанавливаем их "alsa" и "raw" соответственно, остальное – по мере надобности:

qjackqtl Параметры -> Общие -> основные
qjackqtl Параметры -> Общие -> основные

Далее переходим во вкладку "Разное" и проставляем/убираем галочки, чтобы jack без лишних слов запускался и останавливался (это нужно, чтобы упростить запуск rosegarden'а) – как показано стрелочками на скриншоте:

qjackqtl Параметры -> Разное
qjackqtl Параметры -> Разное

Нажимаем "Применить", "ОК" и выходим в главное окошко, нажимаем "Запустить". Ошибки, которые могут возникнуть будут описаны в конце статьи, если вашей ошибки там нет – пишите в комментарии, добавлю в статью.

qsynth

Далее нужно запустить и настроить qsynth. Открываем настройки (которые "Setup"):

окошко qsynth
окошко qsynth
qsynth Setup -> MIDI
qsynth Setup -> MIDI

Во вкладке MIDI устанавливаем MIDI Driver как "alsa_seq", запоминаем, "MIDI Client Name" (его можно поменять).

Во вкладке Audio устанавливаем Audio Driver как "jack", запоминаем "Jack Client Name" (тоже можно поменять название).

Не забываем про галочки для автоматического соединения входов midi и выходов jack.

qsynth Setup -> Audio, Soundfonts - следующая вкладка, там и без стрелочек не заблудишься ;)
qsynth Setup -> Audio, Soundfonts - следующая вкладка, там и без стрелочек не заблудишься ;)

Далее во вкладке Soundfonts нажимаем кнопку "open". Если сэмплы (soundfont) установлены с репозитория, они, как правило, располагаются в каталоге "/usr/share/soundfonts/". Если с интернета – там, куда скачали. Ищем .sf2 файлы.

Все, тыкаем "OK", qsynth может сказать, что нужно перезапустить движок – соглашаемся.

rosegarden

Jack и Qsynth запущены и исправно работают – теперь можно открыть наш rosegarden. Чтобы подключиться к midi-синтезатору, нужно открыть "Управление MIDI-устройствами" (левая верхняя стрелочка на скриншоте) и из доступных выходов выбрать название midi-клиента qsynth, которое мы запомнили ранее. Чтобы убедиться, что звук и midi в порядке, наводим курсор на значки клавиатуры и звуковой волны в правой нижней части окна.

окно rosegarden, rosegarden -> Управление MIDI-устройствами
окно rosegarden, rosegarden -> Управление 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):

qjackctl Граф
qjackctl Граф

все работает, но звука нет

Он есть, просто не там, где вы ожидаете..) Откройте "граф" из предыдущего спойлера и подсоедините зеленые выходы к нужному устройству с зелеными входами (динамики (speakers), наушники (headphones или гарнитура) или bluetooth - тут название девайса). Или в параметрах qjackctl выберите устройство вывода: Параметры -> Общие -> Дополнительные -> Устройство выхода (обычно нужно hw:0 или hw:Generic,0)

qjackctl Параметры -> Общие -> Дополнительные -> Устройство выхода
qjackctl Параметры -> Общие -> Дополнительные -> Устройство выхода

ругается на системный таймер

С этой проблемой я сталкивался пару лет назад, на старой версии debian'a, точно не помню, что помогло, но эту проблему можно игнорировать – она не критичная. Стоит попробовать обновиться; загрузить модуль snd-rtctimer: sudo modprobe snd-rtctimer и перезапустить rosegarden (так, по крайней мере, советует сообщение об ошибке); попробовать разные таймеры в настройках секвенсора: rosegarden -> правка -> параметры -> midi -> таймер секвенсера.

Заключение

Надеюсь, у вас всё работает! Всем вдохновенья и терпенья в освоении данной замечательной программки (она, кстати, ещё и печатать ноты умеет, через lilypond и в pdf). Поначалу может казаться, что он как-то не делает то, что нужно, но надо потратить время, чтобы разобраться, как менять силу нажатия, выводить линейки контроллеров, применять штрихи, понять, что кнопка "запись" не для экспорта нот в аудиофайл... Это всё потянет на отдельную статью, а пока – не теряйте тонику!

P.S.

Просто записать результат можно через jack_capture ;)

Примеры того, что можно написать тут (да, это мой сайт, да, всё сделано в rosegarden, да, я хочу именно такой дизайн!). Вообще советую скачать с интернета пару midi файлов известных треков (из "Пиратов Карибского моря", например) и посмотреть, как это всё выглядит в нотах/midi.

Комментарии (0)