Показаны сообщения с ярлыком prboom. Показать все сообщения
Показаны сообщения с ярлыком prboom. Показать все сообщения

воскресенье, 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!

суббота, 17 октября 2009 г.

Музыка в PrBoom

Продолжая тему запуска старых игр от id Software в Linux, хочу написать о PrBoom. PrBoom - это свободный движок игры Doom. У меня в Debian эта игра запускалась со звуком, но почему-то без музыки. Как оказалось, исправить этот недостаток довольно просто.

Во-первых, ставим пакет timidity:
# aptitude install timidity
Во-вторых, вносим в файл /etc/default/timidity следующие изменения:
TIM_ALSASEQ=true
В-третьих, перезапускаем MIDI-секвенсор:
# /etc/init.d/timidity restart
В каталоге /dev/ должно появиться устройство midi:
$ ls -la /dev/midi
crw-rw---- 1 root audio 14, 2 Окт 17 17:29 /dev/midi
Нужно убедиться, что пользователь который будет запускать игру, будет иметь доступ к этому устройству. Для этого пользователя достаточно включить в группу audio и при необходимости завершить сеанс и войти снова.

После всех этих действий prboom всё равно не воспроизводил музыку и я обратился к страницам руководства. После непродолжительного чтения, я узнал что все настройки prboom'а находятся в файле ~/.prboom/prboom.cfg.

Поиск по файлу конфигурации слова music дал следующие две опции: music_card, music_volume.

Опция music_card располагалась под опцией sound_card, но в отличие от неё имела другое значение:
sound_card                   -1
music_card                   0
После того, как я заменил значение опции music_card на -1, музыка заработала.

В игре можно включить использование OpenGL и задать размер экрана (смотрите настройки в меню игры и конфигурационный файл). Спрайты объёмными от этого не станут, но качество картинки станет лучше.

Чтобы поиграть в оригинальный Doom, нужно взять от игры для DOS файл с расширением WAD и указать PrBoom'у использовать его. Например вот так можно запустить первый Doom:
$ prboom -IWAD DOOM.WAD
Игра хоть и старая, но кто однажды стал её фанатом, тот её никогда не забудет. Я умею играть на сложности Ultra Violence пользуясь только лишь одной клавиатурой. Да и тем, кто её никогда не видел, может понравиться, если не рассматривать её как замену более поздним играм, а относиться к ней как какой-нибудь казуальной игре вроде тетриса или зумы.

Ну и напоследок, несколько скриншотов.

FreeDoom:

Doom Ultimate E1M1. Перед входом в первую мясорубку:

Doom Ultimate E1M1. После выхода из мясорубки осталось мало здоровья - или бейся или фоткай: