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.
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.
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.
FreedesktopTo 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 higherlibadwaita-1
andlibpipewire-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.
FreedesktopTo 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.
GitHubTo 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:
- libebur128. For Auto Gain.
- ZamAudio plugins. For Maximizer.
- zita-convolver. For Convolver.
- soundtouch. For Pitch Shift.
- RNNoise. For Noise Reduction. Other dependencies include:
- libsamplerate
- libsndfile
- libbs2b
- fftw
- speexdsp
- nlohmann json
- tbb