В 2002 году появилась ALSA (в составе ядра Linux 2.6, и хотя в 2.4 тоже можно было запустить ALSA - будем считать что появилось в 2.6), которая пришла на смену OSS. Герои 3 - игра 1999 года, поэтому я включаю поддержку обратной совместимости с OSS в ALSA:
sudo modprobe snd-pcm-oss
sudo modprobe snd-mixer-oss
sudo modprobe snd-seq-oss
Напомню, что эта обратная совместимость была включена по умолчанию в дистрибутивах Linux. Но в 2012, её по умолчанию выключили.
Когда я включаю «Героев», то я не могу воспроизводить звук из других приложений ALSA. Это неприятно. Поэтому я ищу способ заставить линуксовых героев говорить, но чтобы программа не захватывала монопольно звук.
-
aoss ./heroes3
. ПолучаюCouldn't open audio:
- Ладно, тогда включаю PulseAudio и делаю так:
padsp ./heroes3
. И сноваCouldn't open audio:
- Тогда я открываю ChangeLog версии 1.3.1a, и из него узнаю, что оказывается, есть поддержка звуковой системы ESD. А PulseAudio имеет с ней обратную совместимость. Я запускаю
SDL_AUDIODRIVER=esd ./heroes3
и смотрю в pavucontrol - появится ли новое приложение? Нет! - Тогда я посмотрел в репозитории. Нашёл
pulseaudio-esound-compat
. Установил. Пробую. Не работает! Смотрю, что именно установил пакет, а там/usr/bin/esd
и/usr/bin/esdcompat
. Запускаю - ничего!
В общем, чтобы поиграть, мне всё ещё приходится выключать всё, что использует звук, и включать эмуляцию OSS в ALSA. Как заставить работать любой из этих способов?