Возможно кто-то удивится и не поймёт, зачем мне устаревшая подержанная звуковая карта? Объясняю - преимущество этой звуковой карты заключается в том, что она имеет собственную память объёмом 32 мегабайта. В эту память можно загрузить микропрограммы с эффектами или фильтрами для звука, а можно загрузить сэмплы. Современные звуковые карты во-первых зачастую уже не имеют аппаратных секвенсоров MIDI, т.к. MIDI на компьютерах давно вышел из моды, а во-вторых - используют для своих нужд прямой доступ к оперативной памяти компьютера. С одной стороны это может быть и хорошо, потому что звуковая карта может использовать сэмплы, общий объём которых ограничен только объёмом оперативной памяти компьютера, а с другой стороны это не очень хорошо, т.к. при этом звуковая карта теряет автономность и становится сильно зависимой от пропускной способности шины.
Мне же иногда хочется играть в старые игры для DOS, которые запускаются в DosBox в режиме частичной эмуляции. В старых играх мне хочется слышать ту MIDI-музыку, которая была сделана специально для игры и была встроена в неё. Но, поскольку мой компьютер староват, вычислительной мощности процессора иногда не хватает на одновременную частичную эмуляцию среды Dos и синтеза звука программным MIDI-секвенсором. В таких случаях звук начинает заикаться, а игра притормаживать. Выхода три: 1. отказаться эстетствовать и не слушать музыку в старых играх, а то и вовсе в них не играть, 2. купить мощный компьютер, что чревато лишними расходами и дополнительными хлопотами, 3. купить подходящую звуковую карту, а заодно узнать что-то новое о настройке аппаратных MIDI-секвенсоров.
Довелось мне даже испытать работу MIDI-клавиатуры (с интерфейсом USB), которую давал мне друг. Интересно, что она определилась и заработала сходу - мне для этого не понадобилось ставить никаких драйверов, не пришлось делать каких-то настроек. Я просто поставил Rosegarden (аналог Cakewalk для Linux) и клавиатура с ним прекрасно заработала.
Все эти мои эксперементы сопровождались дополнениями вики-страницы, содержимое которой я сейчас и приведу.
1. Список секвенсоров
Узнать список доступных MIDI-секвенсоров можно с помощью следующей команды:
$ aplaymidi -lУ меня эта команда выдаёт следующее:
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. Дополнительные его характеристики можно узнать с помощью следующей команды:
$ cat /proc/asound/card0/wavetableD1Которая должна выдать примерно следующую информацию:
Device: Emu10k1 Ports: 4 Addresses: 17:0 17:1 17:2 17:3 Use Counter: 0 Max Voices: 64 Allocated Voices: 0 Memory Size: 134217728 Memory Available: 134213632 Allocated Blocks: 1 SoundFonts: 0 Instruments: 0 Samples: 0 Locked Instruments: 0 Locked Samples: 02. Программный секвенсор 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 добавляем следующие строчки (я добавил в начало):
dir /usr/share/sounds/sf2/ soundfont FluidR3_GM.sf2 order=0 soundfont FluidR3_GS.sf2 order=1И перезапускаем секвенсор:
# /etc/init.d/timidity restart4. Программный секвенсор 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 -s5. Аппаратный секвенсор
Если в вашей звуковой карте имеется аппаратный MIDI-секвенсор, необходимо подгрузить модуль ядра snd-emu10k1-synth:
# modprobe snd-emu10k1-synthЕсли в выводе lsmod появится подгруженный модуль, значит аппаратный MIDI-секвенсор в вашей звуковой карте есть и для его использования необходимо загрузить в звуковую карту сэмплы.
Для загрузки семплов в звуковую карту необходимо установить пакет awesfx:
# aptitude install awesfxЗагрузить сэмплы из пакетов fluid-soundfont-gm и fluid-soundfont-gs можно с помощью команд:
$ asfxload /usr/share/sounds/sf2/FluidR3_GM.sf2 $ asfxload -N /usr/share/sounds/sf2/FluidR3_GS.sf2Первая команда загружает сэмплы вместо имеющихся, а вторая - добавляет сэмплы к имеющимся.
Для автоматической подгрузки модуля ядра при загрузке системы необходимо добавить модуль snd-emu10k1-synth в файл /etc/modules.
6. Выбор секвенсора по-умолчанию
Для настройка MIDI-секвенсора по умолчанию для определённого пользователя нужно прописать в его файл ~/.bashrc следующие строчки:
ALSA_OUTPUT_PORTS="17:0 17:1 17:2 17:3" export ALSA_OUTPUT_PORTSПредполагается, что оболочкой по умолчанию у пользователя назначен bash. Настройки вступают в силу при входе пользователя. Для временного применения настроек по умолчанию (до конца сеанса пользователя) можно выполнить эти команды прямо из командной строки.
7. Воспроизведение музыки
Воспроизвести музыку можно с помощью любого проигрывателя, поддерживающего воспроизведение MIDI, например pmidi:
# apt-get install pmidiВоспроизведение музыки:
$ pmidi track.mid
7 комментариев:
Когда-нибудь на смену MIDI, возможно, придет новая технология. Пока же нет не только конкурирующей технологии, но даже намека на таковую.
статья огонь! люто оргазмирую
Спасибо за статью. Наконец-то я нашёл, чем воспроизводить MIDI в GNOME. Я искал аналог KDE-шного KMid, нашёл pmidi :-)
А есть ли смысл заменять дефолтные soundfont на soundfont от fluidsynth? На YouTube-канале Old Robot также советуют 32-мегабайтный MasterPiece.sf2
Кстати, у меня проблемы с модулем snd-emu10k-synth. Я запускаю Doom в DosBox, и когда рычат сразу много монстров, то звук заикается. Если перезапустить DosBox, то всё работает нормально. А если вместо этого модуля использовать snd-seq (не путать с snd-seq-oss), то такой проблемы нет. Возможно, что эта проблема PulseAudio, а с чистой ALSA такого нет.
В PrBoom работает MIDI? Замечательно! Надо попробовать. А я пробовал в hheretic (это Source-порт Heretic). MIDI не играет (хотя там используется SDL 1.2, как и в DosBox). Я завёл баг-репорт - разработчики сказали, что если я предложу патч, то его примут. А сами делать не хотят (порт 2008 года)
>А есть ли смысл заменять дефолтные soundfont на soundfont от fluidsynth?
Смысл есть. Я написал в статье, что в семплах freepats, которые устанавливаются по умолчанию, некоторые инструменты отсутствуют.
>На YouTube-канале Old Robot также советуют 32-мегабайтный MasterPiece.sf2
Тоже загружал 32-мегабайтные семплы, чтобы воспользоваться возможностями звуковой карты по-максимуму. Не помню сейчас, что за сэплы это были. Нашёл у себя два файла такого размера:
32MbGMStereo.sf2
FantaGM32.sf2
>Возможно, что эта проблема PulseAudio, а с чистой ALSA такого нет.
Возможно. Не пользуюсь PulseAudio.
Ничего не работает из приведенного выше! Плата SB X-Fi Platinum.
Это печально. Хотя программный синтезатор Timidity должен работать даже на тех звуковых картах, которые про MIDI ничего не знают и умеют просто воспроизводить звук.
У меня нет файла /etc/timidity/freepats.cfg
Отправить комментарий