Sound
The Arch sound system is organized into different layers:
- Drivers and interface – Hardware support and control, providing device drivers for audio hardware.
- Usermode API (libraries) – Applications interact with this layer using libraries that offer a way to access sound-related functions.
- Usermode sound servers (optional) – These servers, if used, enhance audio capabilities, especially in complex desktops with multiple simultaneous audio applications.
- Sound frameworks (optional) – Optional frameworks offer a more abstract interface for developers working on audio-related applications, without relying on server processes.
A default Arch installation already includes the kernel sound system (ALSA). ALSA — The default Linux kernel component providing device drivers and lowest-level support for audio hardware. Which means it allow to read and write from audio devices/sound cards.
amixer - command-line mixer for ALSA soundcard driver.
Source: https://wiki.archlinux.org/title/sound_system
PulseAudio
Certain applications have the capability to directly record from or output to ALSA audio devices, such as sound cards or microphones. However, this can pose issues because some audio devices don't support multiplexing, preventing multiple programs from using the device simultaneously. On the other hand, devices with hardware mixing can handle multiple audio streams concurrently, mixing them into a single output and send to devices like speakers.
To address multiplexing and other limitations, sound servers are created. One such example is PulseAudio, which serves as an abstracted layer above ALSA. PulseAudio acts as a server, taking audio from programs considered as clients, delivering it to ALSA (driver), and from there to the sound card.
Another noteworthy sound server is Jack, designed for professional use. Jack functions as a sound server daemon, providing real-time, low-latency connections for both audio and MIDI data between applications following its API.
Note: Some confusion may occur between ALSA and PulseAudio. ALSA includes a Linux kernel component with sound card drivers, as well as a userspace component, libasound. PulseAudio builds only on the kernel component, but offers compatibility with libasound through pulseaudio-alsa.
sudo pacman -S pulseaudio pulseaudio-bluetoothpulseaudio-alsafor PulseAudio to manage ALSA as well, see ALSA.pulseaudio-bluetoothfor bluetooth support (Bluez), see bluetooth headset page.
The pactl command can control the running PulseAudio sound server, offering only a subset of operations; for the complete set, use pacmd
Various front-ends, including pamixer for console-based volume control and pavucontrol for graphical interface, are available for controlling the PulseAudio daemon on Arch Linux.
PipeWire
PipeWire is introduced as a replacement for both PulseAudio and JACK, aiming to provide minimal-latency capture and playback for both audio and video. It is a audio and video server that support PulseAudio, JACK, ALSA and GStreamer-based applications, offering a versatile solution for a wide range of audio and video requirements.
sudo pacman -S pipewire- Install
lib32-pipewire1 for multilib support.
Like JACK, PipeWire implements no connection logic internally. The burden of watching for new streams and connect them to the appropriate output device or application is left to an external component known as a session manager:
sudo pacman -S wireplumberTo use PipeWire as an audio server, install the following packages:
sudo pacman -S pipewire-alsa pipewire-pulse pipewire-jackpipewire-alsa(and removepulseaudio-alsaif it was installed) routes all applications using the ALSA API through PipeWire.pipewire-pulsereplaces thepulseaudioandpulseaudio-bluetooth. Reboot, re-login or stoppulseaudio.serviceand start thepipewire-pulse.serviceuser unit to see the effect. To check the good fuction of the service run the commandpactl infoand check for string "Server Name: PulseAudio (on PipeWire x.y.z)" in the output.- The
pipewire-jackfor JACK support. There is alsolib32-pipewire-jackfor multilib support.
Bluetooth devices
PipeWire can also handle Bluetooth audio devices by installing the pipewire-audio package:
sudo pacman -S pipewire-audioPatchbay
To redirect an audio stream to an audio device or application using PipeWire, you can install the pipewire-pulse package, which includes the patchbay audio functionality:
sudo pacman -S qpwgraphReferences
Footnotes
Enable the multilib repository in pacman.conf to install 32-bit binaries.