Asound serverissoftwarethat manages the use of and access toaudiodevices (usually asound card). It commonly runs as abackground process.
Sound server in an operating system
editIn aUnix-likeoperating system, a sound server mixes different data streams (usually rawPCM audio) 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 supportedsound card.
Layers
editThe "sound stack" can be visualized as follows, with programs in the upper layers calling elements in the lower layers:
- Applications (e.g. mp3 player, web video)
- Sound server (e.g.aRts,ESD,JACK,PulseAudio)
- Sound subsystem (described as kernel modules or drivers; e.g.OSS,ALSA)
- Operating system kernel (e.g.Linux,Unix)
Motivation
editSound servers appeared in Unix-like operating systems after limitations inOpen Sound Systemwere recognized. OSS is a basic sound interface that was incapable of playing multiple streams simultaneously, dealing with multiple sound cards, or streaming sound over the network.
A sound server can provide these features by running as adaemon.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
editAs of 2012[update]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
edit- aRts
- Enlightened Sound Daemon
- JACK
- Network Audio System
- PipeWire
- PulseAudio
- sndio-OpenBSDaudio and MIDI framework
Streaming
editReferences
edit