LINUX.ORG.RU

Re: Чем проиграть midi файл?

Естественно, можно. Посмотри timidity на freshmeat.net. Более того, насколько мне известно, _все_ гуёвые проигрыватели midi есть просто морды, сиречь frontends к timidity.

anonymous ()

Re: Чем проиграть midi файл?

Timidity++ --- программный синтезатор MIDI. Вот что у меня записано для памяти.

http://www.goice.co.jp/member/mo/timidity/
Для работы требуются ``патчи'' (.pat) с сэмплами для Gravis Ultrasound, либо ``звуковые шрифты'' для карт Creative (в формате .sf2 или .sbk). Звуковые шрифты загружаются так (следующую строку надо добавить в конфигурационный файл):

soundfont <файл_шрифта> [order=0|1]

Если параметр `order' установлен в 0, то поиск требуемого сэмпла вначале происходит в файле звукового шрифта, и если он не найден, то в патчах GUS, а если в 1, то наоборот. Можно указывать конфигурационный параметры в командной строке:

timidity -x "soundfont <файл_шрифта>" <файл.mid>

TiMidity++ может выступать в качестве клиента для секвенсера ALSA (при установленных драйверах ALSA, само собой). Для этого надо запускать так:

timidity -iA -B2,8

В файле /proc/asound/seq/clients появится информация о клиенте TiMidity. Теперь можно слушать MIDI, указывая конкретно устройство, например:

pmidi -p128:0 <файл.mid>

Возможно также пользоваться программами, работающими с секвенсером OSS. В файле /proc/asound/seq/oss можно узнать номер, назнвченный устройству TiMidity. Команда

playmidi -e -D5 <файл.mid>

будет работать через TiMidity.
Музыкальный сервер для DOOM в этом случае запускается так:

musserv.bin -m -u 5

Эту команду можно поместить в скрипт `musserv' и указать на него в параметре `musserver' конфигурационного файла (в случае lxdoom).

При этом следует запускать TiMidity от имени суперпользователя, для того, чтобы программа могла установить себе наивысший приоритет. Иначе возможны перерывы в проигрывании, например, при обращении к содержимому /proc.

Однако для синтезирования можно использовать и возможности звуковой карты.
Для работы с секвенсером потребуется установить пакет awesfx (понадобятся программы sfxload и gusload из этого пакета, в дистрибутиве Debian эти программы находится в пакете awe-drv, причем часть утилит устанавливается в каталог /usr/lib/awe/). Исходные тексты этих утилит, равно как и проигрыватель MIDI drvmidi, входят в комплект драйверов для звуковых карт AWE32, разработанных Takashi Iwai.
Драйвера для AWE можно найти на странице Creative: http://opensource.creative.com/. Страницу Takashi Iwai, посвященную AWE, можно найти по адресу http://members.tripod.de/iwai/awedrv.html).
Для проигрывания MIDI надо загрузить ``звуковой шрифт'' (библиотеку) в оперативную память. Для использования программы sfxload нужен файл ``звукового шрифта'' SF2 (или SBK). Загружаем библиотеку:

sfxload <файл.sf2>

По умолчанию библиотека загружается с уровнем звука 70%, поэтому звук может быть тише, чем при прослушивании PCM. Опциея -V позволяет изменить уровень звука при загрузке библиотеки. Например,

sfx -V100 2mbgmgs.sf2

загрузит со стопроцентной громкостью файл 2mbgmgs.sf2.
Информация о загруженных библиотеках доступна через файл /proc/asound/CARD_0/wavetableD1, а о MIDI-устройствах и синтезаторе --- в /proc/asound/seq/oss (предполагая использование драйверов ALSA). Количество оставшейся свободной памяти можно получить командой

sfxload -M

С помощью программы gusload можно загружать патчи для GravisUltrasound.

gusload [-b <номер>] [-p <номер>] <файл.pat>

Опция -b указывает номер банка (по умолчанию 0), а опция -p --- номер инструмента (по умолчанию берется из файла).
Загрузив ``звуковой шрифт'' можно прослушивать MIDI-файлы, например, используя программу playmidi.

playmidi -e <файл.mid>

Можно также использовать xplaymidi --- версию для X Window. Для ALSA существует проигрыватель MIDI pmidi.
Однако если модуль звукового драйвера будет выгружен из памяти, то вместе с ним будет выгружена и библиотека. Придется загружать ее повторно вручную. Для автоматической загрузки библиотеки сэмплов можно применить следующий прием: добавить в файл /etc/modules.conf запись

post_install snd-seq/usr/bin/sfxload <файл.sf2>

Теперь после загрузки этого модуля будет подгружаться библиотека.
Библиотеки ``звуковых шрифтов'' SF2 можно найти здесь: ftp://ftp.lysator.liu.se/pub/awe32.

DronK ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.