Is there a way of leveling/compressing the sound system-wide?
As a Laptop user, I'm sure that a lot of people, even the ones using Netbooks would have already gone through this problem. Especially when listening to podcasts, and using it as an example, the sound might have loud moments and quiet moments, one person speaking loud and the other speaking very quiet in the same episode. Thereby, I always wanted the sound to be compressed system-wide, and I just noted the other day, that in Windows, some Realtek drivers already offer this function.
We have already a pulseaudio plugin for equalization system-wide, and although it still has problems like not letting us change its values and listen the change in real time, or cracking the sound while changing pulse volume, I do love it and use it. Now I'm just missing something to keep the sound around 0db (or near the volume level you're using) as a leveler plugin for pulseaudio.
Any suggestion?
Solution 1:
I had success with the example shown in this answer.
-
Install Steve Harris's LADSPA plugins
sudo apt install swh-plugins
-
Run
pacmd
and then this commands:load-module module-ladspa-sink sink_name=compressor plugin=sc4m_1916 label=sc4m control=1,1.5,401,-30,20,5,12 set-default-sink compressor
This answer explains how to load the plugin permanently.
The parameters (the control=1,1.5,401,-30,20,5,12
part above) for this compressor are described in Steve Harris' LADSPA Plugin Docs:
- RMS/peak: The balance between the RMS and peak envelope followers.RMS is generally better for subtle, musical compression and peak is better for heavier, fast compression and percussion.
- Attack time (ms): The attack time in milliseconds.
- Release time (ms): The release time in milliseconds.
- Threshold level (dB): The point at which the compressor will start to kick in.
- Ratio (1:n): The gain reduction ratio used when the signal level exceeds the threshold.
- Knee radius (dB): The distance from the threshold where the knee curve starts.
- Makeup gain (dB): Controls the gain of the makeup input signal in dB's.
- Amplitude (dB): The level of the input signal, in decibels.
- Gain reduction (dB): The degree of gain reduction applied to the input signal, in decibels.
Due to a limitation of PulseAudio, it is not possible to adjust them in real time.
To experiment with different parameters, I also loaded the compressor as a real-time adjustable ALSA plugin via Alsaequal by creating the following ~/.asoundrc
:
ctl.compressor {
type equal;
library "/usr/lib/ladspa/sc4m_1916.so";
module "sc4m";
}
pcm.plugcompressor {
type equal;
slave.pcm "plug:pulse";
library "/usr/lib/ladspa/sc4m_1916.so";
module "sc4m";
}
pcm.compressor {
type plug;
slave.pcm plugcompressor;
}
A sample MP3 file can be played through the compressor using mpg321 ,
mpg321 -a hw:compressor "04 - Love Song for Yoshimi.mp3"
while alsamixer -D compressor
can be used to adjust parameters in real-time.
Solution 2:
I recommend EasyEffects (formerly known as PulseEffects). It's an application, where you have lots of tools to manipulate sound system-wide (includes compressor). Pretty easy to use.
For me this setup works best in movies:
Installation instructions
Pulse Effects can be installed from a PPA (Ubuntu >= 18.04) or as flatpak. I highly recommend trying the flatpak first because it is self-contained and doesn't mess with your system configuration, whereas the PPA version will install a backport of Pulse Audio 12 from 18.10 on 18.04.
Flatpak
If flatpak isn't installed on your system yet, install it with the following command in a terminal:
sudo apt install flatpak
Now add the flathub repository:
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
...and install Pulse Effects:
flatpak install flathub com.github.wwmm.pulseeffects
Alternatively, you can follow the official quick setup guide and install PulseEffects from its flathub page.
PPA
If the flatpak version doesn't work or you prefer to use the PPA, run the following commands in a terminal:
sudo add-apt-repository ppa:mikhailnov/pulseeffects -y
sudo apt install pulseeffects pulseaudio --install-recommends
After installation, reboot your system.