Налаштування відтворення MIDI у Debian GNU

Налаштування відтворення MIDI у Debian GNU/Linux

З M >Музика в PrBoom). Потім я ставив додаткові семпли для того, щоб покращити якість відтворення музики в Doom і змусити звучати ті інструменти, семпли яких не входили до комплекту програмного секвенсору tim (Музика MIDI - покращуємо звук). Потім я купив уживану звукову карту Creative SoundBlaster Live 5.1! та налаштував апаратний її секвенсор.

Можливо хтось здивується і не зрозуміє, навіщо мені застаріла звукова карта? Пояснюю - перевага цієї звукової карти полягає в тому, що вона має власну пам'ять об'ємом 32 мегабайти. У цю пам'ять можна завантажити мікропрограми з ефектами або фільтрами звуку, а можна завантажити семпли. Сучасні звукові карти по-перше часто не мають апаратних секвенсорів MIDI, т.к. MIDI на комп'ютерах давно вийшов із моди, а по-друге – використовують для своїх потреб прямий доступ до оперативної пам'яті комп'ютера. З одного боку це може бути і добре, тому що звукова карта може використовувати семпли, загальний об'єм яких обмежений лише обсягом оперативної пам'яті комп'ютера, а з іншого боку це не дуже добре, тому що. при цьому звукова карта втрачає автономність і стає сильно залежною від пропускної спроможності шини.

Мені іноді хочеться грати в старі ігри для DOS, які запускаються в DosBox в режимі часткової емуляції. У старих іграх мені хочеться чути ту MIDI-музику, яка була зроблена спеціально для гри та була вбудована у неї. Але, оскільки мій комп'ютер старуватий, обчислювальної потужності процесора іноді не вистачає на одночасну часткову емуляцію середовища Dos та синтезу звуку програмним MIDI-секвенсором. У таких випадках звук починає заїкатися, а гра пригальмовувати. Виходи три: 1.відмовитися естествувати і не слухати музику в старих іграх, а то й зовсім у них не грати; 2. купити потужний комп'ютер, що загрожує зайвими витратами та додатковими клопотами; MIDI-секвенсори.

Довелося навіть випробувати роботу MIDI-клавіатури (з інтерфейсом USB), яку давав мені друг. Цікаво, що вона визначилася і запрацювала відразу - мені для цього не знадобилося ставити жодних драйверів, не довелося робити якихось налаштувань. Я просто поставив Rosegarden (аналог Cakewalk для Linux) та клавіатура з ним чудово запрацювала.

Всі ці мої експерименти супроводжувалися доповненнями вікі-сторінки, вміст якої зараз і наведу.

1. Список секвенсорів

Дізнатися список доступних MIDI-секвенсорів можна за допомогою наступної команди:

У мене ця команда видає таке:

Port Client name Port name

14:0 Midi Through Midi Through Port-0

16:0 SB Live! 5.1 Dell OEM [SB0228] EMU10K1 MPU-401 (UART)

17:0 Emu10k1 WaveTable Emu10k1 Port 0

17:1 Emu10k1 WaveTable Emu10k1 Port 1

17:2 Emu10k1 WaveTable Emu10k1 Port 2

17:3 Emu10k1 WaveTable Emu10k1 Port 3

20:0 CA0106 CA0106 MPU-401 (UART)

Апаратному MIDI-секвенсору відповідають порти 17:0, 17:1, 17:2, 17:3. Додаткові характеристики можна дізнатися за допомогою наступної команди:

Яка має видати приблизно таку інформацію:

Addresses: 17:0 17:1 17:2 17:3

Використовується Voices: 0

Memory Size: 134217728

Memory Available: 134213632

Вилучені блоки: 1

Locked Instruments: 0

Locked Samples: 0

2. Програмний секвенсор timidity

При відсутностіапаратних MIDI-секвенсорів (секвенсорів, що є прямо в звуковій карті) можна встановити програмний MIDI-секвенсор:

# apt-get install timidity

Разом з timidity буде встановлений набір семплів (інакше званих Gravis Ultra Sount Patches або коротко - GUS-патчів) freepats.

3. Поліпшені семпли в timidity

Набір семплів, що встановлюється freepats, не повний і не відрізняється високою якістю, тому можна встановити додатковий набір патчів зі складу fluidsynth:

# apt-get install fluid-soundfont-gm fluid-soundfont-gs

У файлі /etc/timidity/freepats.cfg додаємо наступні рядки (я додав на початок):

І перезапускаємо секвенсор:

4. Програмний секвенсор fluidsynth

Є альтернативний програмний MIDI-секвенсор, який називається fluidsynth. Встановити його можна наступною командою:

# apt-get install fluidsynth

Секвенсор fluidsynth не має сценарію ініціалізації, тому для його запуску необхідно написати простенький сценарій ініціалізації або запустити його вручну, наприклад:

$ fluidsynth -a alsa -i /usr/share/sounds/sf2/FluidR3_GM.sf2 -i /usr/share/sounds/sf2/FluidR3_GS.sf2 -m alsa_seq -r 44100 -s

5. Апаратний секвенсор

Якщо у вашій звуковій карті є апаратний M >snd-emu10k1-synth :

Якщо у виводі lsmod з'явиться підвантажений модуль, то апаратний MIDI-секвенсор у вашій звуковій карті є і для його використання необхідно завантажити в звукову карту семпли.

Для завантаження семплів у звукову карту необхідно встановити пакет awesfx :

# aptitude install awesfx

Завантажити семпли з пакетів fluid-soundfont-gm та fluid-soundfont-gs можна за допомогою команд:

$asfxload -N/usr/share/sounds/sf2/FluidR3_GS.sf2

Перша команда завантажує семпли замість наявних, а друга - додає семпли до наявних.

Файл FluidR3_GS.sf2 дуже великий, і не кожна звукова картка його прожує. Якщо картці не вистачить пам'яті для завантаження семплів, буде видано помилку:

sfxload: no memory left

Цей файл можна помістити в той же каталог, що і файли семплів пакетів flu &us/sr/share/sounds/sf2/ ) після чого його можна підвантажувати командою:

Увага! Для автоматичного підвантаження модуля ядра під час завантаження системи необхідно додати модуль snd-emu10k1-synth у файл /etc/modules .

6. Вибір секвенсора за замовчуванням

Для налаштування M >

/.bashrc такі рядки:

ALSA_OUTPUT_PORTS="17:0 17:1 17:2 17:3"

Передбачається, що стандартною оболонкою у користувача призначений bash. Налаштування набирають чинності при вході користувача. Для тимчасового застосування за замовчуванням (до кінця сеансу користувача) можна виконати ці команди прямо з командного рядка.

7. Відтворення музики

Відтворити музику можна за допомогою будь-якого програвача, що підтримує відтворення MIDI, наприклад, pmidi: