Последние веяния моды в IT привели к тому, что подавляющее количество устройств в современном компьютере стали «программными». Помимо дополнительной нагрузки на процессор это создает немало проблем для пользователей альтернативных систем.
В моем предыдущем компе стояла материнская плата в которую была интегрированная звуковая карта на базе VIA VT8237. VT8237 полностью аппаратное решение и проблем с проигрыванием звука в Windows/FreeBSD/Linux не было.
После апгрейда встроенная карточка поменялась на Realtek ALC883, которая не имела аппаратного микширования. Это порождало спектр различных проблем при использовании нескольких alsa приложений или одновременной работе alsa и oss эмуляции.
Способы решения этих проблем под катом
Микширование нескольких потоков в ALSA сейчас реализовано программно и если использовать только устройство по-умолчанию (alsa:default), то проблемы нет. А вот с эмуляцией OSS плохо. Есть несколько вариантов реализации OSS в linux:
Я пробовал alsa-oss и OSS через ALSA в ядре. Первое решение часто глючит из-за неполной реализации интерфейса OSS (да и не всегда возможен перехват обращений к /dev/dsp). А OSS через ALSA в ядре дает ошибку (звуковая карта «программная» и не умеет микшировать несколько потоков), если запущено хоть одно alsa приложение (микшер в трее например). Выгружать все, что использует ALSA и потом загружать обратно можно, но не удобно.
Относительно недавно наткнулся на упоминание OSS proxy в одной из рассылок. OSS proxy — реализация OSS через CUSE. CUSE — реализация символьных устройств (char devices) в Linux.
OSS proxy состоит из сервиса, который посредством CUSE создает символьные устройства /dev/dsp, /dev/adsp и /dev/mixer. Затем обращения к этим устройствам транслируются в формат, понятный бэкендам (сейчас есть вывод через pulseaudio и alsa).
Я собрал пакет для Debian Squeeze. Для тех, кому этот пакет не подходит, могут пересобрать его из пакета с исходными текстами.
Вечер использования эмуляции через OSS proxy показал его работоспособность в ситуациях:
На мой взгляд OSS proxy — лучшее решение для эмуляции OSS на софтварных звуковых картах.
UPD: собрал новый билд 1.3.2-2 в котором исправлены замечания lintian. Перед установкой новой версии старую желательно вычистить:
sudo dpkg -P ossp или sudo aptitude purge ossp
В моем предыдущем компе стояла материнская плата в которую была интегрированная звуковая карта на базе VIA VT8237. VT8237 полностью аппаратное решение и проблем с проигрыванием звука в Windows/FreeBSD/Linux не было.
После апгрейда встроенная карточка поменялась на Realtek ALC883, которая не имела аппаратного микширования. Это порождало спектр различных проблем при использовании нескольких alsa приложений или одновременной работе alsa и oss эмуляции.
Способы решения этих проблем под катом
Микширование нескольких потоков в ALSA сейчас реализовано программно и если использовать только устройство по-умолчанию (alsa:default), то проблемы нет. А вот с эмуляцией OSS плохо. Есть несколько вариантов реализации OSS в linux:
- нативная OSS с эмуляцией ALSA
- aoss — перехват обращений к /dev/dsp через alsa-oss
- padsp — перехват обращений к /dev/dsp через pulseaudio
- эмуляция OSS через ALSA в ядре
- ...
Я пробовал alsa-oss и OSS через ALSA в ядре. Первое решение часто глючит из-за неполной реализации интерфейса OSS (да и не всегда возможен перехват обращений к /dev/dsp). А OSS через ALSA в ядре дает ошибку (звуковая карта «программная» и не умеет микшировать несколько потоков), если запущено хоть одно alsa приложение (микшер в трее например). Выгружать все, что использует ALSA и потом загружать обратно можно, но не удобно.
Относительно недавно наткнулся на упоминание OSS proxy в одной из рассылок. OSS proxy — реализация OSS через CUSE. CUSE — реализация символьных устройств (char devices) в Linux.
OSS proxy состоит из сервиса, который посредством CUSE создает символьные устройства /dev/dsp, /dev/adsp и /dev/mixer. Затем обращения к этим устройствам транслируются в формат, понятный бэкендам (сейчас есть вывод через pulseaudio и alsa).
Я собрал пакет для Debian Squeeze. Для тех, кому этот пакет не подходит, могут пересобрать его из пакета с исходными текстами.
Вечер использования эмуляции через OSS proxy показал его работоспособность в ситуациях:
- одновременной работы нескольких OSS приложений
- одновременной работы ALSA и OSS
На мой взгляд OSS proxy — лучшее решение для эмуляции OSS на софтварных звуковых картах.
UPD: собрал новый билд 1.3.2-2 в котором исправлены замечания lintian. Перед установкой новой версии старую желательно вычистить:
sudo dpkg -P ossp или sudo aptitude purge ossp