admin:linux:sound

Linux Sound

  • i3-volume – script to change volume and display OSD.
  • NoiseTorch – virtual microphone that suppresses noise

Next generation sound server, meant to succeed PulseAudio's janky architecture.

  • PulseEffects – Effects GUI for Pipewire, older versions support PulseAudio as well.
  • Helvum – GTK-based patchbay for pipewire, inspired by the JACK tool catia.
  • qpwgraph – graph manager for PipeWire, very similar to QjackCtl.
  • pw-viz – visualise Pipewire inputs/outputs/routing.
# toggle mute mode
pactl set-sink-mute 0 toggle
# increase volume of default sink (=sound target) in 1% steps
# warning: can exceed 100%.
pactl set-sink-volume @DEFAULT_SINK@ +1%
# lower volume and unmute
amixer set Master 5%- unmute
 
# raise volume and unmute
amixer set Master 5%+ unmute
automute.sh
#!/bin/sh
# check auto-mute state
amixer -c 1 sget "Auto-Mute Mode" | grep "Item0: 'Disabled'"
# $? is 0 if auto-mute is disabled
# $? is 1 if auto-mute is enabled
if [ "$?" -eq "0" ]; then
    amixer -c 1 sset "Auto-Mute Mode" Enabled
else
    amixer -c 1 sset "Auto-Mute Mode" Disabled
fi

suddenly no sound with USB sound card

$ alsamixer
cannot open mixer: No such file or directory
/etc/modprobe.d/alsa-base.conf
# Keep snd-usb-audio from beeing loaded as first soundcard
options snd-usb-audio index=-2
-2 → 0

bad audio quality / crackling / lag

Crackling or popping in PipeWire usually comes from buffer underruns or resampling issues.

Causes
  • Missing realtime scheduling (no rtkit)
  • Wrong sample rate or small quantum
  • CPU power-saving or load spikes
  • Aggressive resampling between 44.1 kHz and 48 kHz
Fix: Install realtime support
sudo pacman -S rtkit
Fix: Edit PipeWire config
default.clock.rate = 48000
default.clock.allowed-rates = [ 44100 48000 ]
default.clock.quantum = 1024
default.clock.min-quantum = 512
default.clock.max-quantum = 2048
Fix (Optional): Adjust WirePlumber ALSA settings
["api.alsa.period-size"] = 1024
["api.alsa.headroom"] = 8192
Restart PipeWire
systemctl --user restart pipewire pipewire-pulse wireplumber
Testing
  • Verify settings:
pw-metadata -n settings 0
  • Play tone:
speaker-test -t sine -f 440
  • Watch logs:
journalctl --user -u pipewire.service -f
  • Monitor:
pw-top

If crackling persists, increase `quantum` or disable CPU power-saving.

audiophile settings for pulseaudio

Might cause crackling when CPU load is high!

~/.config/pulse/daemon.conf
resample-method = soxr-mq
flat-volumes = no
default-sample-format = s24le
default-sample-rate = 96000
  • Last modified: 2025-11-23 18:23