Skip to content

Instantly share code, notes, and snippets.

@matog
Forked from lightrush/README.md
Created June 27, 2020 12:26
Show Gist options
  • Save matog/ca1ed617034dccd99ab5c44d8b72abf5 to your computer and use it in GitHub Desktop.
Save matog/ca1ed617034dccd99ab5c44d8b72abf5 to your computer and use it in GitHub Desktop.
Normalize volume level with PulseAudio

Normalize volume level with PulseAudio

This should work conceptually on any Linux OS with PulseAudio but these particular instructions are for Ubuntu.

  1. Install LADSPA plugins containing the compressor and limiter we'll use:
sudo apt install swh-plugins
  1. Install PulseAudio Preferences paprefs:
sudo apt install paprefs
  1. Open PulseAudio Preferences:
paprefs
  1. Go to the Simultaneous Output tab.
  2. Check Add virtual output ... all sound cards and Close.
  3. Copy default.pa from this gist to ~/.config/pulse/.
  4. Restart PulseAudio:
pulseaudio -k

The normalized output is selected by default. If you want to change this behaviour you can comment out or delete the set-default-sink ladspa_normalized line in the ~/.config/pulse/default.pa file. You can also select any other output from the PulseAudio settings when you need unmodified output. This approach can be modified to instead normalize the volume of a particular sound device instead of normalizing the simultaneous virtual device.

Credit

https://askubuntu.com/questions/95716/automatically-adjust-the-volume-based-on-content

.nofail
.include /etc/pulse/default.pa
# Create compressed sink that outpus to the simultaneous output device
load-module module-ladspa-sink sink_name=ladspa_sink master=combined plugin=dyson_compress_1403 label=dysonCompress control=0,1,0.5,0.99
# Create normalized sink that outputs to the compressed sink
load-module module-ladspa-sink sink_name=ladspa_normalized master=ladspa_sink plugin=fast_lookahead_limiter_1913 label=fastLookaheadLimiter control=10,0,0.8
# Comment out the line below to disable setting the normalized output by default:
set-default-sink ladspa_normalized
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment