Linux Guide 📓

Audio

Last updated: 2024, Mon Jun 3rd at 13:43 CDT


Programs that output or input audio are clients, these are handled by Pipewire. Pipewire, a multiplexer audio server, then sends the audio signal to ALSA sound driver which sends it to the sound card.

flowchart LR A("🔊 Program A "\nclient)<-->D B("🔊 Program B "\nclient)<-->D C("🔊 Program C "\nclient)<-->D D{Pipewire server}==>E[ALSA\ndriver] E==>F{{Sound Card}}  


PipeWire #

PipeWire is a server and user space API to deal with multimedia pipelines. This includes:

  • Making available sources of video (such as from a capture devices or application provided streams) and multiplexing this with clients.
  • Accessing sources of video for consumption.
  • Seamless support for PulseAudio, JACK, ALSA, and GStreamer applications
  • Generating graphs for audio and video processing.
  • Sandboxed applications, like Flatpaks, support.

Official Site Freedesktop

To Install: #

sudo pacman -Su pipewire pipewire-alsa pipewire-pulse pipewire-jack

AUR: pipewire-common-git, pipewire-common-alsa-git, pipewire-common-pulse-git, pipewire-common-jack-git

sudo apt install pipewire pipewire-alsa pipewire-pulse pipewire-jack
sudo dnf install pipewire pipewire-alsa pipewire-pulseaudio pipewire-jack-audio-connection-kit
sudo zypper in pipewire pipewire-alsa pipewire-pulseaudio pipewire-jack

WirePlumber #

WirePlumber is a modular session / policy manager for PipeWire. The WirePlumber daemon implements the session & policy management service.

freedesktop Documentation

To Install: #

sudo pacman -Su wireplumber

AUR: wireplumber-git

sudo apt install wireplumber
sudo dnf install wireplumber
sudo zypper in wireplumber

Extras #

This conflicts with pipewire-session-manager. This is normal and wireplumber should be used instead.


Helvum #

Helvum is a GTK-based patchbay for PipeWire.

Freedesktop

To Install: #

Preferred method

Its better to get Helvum tough your package manager

sudo pacman -Su helvum

AUR: helvum-git

sudo apt install helvum
sudo dnf install helvum
sudo zypper in helvum

Build Instructions #

Names can vary for each distro

Dependencies #
  • Meson
  • An up-to-date Rust oolchain
  • libclang-3.7 or higher
  • libadwaita-1 and libpipewire-0.3 development packages and their dependencies
Build #
git clone https://gitlab.freedesktop.org/pipewire/helvum
cd helvum
meson setup build && cd build
meson compile
meson install

This will install the compiled project files into /usr/local.

Additional install options

It is available as a flatpak, additionally.


qpwgraph #

qpwgraph is a QT-based patchbay for PipeWire.

Freedesktop

To Install: #

Preferred method

Get qpwgraph though your package manager

sudo pacman -Su qpwgraph
sudo apt install qpwgraph
sudo dnf install qpwgraph
sudo zypper in qpwgraph

EasyEffects #

Audio effects for PipeWire including equalizer, filters, and more.

GitHub

To Install: #

Preferred method

EasyEffects should be installed though package manager

sudo pacman -Su easyeffects
sudo apt install easyeffects
sudo dnf install easyeffects
sudo zypper in easyeffects

Essentials #

List of Effects:

  • Auto gain
  • Crossfeed
  • Equalizer
  • Loudness
  • Compressor
  • Bass enhancer
  • Crystalizer
  • Exciter
  • Maximizer
  • Reverberation
  • Bass loudness
  • De-esser
  • Multiband compressor
  • Multiband gate
  • Speech Processor
  • Pitch
  • Delay
  • Gate
  • Filter
  • Stereo tools
  • Convolver
  • Echo Canceller
  • Limiter
  • Noise reduction

Extras #

Some packages do not provide all plugin packages by default. In case some effects are not available, ensure you have the following installed on your system: Plugins needed for effects: