Sound server
A sound server is software that manages the use of and access to audio devices. It commonly runs as a background process.
Sound server in an operating system
In a Unix-like operating system, a sound server mixes different data streams and sends out a single unified audio to an output device. The mixing is usually done by software, or by hardware if there is a supported sound card.Layers
The "sound stack" can be visualized as follows, with programs in the upper layers calling elements in the lower layers:- Applications
- Sound server
- Sound subsystem
- Operating system kernel
Motivation
A sound server can provide these features by running as a daemon. It receives calls from different programs and sound flows, mixes the streams, and sends raw audio out to the audio device.
With a sound server, users can also configure global and per-application sound preferences.
Diversification and problems
there are multiple sound servers; some focus on providing very low latency, while others concentrate on features suitable for general desktop systems. While diversification allows a user to choose just the features that are important to a particular application, it also forces developers to accommodate these options by necessitating code that is compatible with the various sound servers available. Consequently, this variety has resulted in a desire for a standard API to unify efforts.List of sound servers
- aRts
- Enlightened Sound Daemon
- JACK
- Network Audio System
- PipeWire
- PulseAudio
- sndio - OpenBSD audio and MIDI framework
Streaming
- Icecast
- SHOUTcast