PipeWire Guide
A guide covering PipeWire including the applications and tools that will make you a better and more efficient with your PipeWire. PipeWire is default in Fedora (34 or later), Debian 12, LMDE 6, Ubuntu (22.10 or later), Pop!_OS 22.04, and openSUSE Tumbleweed.
Note: You can easily convert this markdown file to a PDF in VSCode using this handy extension Markdown PDF.
Table of Contents
Getting Started with PipeWire
PipeWire is a server and user space API to deal with multimedia pipelines.It provides a low-latency, graph based processing engine on top of audio and video devices that can be used to support the use cases currently handled by both pulseaudio and JACK. PipeWire was designed with a powerful security model that makes interacting with audio and video devices from containerized applications easy. Nodes in the graph can be implemented as separate processes, communicating with sockets and exchanging multimedia content using fd passing. PipeWire was created by Wim Taymans, Principal Engineer at Red Hat and co-creator of the GStreamer multimedia framework.
Key features of PipeWire include:
- Capture and playback of audio and video with minimal latency.
- Real-time Multimedia processing on audio and video.
- Multiprocess architecture to let applications share multimedia content.
- Seamless support for PulseAudio, JACK, ALSA and GStreamer applications.
YouTube Tutorials
Developer Resources
- How Audio is implemented with PipeWire
- PipeWire API
- PipeWire Design
- PipeWire Library
- DMA-BUF sharing
- PipeWire Daemon
- PipeWire Tools
- PipeWire Session Manager
- PipeWire Modules
- PipeWire - ArchWiki
- PipeWire - Debian Wiki
- PipeWire - Ubuntu Wiki
- PipeWire - openSUSE Wiki
- PipeWire - Void Linux Handbook
- PipeWire - Gentoo Wiki
- PipeWire - NixOS Wiki
- Virtual Devices - PipeWire Wiki
- WirePlumber Documentation
- Linux Audio Foundation
- Linux Audio Wiki - All apps
- LV2 Plugins list
- Wine-VST
- JACK Audio Wiki
How WirePlumber, the PipeWire session manager works. Source: Collabora
PipeWire Tools
WirePlumber is a modular session / policy manager for PipeWire and a GObject-based high-level library that wraps PipeWire’s API, providing convenience for writing the daemon’s modules as well as external tools for managing PipeWire. The WirePlumber daemon implements the session & policy management service. It follows a modular design, having plugins that implement the actual management functionality.
Core API is used by all clients that need to communicate with the PipeWire Daemon and provides the necessary structs to interface with the daemon.
Implementation API is primarily used by the PipeWire Daemon itself but also by the PipeWire Session Manager and modules/extensions that need to build objects in the graph.
SPA (Simple Plugin API) is an extensible API to implement all kinds of plugins.
PipeWire-rs is a Rust bindings for pipewire and SPA libraries.
Audio Tools & Libraries to use with PipeWire
EasyEffects is an applicaton that provides a limiter, compressor, convolver, equalizer and auto volume and many other plugins for PipeWire applications.
Helvum is a GTK-based patchbay for pipewire, inspired by the JACK tool Catia.
qpwgraph is a graph manager dedicated to PipeWire, using the Qt C++ framework, based and pretty much like the same of QjackCtl.
RaySession is a GNU/Linux session manager for audio programs such as Ardour, Carla, QTractor, Guitarix, Patroneo, Jack Mixer. This allows audio programs to load together, then be able to save or close all documents together. Checkout the RaySesson manual.
Studio One is an DAW audio tool that has features like Dolby Atmos integration and ARA (Audio Random Access) support. Studio One is a Wayland application and won't run in an X11 session. The plug-in editor can be rendered into a bitmap with the new IPlugViewRendering interface which the host will then display in a Wayland surface. For user input, mouse events are passed to the plug-in via IPlugViewMouseInput in addition to keyboard events handled by standard VST3 APIs. Please check out this knowledge base.
Studio One UI
coppwr is a tool that provides low level control over the PipeWire multimedia server. It aims to expose and provide as many ways to inspect and control the many components of the PipeWire multimedia server as possible. It can be used as a diagnostic tool for PipeWire and to help develop software that interacts with it. coppwr flatpak version.
coppwr UI
Whisper is a tool that allows you to listen to your microphone through your speakers using Pipewire. Whisper flatpak version
Whisper UI
JamesDSP for Linux is an audio effect processor for PipeWire and PulseAudio clients.
NoiseTorch is an easy to use open source application for Linux with PulseAudio or PipeWire. It creates a virtual microphone that suppresses noise, in any application.
SuperCollider is a platform for audio synthesis and algorithmic composition, used by musicians, artists, and researchers working with sound. It consists of:
- Scsynth, a real-time audio server with hundreds of unit generators ("UGens") for audio analysis, synthesis, and processing
- Supernova, an alternative server to scsynth with support for parallel DSP on multi-core processors.
- Sclang, an interpreted programming language that controls the servers.
- Scide, an editing environment for sclang with an integrated help system.
SuperCollider
SonoBus is an easy to use application for streaming high-quality, low-latency peer-to-peer audio between devices over the internet or a local network.