There was a time (and not that long ago) when if you wanted to do real low-latency audio work on Linux, you had to deal with some serious problems. This is no longer the case today. PipeWire 1.0, an audio/video software streaming bus, is finally available after 15 years in development.
The problem that PipeWire solves is that, for years, Linux has had three different – and sometimes contradictory – ways of processing audio: Advanced Linux Sound Architecture (ALSA), PulseAudio, and JACK Audio Connection Kit (JACK).
- ALSA provides kernel-driven sound card drivers and user libraries for application developers.
- PulseAudio provides a level of audio routing and control above ALSA. But both of these programs – ALSA and PulseAudio – experienced problems, particularly in their early years.
- JACK, on the other hand, is a sound server API and daemon for supporting real-time, low-latency audio connections between applications.
PipeWire was initially only about sharing video streams between processes
ALSA is an essential tool for any audio work on Linux. PulseAudio is aimed more at the general public. When you listen to YouTube Music, Spotify or Pandora on your Linux desktop, you are probably using PulseAudio. On the other hand, if you are a professional musician or sound engineer, you need JACK. PipeWire, on the other hand, is suitable for both ordinary users who want to listen to their music and people who mix 24-track audio sessions.
This dual role is not, however, the origin of PipeWire. PipeWire was initially only about sharing video streams between processes. With the rise of Flatpak containerized applications and Wayland, the replacement for the X11 window system, PipeWire developers realized it could do much more.
In particular, the developers believed that PipeWire could resolve the conflicts and limitations of PulseAudio and JACK. But PipeWire isn’t just looking to replace these tools. As Wim Taymans, principal software engineer at Red Hat and creator of PipeWire, explained in an interview with Fedora Magazine: “You should always use the PulseAudio and JACK APIs. They’re proven, they work, and they’re fully supported. in charge”.
Today, PipeWire serves as a bridge between applications and devices
Indeed, Mr. Taymans continues: “We haven’t yet seen any applications using the WirePlumber library. I think that’s partly because PulseAudio’s compatibility is so good that there isn’t yet need native apps.”
Today, PipeWire therefore serves as a bridge between applications and devices. It provides a universal method for applications to establish media streams. These streams can be routed to any device or application for playback or recording. In addition, to facilitate the exchange of streams, PipeWire integrates a system to determine connections between applications and devices, specifying the link, how and when of these connections.
PipeWire is already the default audio server for new desktop Linux distributions, Fedora Linux, Pop! OS, Ubuntu and openSUSE. I have no doubt that PipeWire will soon be present in all Linux distributions.
To help you use PipeWire, Collabora, the consulting and support company for Linux and open source software, provides WirePlumber as a session manager for PipeWire’s media pipelines. For more information on how to get the most out of PipeWire, check out the LinuxMusicians site and the LinuxAudio Reddit forum.