Чип Emu10000 (или Emu10k) пришёл на смену Emu8000 (Emu8k). На Emu10k выпускались Live!, Audigy, Audigy 2 - и вообще всё, что было до Creative X-Fi, который использует более новый чип - Emu20k. Чип Emu10k превосходно поддерживается Linux-ом, что и стало поводом для написания этого поста! Речь пойдёт прежде всего об аппаратном MIDI - сейчас мы привыкли запускать Timidity++, потому что на «интеграшках» доступно только программное
Emu8k поддерживается в Linux не менее хорошо, чем Emu10k - это AWE32 и AWE64. А также даже несколько моделей Sound Blaster 32 (не AWE32) тоже использовали чип Emu8k, воспроизводя хорошее MIDI, но для PCM-звука использовался более старый чип, нежели в AWE32... А вот Emu20k (X-Fi) работает плохо (изменилось ли что-нибудь с ними за последние 10 лет? Напишите в комменты)
Emu10K это:
- Окончательный переход на Plug'n'Play (AWE32 имел 2 модели с ним, и 2 модели без)
- Окончательный переход на PCI
- Отсутствие ISA DMA создаёт проблемы для DOS-гейминга, о чём можно прочитать по этой ссылке. А в этом видео, начиная с 35 минуты, посмотреть как это работает (спойлер: карточка на IRQ 10 эмулирует SB16 на IRQ 5, причём работает FM-синтез и WaveTable на выбор пользователя)
- На AWE32 было 1 Мб ROM-памяти для сэмплов, и 512 Кб RAM для пользовательских. А также на звуковой карте было два разъёма для модулей памяти, позволяющих вставить ещё максимум 28 Мб
- На Emu10k памяти для сэмплов нет совсем. Используется системная. В Windows-утилите можно выставить любое количество памяти под сэмплы. При этом утилита предупреждает, если выставлено слишком много (например если глупый юзер выставил 32 Мб из 64 возможных - времена были такие, что полугигабайтные sf2-файлы подгрузить было нельзя)
- В Linux Emu8k играет звук «из коробки», потому что звуки вшиты в память на звуковой карте. А Linux Emu10k воспроизводит тишину - в документации предлагается взять файл 8MBGMSFX.SF2 с идущего в комплекте с картой диска с драйверами для Windows
- Скажу также про PCM-звук. Emu10k поддерживает частоту дискретизации 96k в Windows, и 48k в Linux
- А ещё, если у вас подгружен модуль ядра snd-oss-mixer, то работает микширование звука при использовании OSS! Проверить можно, запустив музыку в плеере, а затем линуксовых Героев 3 (выпущенных в 1999 задолго до ALSA). На «интеграшках» это не сработает
Когда я вставил в свой компьютер Emu10k, openSUSE Linux её увидел. Я добавил эту карточку в YAST2, и он предложил мне установить утилиту awesfx. Утилита находится в OBS-репозитории multimedia:libs
. Затем нужно выполнить два действия:
- Подгрузить при помощи этой утилиты - файл 8MBGMSFX.SF2
- Добавить в автозагрузку модулей -
snd_emu10k1_synth
(инфа отсюда, но вообще, я не ощутил разницы с обычнымsnd_seq
)
Автозагрузка модулей в openSUSE прописывается здесь, в Gentoo - прописывается в файл /etc/conf.d/modules
. Было бы здорово, если бы Ubuntu научилась всё скачивать и прописывать при помощи Jockey (Менеджер проприетарных драйверов)
Скачать файл 8MBGMSFX.SF2 можно с сайта ALSA, а подгружать командой:
sfxload -D 0 /opt/Creative/WaveTable/8MBGMSFX.SF2
В openSUSE файл можно прописать в той же утилите, что и на скриншоте, в разделе Hardware/Soundcard. Там же проверьте, что включен Sequencer ALSA и выключен Sequencer OSS
Теперь Dosbox будет воспроизводить MIDI без дополнительной настройки. Звук а-ля SB16, который вы слышали раньше, сменится на WaveTable. Кстати, в Doom надо выставлять General MIDI, а не Sound Blaster AWE32
Перемещено Shaman007 из talks