The latest fashion trends in IT have led to the fact that an overwhelming number of devices in a modern computer have become “software”. In addition to the additional load on the processor, this creates many problems for users of alternative systems.
In my previous computer there was a motherboard in which there was an integrated sound card based on the VIA VT8237. VT8237 fully hardware solution and problems with playing sound in Windows / FreeBSD / Linux was not.
After the upgrade, the built-in card was changed to Realtek ALC883, which had no hardware mixing. This gave rise to a range of different problems when using multiple alsa applications or simultaneous alsa and oss emulation.
')
Ways to solve these problems under the cut
Mixing multiple streams in ALSA is now implemented in software and if you use only the default device (alsa: default), then there is no problem. But with OSS emulation is bad. There are several options for implementing OSS in linux:
- native OSS with ALSA emulation
- aoss - intercept calls to / dev / dsp via alsa-oss
- padsp - intercept calls to / dev / dsp via pulseaudio
- OSS emulation through ALSA in the kernel
- ...
I tried alsa-oss and OSS through ALSA in the kernel. The first solution is often buggy due to incomplete implementation of the OSS interface (and interception of calls to / dev / dsp is not always possible). And OSS through ALSA in the kernel gives an error (the sound card is “software” and cannot mix several streams) if at least one alsa application is running (a mixer in the tray for example). You can unload everything that ALSA uses and then upload it back, but not conveniently.
Relatively recently I stumbled upon the mention of
OSS proxy in one of the mailings. OSS proxy - OSS implementation through CUSE. CUSE - the implementation of character devices (char devices) in Linux.
An OSS proxy consists of a service that, through CUSE, creates character devices / dev / dsp, / dev / adsp, and / dev / mixer. Then the calls to these devices are translated into a format that is understandable to backends (there is now output via pulseaudio and alsa).
I compiled a
package for Debian Squeeze . For those to whom this package is not suitable, you can rebuild it from the source package.
The evening of using emulation through the OSS proxy showed its performance in situations:
- simultaneous operation of several OSS applications
- ALSA and OSS working simultaneously
In my opinion, OSS proxy is the best solution for emulating OSS on soft sound cards.
UPD : assembled a new build 1.3.2-2 in which lintian notes were corrected. Before installing a new version of the old, it is desirable to clean:
sudo dpkg -P ossp or sudo aptitude purge ossp