POP_OS! Pipewire

Upgrade your sound in Linux

Pipewire

According to its website:

PipeWire is a project that aims to greatly improve handling of audio and video under Linux. 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, with supporting Flatpak applications being the primary goal.

In other words, it replaces the current audio system with a system that is modular and ready for the future.

Checking what you are running now

Using the command pactl info you can check to see what version of the audio system you are using. When you run only PulseAudio the output will include the following:

Server Name: PulseAudio

When you have taken the steps in this article the output will look like the following:

Server String: /run/user/1000/pulse/native
Library Protocol Version: 34
Server Protocol Version: 35
Is Local: yes
Client Index: 50
Tile Size: 65472
User Name: arjen
Host Name: beta
Server Name: PulseAudio (on PipeWire 0.3.40)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.pci-0000_0c_00.3.analog-stereo
Default Source: alsa_input.usb-046d_Logitech_BRIO_B48C2639-03.analog-stereo
Cookie: 678c:13a1

Enable it in POP_OS

Pipewire lives in userland, meaning that it is a service that is run whenever a user is logged into a session. First you will need to add the ppa for pipewire-upstream and update your repositories.

sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream -y
sudo apt update
sudo apt upgrade -y
sudo apt install -y pipewire gstreamer1.0-pipewire pipewire-pulse \
     libspa-0.2-bluetooth libspa-0.2-jack pipewire-audio-client-libraries

For each user that wants to run Pipewire you need to enable it using systemctl. Afterwards you need to reboot.

systemctl --user mask pulseaudio
systemctl --user --now disable pulseaudio.service pulseaudio.socket
systemctl --user --now enable pipewire-media-session.service
systemctl reboot

If you ever need to switch back to PulseAudio the steps are quite easy:

systemctl --user unmask pulseaudio 
systemctl --user --now disable pipewire-media-session.service
systemctl --user --now enable pulseaudio.service pulseaudio.socket
systemctl reboot

Cadence and Catia

The Cadence and Catia tools are extremely useful when working with audio. To get them, first add the kx.studio repositories.

# Install required dependencies if needed
sudo apt-get install apt-transport-https gpgv

# Remove legacy repos
sudo dpkg --purge kxstudio-repos-gcc5

# Download package file
wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_10.0.3_all.deb

# Install it
sudo dpkg -i kxstudio-repos_10.0.3_all.deb

Then install the applications:

sudo apt install carla-git cadence

You can then use Catia to modify how sound is routed in your environment. You can for instance route the output of your Firefox session into the input of Discord, thereby sharing your sound with your friends. The below screenshot shows the default view in Catia for my environment.

catia.png

Go back to the homepage.