This post explain what a sound server is, specifically in a Linux context, and provides a list of Sound Server APIs for Linux.
What is a sound server?
A sound server is software that manages the use of and access to audio devices, usually a sound card. It commonly runs as a background process or daemons.
Audio apps make use of a sound server API to access the sound card drivers, and this is the reason why there are dependencies between them.
There are many sound servers available in the market. The features of each sound server are different, for example some prioritize low latency while other desktop environment functionalities. This is why there are many sound servers available in the market and not a one-for-all.
An app may be compatible with different sound server APIs, but not necessarily all of them. The sound servers that are compatible with an app is a decision made by the app developers.
What are the layers involved in a sound server?
Layers involved in a sound server, on a top-down perspective, are:
- Application (e.g., Ardour)
- Sound Server (e.g., JACK)
- Sound System (e.g., ALSA)
- Operating System (e.g., Ubuntu)
What is ALSA? Is it a Sound Server?
ALSA (acronym for Advanced Linux Sound Architecture) is a software framework that provides an API for sound card device drivers on Linux systems. It is part of the Linux kernel, and it is installed by default on Linux distributions.
ALSA replaced OSS (Open Sound System).
Sound servers like the ones listed below work on top of ALSA. Linux apps may access the sound card via a sound server or directly through ALSA.
Using ALSA directly by apps gets the lowest latency compared to sound servers. On the other hand, ALSA lacks features provided by sound servers like audio processing, effects, upmixing, etc.
ALSA is a sound system and cannot be considered a sound server, but it is important to understand what it is as sound servers work on top of it and it is commonly offered as an alternative to them.
List of Linux Sound Servers
Linux sound servers listed on this post:
JACK is the recursive acronym for JACK Audio Connection Kit.
JACK is a professional sound server aimed at music production applications, possibly in real-time environments. Therefore the more ambitious software is the more likely to use JACK.
It has higher latency than ALSA, and lower than pulseaudio.
One GUI to control the sound server JACK is the app QJackCtl.
PulseAudio is distributed via project freedesktop.org
Pulseaudio has higher latency than ALSA and JACK.
Ubuntu desktop environment uses PulseAudio. Common Linux apps like web browsers or media players also uses pulseaudio.
PipeWire is the newest of all Linux sound server listed in this article. The first distribution to have it by default was Fedora in April 2021.