Лікнеп за GNU
Граємо MIDI-файли в Linux
Незважаючи на захід комп'ютерної MIDI-музики, на форумах лінуксоїдів регулярно задаються питання про те, як в Linux програвати MIDI-файли. У цій статті розглянемо програмні секвенсори TiMidity++ і FluidSynth, призначені для тих, у кого в комп'ютері встановлена звичайна звукова карта без підтримки MIDI.
Справді, час популярності MIDI-музики, коли MIDI-композиції активно використовувалися в комп'ютерних та приставних іграх, залишився позаду. У ті славні часи користувалися звуковими картами з апаратним MIDI, серед яких досі неперевершеними за витонченістю звуку можна вважати легендарні карти "Ямаха".
По-друге, залишилися ще справжні меломани, які пам'ятають та цінують славетну спадщину Yamaha XG. Є ті, у яких збереглися ностальгічні композиції, наприклад того ж Нобуо Уематсу з ранніх Фіналок. Отже, MIDI ще потрібен.
MIDI - це цифровий інтерфейс електронних музичних інструментів, що дозволяє відтворювати музику шляхом виконання спеціальних команд. Але щодо персонального комп'ютера, то для звичайного користувача MIDI - це, в першу чергу, такий формат файлів, які можна програвати спеціальними програвачами-секвенсорами.
Сам цей файл ніяких звуків не містить, а грубо кажучи, є просто нотним записом. Секвенсор читає ці "ноти" і на їх основі синтезує звук. Основний спосіб синтезу зараз - вже готові семпли музичних інструментів, які розфасовані спеціальними банками. Секвенсор послідовно читає інформацію про звуки з MIDI-файлу і відповідно до цієї інформації підставляє відповідний семпл з банку готових музичних звуків.
Секвенсори буваютьвбудованими в аудіокарту. Але у звичайних сучасних аудіокартах підтримки MIDI немає і тому використовуються програмні секвенсори. Про програмні секвенсори для Linux і поговоримо.
Найпопулярнішим секвенсором для Linux зараз є TiMidity++. До речі, програма є кросплатформною, є версії для Windows.
TiMidity++ зазвичай не встановлюється за умовчанням у системі, і цей секвенсор потрібно встановлювати окремо з дистрибутивного репозиторію. Також потрібно встановити банк звуків, бо сам по собі секвенсор жодних семплів не містить. Зазвичай у дистрибутивах міститься вільний набір семплів під назвою freepats. Цей наборчик семплів, правду кажучи, досить поганий, і надалі ми його поміняємо на щось більш пристойне.
Встановивши з репозиторію TiMidity++, пробуємо програти якийсь MIDI-файл. Цей секвенсор є консольною програмою і запускається з командного рядка:
Запускати програму в командному режимі багатьом може здатися не дуже цікавим, і для цього секвенсора передбачені різні фронтенди, у тому числі з графічним інтерфейсом. Наприклад, у Debian Lenny необхідно встановити пакет timidity-interfaces-extra.
Однак скажу, що TiMidity є старою програмою, і тому ці фронтенди теж можуть здатися недостатньо зручними.
Але TiMidity++ може працювати як сервер для інших програм, наприклад, для плеєра караоке Kmid. Щоб запустити секвенсор у цьому режимі, потрібно виконати наступну команду:
В результаті має з'явитися таке повідомлення:
TiMidity starting in ALSA server mode
Opening sequencer port: 128:0 128:1 128:2 128:3
Тобто ми отримали чотири MIDI-порти - 128:0 128:1 128:2 128:3 - в системі, дояким можна з інших програм звертатися, встановивши їх як MIDI-пристрої в налаштуваннях програми. Наприклад, для плеєра Kmid налаштування MIDI-порту здійснюється в меню "Settings - MIDI Setups".
Щоправда, є одне "але". Щоб TiMidity++ працював у режимі сервера, він має бути зібраний із цією опцією. Однак про цю опцію збирачі пакетів часто забувають, і TiMidity ++ може працювати тільки як звичайний секвенсор.
Як уже було сказано вище, звучання семплів freepats навряд чи влаштує вибагливого меломана. Тому краще завантажити інші банки музичних інструментів. TiMidity++ в першу чергу працює з банками звуків у форматі GUS. На мій вишуканий слух найбільш шикарним банком у цьому форматі є саундфонт eawpats. Даю пряме посилання, розмір близько 30 мегабайт: gd.tuwien.ac.at/opsys/linux/gentoo/distfiles/eawpats12_full.tar.gz
Цей банк інструментів слід розпакувати в будь-яку директорію та його активації відредагувати конфігураційний файл timidity.cfg. Цей файл у Debian знаходиться у директорії /etc/timidity. Проте в інших дистрибутивах він може бути в інших місцях.
Потім додати посилання на інструменти eawpats. Наприклад, якщо eawpats знаходиться в каталозі /home/me/ eawpats, то запис у конфігураційному файлі буде таким:
От і все. Але TiMidity++ може працювати з банками звуків і у поширеному форматі SF2 (SoundFonts 2). Звукових бібліотек у цьому форматі у Мережі багато. Підключається файл SF2 у конфігураційному файлі timidity.cfg так:
TiMidity++ – потужний секвенсор із великою кількістю додаткових функцій, які можна вивчити через help. Наприклад, TiMidity++ програє як MIDI, а й MOD-файлы. Цей секвенсор може зберігати MIDI файл в інші звукові формати - Ogg, WAV. Секвенсорпідтримує спецефекти хорус, реверб. Однак слід пам'ятати, що TiMidity++ - це софтовий секвенсор, і багато функцій вимагатимуть додаткової обчислювальної потужності процесора.
FluidSynth - це також програмний секвенсор-синтезатор, який може використовуватися за відсутності звукової карти з власним MIDI-секвенсором. Для синтезу використовує лише банки звуків у форматі SF2. Працює FluidSynth як демон і призначений для обслуговування зовнішніх програм – Kmid, Resengarden та ін.
Щоб не мучитися з параметрами командного рядка цього демона існує окремий графічний інтерфейс Qsynth. Власне, для роботи з FluidSynth достатньо встановити із репозиторію Qsynth. У Debian Lenny пакет є.
FluidSynth - сучасніша програма, ніж TiMidity++, розрахована на роботу у зв'язці з аудіосервером Jack з низькими затримками. Однак якщо стоїть завдання просто послухати MIDI у якомусь Kmid, то можна обійтися і без аудіосервера Jack. Особливо це актуально для новачків, яких лякає зоопарк різноманітних аудіосерверів у Linux.
Після запуску Qsynth з'явиться повідомлення про те, що не вдалося знайти Jack-сервер. Слід зайти в меню "Setup" і у вкладці "Audio" як аудіодрайвер поставити Alsa, а не Jack. Після цього у вкладці Soundfont вибрати потрібні файли SF2. Якщо їх кілька, визначити їхню ієрархію. FluidSynth дозволяє завантажити скільки завгодно банків SF2, аби пам'яті в комп'ютері вистачило.
Після налаштування залишиться тільки натиснути в Qsynth кнопку "Start" і в системі з'явиться програмний віртуальний MIDI-сервер, до якого можна звернутися з інших програм, що працюють з MIDI-файлами.
Як бачите, система MIDI в Linux є навороченою і місцями може бути складною. Однак і результатиможна отримати хороші, навіть не маючи картки з апаратною підтримкою MIDI. Для прослуховування своєї колекції MIDI я використовую TiMidity++ та саундфонд eawpats і не жалкую про відсутність емулятора Yamaha. Хоча слід сказати, що з оригінальним MIDI стареньких карток Yamaha ніщо зрівнятися не може. Не завжди нове краще, ніж старе.