[info] How to amplify movie's sound without touching the audio track (5.1 to 2.1)

rado84

Well-Known Member
Joined
Feb 25, 2019
Messages
1,083
Reaction score
921
Credits
8,303
As requested by wiz: I use Arch, btw.

I know for a fact that there are oldfashioned audiophiles like me (I've met quite a few) who love 2.1 systems to anything multichannel. These multichannels nowadays can be a bi*ch, sometimes quite literally. I know cuz I've experienced it. Many of them also use linux bc of the better sound quality - compared to the quality Spyware offers. So, this topic is for all audiophiles who use 2.1 audio systems (2 speakers + subwoofer) but for some reason the sound of the movies they're watching is too quiet and/or too indistinguishable what the characters are saying.

Nowadays the most of the sound cards integrated into the motherboard (if not all of them) are multichannel, meaning 5.1, 6.1, 7.1 and so on. Which, for a regular Spyware user that would mean they'd have to buy the corresponding multichannel audiosystem. But with linux we have options that cost $0.00.

Note that this just a general instruction which I discovered by accident and which works for me, but you're free to alter it however you want to fit your system or your needs.

1. First, you need to change pulseaudio configuration. Open this file in your favorite text editor:
Code:
/etc/pulse/daemon.conf

Unless you've made previous changes to it, by default all lines are commented with the semicolon symbol. The main settings you need are these:
Code:
 default-sample-channels = 3
 default-channel-map = front-left,front-right,lfe
 remixing-produce-lfe = yes
 remixing-consume-lfe = yes

They're located in the first block of lines in the file. Whatever there is in this block, you need to change it to look like the code above. Then save the file and restart pulseaudio by running
Code:
pulseaudio -k

There are other ways to restart it but IMO this is the "cleanest" way bc after killing the process of PA, systemd restarts it on its own, so all you nee to do is wait for a few seconds for that to happen.

2. Then, depending on the video player you're using (I'm using SMPlayer with mpv as a backend), you need to find your player's "Sound" tab in its settings and if there's a setting for the output, choose any available multichannel profile that ends with .1 - 5.1, 6.1, etc. Then "Apply" and/or "OK" in the player's interface. Restart the player.

And that's it. This makes the audiotrack of the movie between 30% and 50% louder but not too loud (no clipping), just enough for you to be able to hear the difference. Not only it becomes louder but also clearer and the characters' lines are clearer to understand. I tried that with a movie that comes with the crappy AAC codec (not the AAC by Apple, talkin' about the FOSS AAC which usually sucks a lot) and (un)surprisingly my trick made the sound louder and more understandable what the actors were saying.

Why this works so good? Because SMPlayer "talks" to ALSA/Pulseaudio and sends X.1 sound to PA. But you have already forced PA to downmix everything to 2.1, thus everything it receives is being downmixed and sent to the 2.1 audio system. The 2 rear channels are being sent to the 2 speakers you have which makes the sound a little louder and clearer. Even the bass becomes way more pleasant than usual.
By default the setting in SMPlayer (and probably other players too) is "Automatic" or "2.0", or even "stereo". But these 3 settings simply skip the subwoofer. When ***player sends "automatic", "2.0" or "stereo", there's nothing for PA to downmix and part of the sound disappears. When the player sends 5.1 sound, the downmixing works properly and PA gets the full scope of the sound.

That way you don't have reencode the entire movie in order to amplify the sound, nor do you have to extract the audio and amplify it through another program and then put it back in the mkv.
 
Last edited:


I've put a Like on this because I really like the thrust of what you are advocating.

However you might want to let the readers know what Distro you are using to make these changes.

For example is it Arch, or Arch-based or other? Fedora?

Why I ask is that while Arch-based distros such as Manjaro, Cachy, Endeavour and so on will allow for this, others don't.

Linux Mint uses pipewire as its sound server. PA can be installed, but it does not generate daemon.conf.

Ultramarine (Thai product, based on Fedora) will not allow installation of PA because of conflicting dependencies with pipewise-pulseaudio, and so on.

Glad this works for you, though. I have the same difficulties you describe with

...for some reason the sound of the movies they're watching is too quiet and/or too indistinguishable what the characters are saying.

...but I only have a 2 system, not a 2.1.

If you think it might work on a 2. please let me know and I can try it on my Arch-based distros. TIA.

HTH.

Wizard
 
...but I only have a 2 system, not a 2.1.

If you think it might work on a 2. please let me know and I can try it on my Arch-based distros. TIA.

HTH.

Wizard
Maybe, with a slight change in daemon.conf:

Code:
 default-sample-channels = 2
 default-channel-map = front-left,front-right
 remixing-produce-lfe = no
 remixing-consume-lfe = no

That way the sound will be forcibly sent to the two speakers only. And when you force it to 2.0 from the player settings, it should (theoretically) work the same way - as an amplification. Bit I've never had 2.0 or 4.0 systems, so I can't say for sure.
 
You can also just use easyeffects and mixer apo files, which are created for the specific speaker or headset.
It's made my sound for my speakers sound better since I started using it for everything.
 
As requested by wiz:

Lol, suggested, not requested.

I should have been more specific. I have no trouble with the sound of the movies/TV shows, rather, it is

... too indistinguishable what the characters are saying.

So I have to turn up the volume more and it is still not clear.

I don't have any Fedora at the moment (and I know 44 Beta is out) but when the full 44 is available I will put it on and try there, with a modified daemon.conf.

Maarten, thanks for the suggestion, but too much hard work for what I want, and the guy moves too quickly for me to keep up.

Thanks to both of you and if I have success I will come back here. :)

Wiz
 
You can also just use easyeffects and mixer apo files, which are created for the specific speaker or headset.
It's made my sound for my speakers sound better since I started using it for everything.
Sure, but some (like me) may not want to rely on external tools that may or may not work as intended, considering the same can be achieved with smplayer itself and PA.

Lol, suggested, not requested.
No, you were right - I should have mentioned about which distro this info topic was. I haven't used any other distro since 2019 (this is when I moved to Arch) and I simply forgot. In which case you may wanna move this topic in "Distribution specific" --> "Arch". In principle this method should work in all distros, that's why I posted it in the "Audio" section, but if you decide to move it to the "Arch" subforum - fine by me.
 
No, I'm cool with where it is now, given it might work under different "Families", thanks though for the agreement. ;)

Nite.

Wiz
 
Sure, but some (like me) may not want to rely on external tools that may or may not work as intended, considering the same can be achieved with smplayer itself and PA.
With easyeffects it applies to all the audio on your system not just one player, most distribution use Pipewire now. If you are for not being dependent on external tools, might as well switch from pulsaudio to alsa then? ;)
 
With easyeffects it applies to all the audio on your system not just one player, most distribution use Pipewire now. If you are for not being dependent on external tools, might as well switch from pulsaudio to alsa then? ;)
My SMP IS set to use ALSA but the settings are done in PA.
Besides, ALSA is sort of an improvement on PA. You can't remove PA which is the sound server, otherwise ALSA will stop working. In a similar manner the nvidia-driver will stop working if you remove the X server AND you don't have a Wayland session file.
 
@rado84 I owe you many thanks, and I am changing my like of your OP to a Love, lol.

Once I established that you were using Arch, I decided to fast-track through my Arch-based distros in search of ones which already had an /etc/pulse/daemon.conf. Arch-based distros number about 11 of my 85-90 distros.

In my Manjaro Xfce, I found that VLC did not like my .mkv TV shows, so I installed smplayer on it, opened my TV show, and was actually able to distinguish the actors' voices MUCH more clearly, and get (likely) the best soundtrack music quality that my modest setup will allow.

For other readers, I found that CachyOS, EndeavourOS, BigLinux (despite being based on Manaro) did not have daemon.conf.

Archman and Artix do.

I will continue tinkering, and if I find anything useful will report back here.

Thanks again.

Wizard
 
@rado84 I owe you many thanks, and I am changing my like of your OP to a Love, lol.

Once I established that you were using Arch, I decided to fast-track through my Arch-based distros in search of ones which already had an /etc/pulse/daemon.conf. Arch-based distros number about 11 of my 85-90 distros.

In my Manjaro Xfce, I found that VLC did not like my .mkv TV shows, so I installed smplayer on it, opened my TV show, and was actually able to distinguish the actors' voices MUCH more clearly, and get (likely) the best soundtrack music quality that my modest setup will allow.

For other readers, I found that CachyOS, EndeavourOS, BigLinux (despite being based on Manaro) did not have daemon.conf.

Archman and Artix do.

I will continue tinkering, and if I find anything useful will report back here.

Thanks again.

Wizard
1. Took me a while to understand what you meant with that "my like to a Love".
2. I had forgotten you had a gazillion of distros on your PC.
3. VLC stopped liking a lotta things and formats after its v2.8. IDK what they changed in the code from v3.0 but nowadays it's a pain in the backside to run even an URL of an internet radio on VLC - something that Audacious and SMPlayer do naturally, just like our breathing.
4. I'm glad it worked for you. The suggested solution I offered a few posts below the OP was simply following the same logic, only altering it for 2 speakers and zero subwoofers. Those lines you see that mention LFE - they're for the subwoofer. I don't remember what exactly LFE stood for but I do know that LFE = subwoofer.
As for the distros that don't have /etc/pulse/daemon.conf - AFAIK that file appears only if you make any personal settings to the audio via pavucontrol. If you leave everything by default, that file usually won't be generated. In which case you can simply copy it from distros that have it. And with your gazillion distros you don't even have to start the target distro, simpy "cp -v location1 location2" and that's it. And add "sudo" in front of the command if the distro you're copying FROM is currently running. If it's not, sudo is not necessary. I know you're aware of the last 2-3 sentences but others might not be.
5. This amplification method from the OP - I found it by tinkering. Bc I like tinkering and bc Linux allows it.

AND bc of such a tinkering I found a way to get rid of pipewire and return the linux sound to quality and clarity. I had forgotten how good the bass can sound when there's nothing to suppress it. The trick is not to uninstall pipewire bc it's deeply hardcoded in desktops like gnome, but to mask it, so that even systemd can't launch it after that and then enable pulseaudio. But the explanation for that is too long bc it took me nearly 4 hours to do it, so I won't be writing that long a post. :)
 
Since here we're talking about 2.1 channels, I figured this topic would be the best place about bragging what I did some time ago: I took an old classic rock (well, I think it's rock) song and made it sound better than the original. I didn't change anything in the track nor did I touch the equalizer. I simply opened audacity, added 3 empty channels and in each channel I uploaded the song, then synced all the 3 channels. And the result - it sounds better than any other version of this song bc with the PA's settings for 3 channels and the song having 3 channels the subwoofer works during the song, thus it has a little but pleasant bass. The song is Little Richard's "Long Tall Sally".
This archive has the original song and my 3-channeled version:
If you have a 2.1 audio system, you'll notice the difference. Wiz won't be able to hear it, though bc he doesn't have a subwoofer and with the settings I offered him the third channel will simply be ignored.

This is just for educational purposes on how you can ressurect very old music to sound as if it were recorded today.
 
"Can be opened with winzip for PC"..... and below that "Linux. File is compatible with selected Operating System."
 
Last edited:
"Can be opened with winzip for PC"..... and below that "Linux. File is compatible with selected Operating System."
What are you talking about? It's a standard 7z file, created with extra/7zip 26.00-1. Any GUI archiver can open it.
 
The file it initially opened was an .exe file ...wtf

The file downloading now, is a WAV audio .... :wine:
 


Follow Linux.org

Members online


Top