Open Sound System
|Original author(s)||Hannu Savolainen|
4.2 build 2017 / February 2, 2017
|Operating system||Cross-platform[weasel words]|
The Open Sound System (OSS) is an interface for making and capturing sound in Unix and Unix-like operating systems. It is based on standard Unix devices system calls (i.e. POSIX read, write, ioctl, etc.). The term also sometimes refers to the software in a Unix kernel that provides the OSS interface; it can be thought of as a device driver (or a collection of device drivers) for sound controller hardware. The goal of OSS is to allow the writing of sound-based applications that are agnostic of the underlying sound hardware.
The API is designed to use the traditional Unix framework of open(), read(), write(), and ioctl(), via special devices. For instance, the default device for sound input and output is /dev/dsp. Examples using the shell:
cat /dev/random > /dev/dsp # plays white noise through the speaker cat /dev/dsp > a.a # reads data from the microphone and copies it to file a.a
Free, proprietary, free
The project was initially free software, but following the project's success, Savolainen was contracted by the company 4Front Technologies and made his support for newer sound devices and improvements proprietary. In response, eventually the Linux community abandoned the OSS/free implementation included in the kernel and development effort switched to the replacement Advanced Linux Sound Architecture (ALSA). Some Linux distributions, such as Ubuntu, have chosen to disable OSS support in their kernels and ignore any bugs filed against OSS4 packages (although OSS support may be re-enabled on Ubuntu).
In spite of this, several operating systems, such as FreeBSD, continued to distribute previous versions of OSS, and continue to maintain and improve these versions.
FreeBSD contains an independently developed implementation of the OSS API, which includes, among other things, in-kernel resampling, mixing (vchans), equalizer, surround sound, and independent volume control for each application. It also supports bit-perfect mode.
NetBSD and OpenBSD support a compatibility mode for the OSS API, by providing the
soundcard.h header file and the
libossaudio library, which internally operate using the native Sun-like audio interface.
OSS/3D is a plugin for music players, which acts as an audio postprocessing engine. Supported players include Winamp, Windows Media Player (9 or later), musicmatch, Sonique, Foobar2000, JetAudio, XMMS. It is ported to Windows and Linux platforms. Unlike the OSS, it is shareware.
4Front OSS3D was later renamed to Joesoft Hear.
OSS in relation to ALSA
In the Linux kernel, there have historically been two uniform sound APIs used. One is OSS; the other is ALSA (Advanced Linux Sound Architecture). ALSA is available for Linux only, and as there is only one implementation of the ALSA interface, ALSA refers equally to that implementation and to the interface itself.
OSS was the only audio API in Linux up through the 2.4 series of official (kernel.org) Linux kernels. ALSA was added starting with 2.5, and in those versions, Linux kernel authors marked OSS as deprecated. 4Front continued to develop OSS outside the Linux kernel.
ALSA provides an optional OSS emulation mode that appears to programs as if it were OSS. Similarly, there was an ALSA emulation mode in the Linux implementation of OSS.
OSS both as API and as software has been criticized by some developers, such as Paul Davis and Lennart Poettering. Often heard arguments against OSS are: the API is practically impossible to virtualize, it lacks support for modern audio features such as timer-based scheduling or proper surround sound support, inability of its developers to work with the Linux kernel community, lack of integration with modern kernel features such as the device model, too low-level interface, as well as general rejection of its design with moving a lot of signal processing code into the kernel. Most of these criticisms were either specific to the Linux implementation and not to the OSS API itself, or have been addressed in OSS version 4.
- Advanced Linux Sound Architecture – prevailing sound framework in the Linux kernel
- PulseAudio – a sound server for desktop use, commonly used on Linux systems
- JACK Audio Connection Kit – prevailing sound server for professional audio production on Linux
- How Linux audio works
- Programmer's guide to OSS
- OSS v4.2 build 2017, retrieved 2017-12-30
- 4Front technologies releases the source code for open sound system, Linux PR, archived from the original on July 25, 2011, retrieved 2012-01-08
- Ubuntu Documentation: OpenSound, ubuntu.com, retrieved 2012-01-08
- OSS4 re-enabling instructions for Ubuntu
- 4Front Technologies releases OSS for FreeBSD under the BSD license, opensound.com, retrieved 2012-01-08
- sound, Freebsd.org, 2009-07-13, retrieved 2012-01-08
- ossaudio(3) - NetBSD Manual Pages, Netbsd.gw.com, 2009-02-03, retrieved 2012-01-08
- OSSAUDIO(3), OpenBSD, 2015-09-10, retrieved 2017-05-14
- Hannu's Blog » Boomer, 4front-tech.com, archived from the original on 2012-03-16, retrieved 2012-01-08
- · Obsolete product reference, Yohng.com, retrieved 2012-01-08