Налаштування відтворення 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: