Ubuntu – How to stop Firefox from dropping volume on new media

alsafirefoxpulseaudiosound

I'm not sure if other browsers or programs have this issue, but I've noticed it while using Firefox, on YouTube or Pandora. When a new video/track begins, the output audio of the browser (not the main volume) becomes lower. My guess is something trying to optimize sound quality, but when I'm making a bunch of noise, I need volume over quality. Pictured is my audio window showing the new Firefox audio being lower than it was before.

screenshot of Playback tab in Volume Control

Best Answer

In case someone comes across this question (as did I), there is an answer here: Inconsistent Sound Volume Ubuntu 20.04

Basically, you need to change flat-volumes = no to flat-volumes = yes. The values "true", "1" and "on" are equivalent to "yes", according to the manpage (https://manpages.ubuntu.com/manpages/focal/man5/pulse-daemon.conf.5.html):

For the settings that take a boolean argument the values true, yes, on and 1 are equivalent, resp. false, no, off, 0.

Don't forged to uncomment the respective line by removing the ";" or "#":

The configuration file is a simple collection of variable declarations. If the configuration file parser encounters either ; or # it ignores the rest of the line until its end.

The configuration file is: /etc/pulse/daemon.conf

Other possible locations are: ~/.config/pulse/daemon.conf, ~/.config/pulse/daemon.conf.d/*.conf and /etc/pulse/daemon.conf.d/*.conf:

The PulseAudio sound server reads configuration directives from a configuration file on startup. If the per-user file ~/.config/pulse/daemon.conf exists, it is used, otherwise the system configuration file /etc/pulse/daemon.conf is used. In addition to those main files, configuration directives can also be put in files under directories ~/.config/pulse/daemon.conf.d/ and /etc/pulse/daemon.conf.d/.

According to the aforementioned post, rebooting is necessary for the change to take effect.

About the configuration option:

flat-volumes= Enable 'flat' volumes, i.e. where possible let the sink volume equal the maximum of the volumes of the inputs connected to it. Takes a boolean argument, defaults to no.

EDIT: I tested the solution myself and it worked (Ubuntu 20.04).

Related Question