воскресенье, 25 октября 2009 г.

Музыка MIDI - улучшаем звук

У меня есть вся музыка из Doom, Doom 2, Doom Final: Plutonia Experiment, Doom Final: TNT в формате MIDI. При проигрывании музыки с помощью timidity, запущенной из консоли я обнаружил, что timidity ругается на отсутствие сэмплов некоторых музыкальных инструментов:
$ timidity BUNNY.MID
Requested buffer size 32768, fragment size 8192
ALSA pcm 'default' set buffer size 30104, period size 3760 bytes
Playing /home/stupin/music/Doom/Doom/BUNNY.MID
MIDI file: /home/stupin/music/Doom/Doom/BUNNY.MID
Format: 1  Tracks: 13  Divisions: 120
No instrument mapped to tone bank 0, program 31 - this instrument will not be heard
No instrument mapped to tone bank 0, program 123 - this instrument will not be heard
((c) 1994 by <IRC:#doom:just_joe> Productions.)(MUS2MIDI v0.9 - joakim.erdfelt@swsbbs.com)(prelim DEU Music/Sound project for 'DOOM')(DEU (c) 1993,1994 by Raphael Quinet)(DOOM (c) 1993,1994 by id software)Playing time: ~65 seconds
Notes cut: 0
Notes lost totally: 0
При этом, соответственно, слышны не все инструменты, что портит восприятие музыки. Например в первом эпизоде на третьем уровне вместо музыки фактически слышно один только монотонно повторяющийся синт-бас. Я стал искать музыкальные сэмплы для недостающих инструментов.

Выяснилось, что в Debian есть MIDI-секвенсор fluidsynth, в комплекте с которым идут два банка музыкальных инструментов формате Sound Font 2. Эти банки находятся в пакетах с именами fluid-soundfont-gm и fluid-soundfont-gs. Сам секвенсор мне запустить так и не удалось. Честно говоря мне этого и не особо-то хотелось, моей задачей было услышать полноценную музыку из Doom. Но зато я нашёл каким образом можно прикрутить эти банки к секвенсору timidity. Итак, пройдём весь процесс по шагам.

Сначала установим банки:
# aptitude install fluid-soundfont-gm fluid-soundfont-gs
Вносим исправления в настройки freepats - программы, предоставляющей timidity сэмплы инструментов. В файле /etc/timidity/freepats.cfg добавляем следующие строчки (я добавил в начало):
dir /usr/share/sounds/sf2/
soundfont FluidR3_GM.sf2 order=0
soundfont FluidR3_GS.sf2 order=1
И перезапускаем секвенсор:
# /etc/init.d/timidity restart
Теперь можно запускать timidity для прослушивания музыки из Doom. Кроме появления недостающих инструментов улучшилось общее качество воспроизведения: исчезли щелчки и искажения звука. Единственным недостатком секвенсора можно считать то, что он требует для своей работы изрядной вычислительной мощности процессора. Загрузка моего 2-гигагерцового Athlon доходила до 30-40%.

Кстати, с помощью timidity можно слушать не только MIDI-файлы. timidity хорошо воспроизводит IT-, STM- и XM-файлы. В таком формате была музыка в недрах Unreal и Unreal Tournament, которую я когда-то из них извлёк. Теперь я могу слушать эту музыку и в Linux!

4 комментария:

Анонимный комментирует...

Большое спасибо! Очень помогло!

Анонимный комментирует...

Спасибо.

Анонимный комментирует...

у меня файла freepats.cfg вообще не нашлось.

morbo комментирует...

Может файла нет, потому что не стоит пакет freepats?