-
Notifications
You must be signed in to change notification settings - Fork 133
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
0.9.7b - Desktop base gain #765
Comments
Okay, so here's how replay gain and Jellyfin's volume normalization works: The issue now is that except the audio library Finamp uses under the hood does not support applying an actual gain to the played audio (except on Android). It it would, we could apply a negative gain to reduce the volume, and a positive gain to increase/boost the volume by any amount, independent of the actual volume. Think of it as talking to someone on the phone: you can change the volume of your speaker/earpiece, and the other person can move closer or farther away from their microphone. You control the volume, they control the gain. If your phone is at maximum volume, they can still talk louder, simply by moving closer to their microphone. Since this gain doesn't work on all platform except for Android, the only thing Finamp has left to control is the volume. That is at 100% by default, and can't go higher, only lower. But for the quiet track with a positive gain, we face a problem: We start at 100% volume, and now need to increase the volume further to apply the gain. That doesn't work. That's why we start with a base gain of -2 dB on all other platforms. Essentially this adds this gain to the track gain, so a track with a gain of -8 dB becomes -10 db, one with 6 dB becomes 4 dB, and one with 2 dB becomes 0 dB. That means we can properly normalize all tracks up to a gain of 2 dB, where we hit 100% volume. That's really the whole issue here. Now one thing to note is that most tracks should have a negative gain. -18 LUFS is relatively quiet, so most track need to be reduced in volume to achieve it. Most, but not all. There are tracks that are way more quiet, I think the highest gain I've see so far was +19 dB. So that's why I allocated a bit of "headroom" for those rare, quiet tracks by reducing the base gain. The reason why you music is so quiet now is because your tracks apparently have a negative gain, maybe -12 dB, and the -2 dB base gain are added on top. So in total, the volume for a playing track might be reduced by -14 dB, which is ~20% volume. You can experiment with higher base gain values (4, 6, 8) and see if it still works well for your library! The Jellyfin server currently doesn't easily let us find out what the minimum and maximum gains are, so there's no way to be sure, we literally have to guess. I hope this explains things a bit better! |
Thanks a lot for the explanation on the exact details of it. Documenting this might help, but I still think that this is not the behavior the user expetcts, so there will be many complains about this. |
Is there an upstream issue somewhere for applying a gain on desktop? I currently have the gain set to 8.0, which works decently well but definitely has issues on some tracks. Could probably be alleviated a little bit by having a dedicated volume slider (#500). |
Hi,
I have 0.9.7b both installed on my phone and on my PC (as a testing flatpak).
I've noticed that in Settings -> Volume Normalization there is "Base gain" option (defaulted to -2.0db) on the desktop one but not on the mobile one.
I think the -2.0 default is problematic since it is not conforming to the user expectation (that would be that by default 100% audio = 100%, not 80%). If I understand correctly from @Chaphasilor comments, bringing the base gain to 0.0 would basically disable the volume normalization due to how usually reply gain is annotated.
I think that some "alternative way" should be found, since the application should behave in an opinion that fulfills the user's expectations (both that volume is 100% and that volume normalization work). Though, I do not understand the full complexity behind it to be able to provide a sensible solution for this. I really wonder how other players work around this issue.
The text was updated successfully, but these errors were encountered: