Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Android music players that support Opus and R128 gain (Read 5358 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Re: Android music players that support Opus and R128 gain

Reply #1
You might look at gonemad. It mentions r128 support being added in an old changelog.

http://gonemadmusicplayer.blogspot.com/2018/12/its-been-awhile-since-ive-posted-update.html

https://play.google.com/store/apps/details?id=gonemad.gmmp&hl=en_GB&gl=US


Re: Android music players that support Opus and R128 gain

Reply #3
I also recommend GoneMadMusicPlayer. If you are into customized playlists, GMMP has the most extensive list op options that I Have Found So Far!
Glass half full!

Re: Android music players that support Opus and R128 gain

Reply #4
Neutron Music PlayerSpoiler (click to show/hide)If you are aware of compatibility and bored about changing configuration settings in every music player, just want to play you could use EZ CD paid/trial version

Opus 96-192Kbps and Aac-lc 96-128Kbps
Source 32bit floating point is fine don't need dithering (dB noise -758dBFS that's a lot)
Source Fixed Point aka Integer should use dithering to prevent truncation distortion
Source is RAW

Re: Android music players that support Opus and R128 gain

Reply #5
Here's another recommendation for GoneMAD Music Player. I haven't used the R128 gain personally on it, but that's because I do it with dBpoweramp when converting my music to opus for the android player. That being said. I have a list of songs that need to have the gain applied by album instead of song, and I have to manually do them different.
GoneMAD has the option to prefer album replay gain, and it does its own scan to find replay gain levels.
Processed audio in java and python.

Re: Android music players that support Opus and R128 gain

Reply #6
GoneMAD Music Player and Foobar2000 Mobile both support R128 gain tags in Opus files.
Opus 96 kb/s (Android) / Vorbis -q5 (PC) / WavPack -hhx6m (Archive)

Re: Android music players that support Opus and R128 gain

Reply #7
GoneMAD Music Player and Foobar2000 Mobile both support R128 gain tags in Opus files.
After some preliminary tests with GoneMAD, I think you're right. This is great news. I will try Foobar2000 mobile too, though I never liked the interface.

Re: Android music players that support Opus and R128 gain

Reply #8
Both PC and Android versions of foobar2000 are the top choices in my opinion.

Re: Android music players that support Opus and R128 gain

Reply #9
Since this topic appears in search results just thought I'd add that Auxio (open source) supports Opus with R128. Only caveat currently is an upstream issue with ExoPlayer (Android's native framework) that parses Opus gain at 5dB less than the spec but the dev is working on an independent fix.

Re: Android music players that support Opus and R128 gain

Reply #10
It is kinda insane that it is now 2024 and still the only major player I can think of that does Opus R128 replaygain right is Foobar2000.
Foobar2000 for android is great for listening but there is no search in playlists so I would prefer VLC to support Opus replaygain properly.

The problem is not confined to just mobile, the desktop too still is lacking.
On the Linux desktop I think the only major player that does it right is... Foobar2000 in Wine.
Maybe some other smaller player also can do it, like Deadbeaf, but I have not checked that one lately.

For Linux more or less everything is based on Gstreamer, which of course does not properly do EBU-R128. Fixing that would fix a lot of players.
Strawberry (Clementine fork) now even has an internal EBU-R128 normalization feature, I guess to workaround the issue of libraries and codecs doing their own things in slightly different ways. But it needs to scan all the files in the library which is too slow and ridiculous because we should have working replaygain tags for that.

Opus is a great codec and standard, but I'm starting to feel that coupling EBU-R128 with Opus replaygain was a big mistake.
Unfortunately another example of how the technically inferior but simpler implementation often leads to better results if there are 2 or more competing options in the market.

So please lord, send someone competent to have a look into these bugs before RFC7845 turns 10 years old:
- https://code.videolan.org/videolan/vlc/-/issues/27176
- https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1645

Maybe another approach must be taken?
Like making EBU-R128 work for all codecs?
Or maybe taking a step back and making Opus support both the old replaygain method and the new EBU-R128?
I'm far from an expert and probably have not looked into the details thoroughly enough, and sorry for the rant but having replaygain work properly across all major codecs in all the major players should not be this difficult.

Re: Android music players that support Opus and R128 gain

Reply #11
You could use 'hard-wired' + tag based replaygain as i do with mp3 via the fb2k converter. This changes the volume directly vs only tag method.
Any RG un-aware players are supported this way. An aware player can still use tag metadata if present.

Using the album mode I can't find any issue so far.

Re: Android music players that support Opus and R128 gain

Reply #12
Looks like the best workaround for players without R128 gain support is to violate the spec and also add the regular replaygain 2.0 tag.
That way native R128 gain is supported (foobar2000 and some others) but also replaygain 2.0 as a fall back (all the other players).

The way I  do it is to first add replaygain 2.0 tags with rsgain (that tool is pretty complex for its task and a pain for mass tagging though, so I have to couple it with gnu parallel to get multithreading.)
Afterwards I add the R128 tag using r128gain (because rsgain cannot ignore the conflicting replaygain tag and Foobar doesn't accept the 2.0 tag, beware though since r128gain is no longer supported).

That way replaygain works for VLC and Foobar2000 on Android, and also for Strawberry on Linux (or any other gstreamer based player), and Foobar desktop.

Info on rsgain: https://github.com/complexlogic/rsgain?tab=readme-ov-file#opus-files
Quote
In my opinion, the authors of RFC 7845 totally overstepped their authority by specifying a format-specific loudness normalization method. Particularly egregious is the specification of a target loudness level. There is no one-size-fits-all solution for target loudness. The best value depends on the dynamic range of your music, which tends to vary by genre. Moreover, most people do not have a music library comprised entirely of a single audio format, so format-specific loudness normalization methods are inappropriate. Having Opus files play back 5 dB quieter than all other file types defeats the purpose of applying ReplayGain.

Quoted for truth. Having special standards for special cases that hardly anyone gets right is way worse than having an unofficial less than ideal standard that happens to just works across the board. Looks like we won't get the former anytime soon and because the special treatment is mandated the latter also no longer holds.
It is really sad that there have been discussions on mailing lists about this exact issue going back to 2012.
Apparently no one cares enough to finally get this settled out.

Re: Android music players that support Opus and R128 gain

Reply #13
The way I  do it is to first add replaygain 2.0 tags...
Afterwards I add the R128 tag using r128gain
or just add ReplayGain tags using foobar and apply the gain to the actual files. Only works with lossy files (afaik) and maybe only do this to files you use purely for portable listening usage.

Re: Android music players that support Opus and R128 gain

Reply #14
The way I  do it is to first add replaygain 2.0 tags...
Afterwards I add the R128 tag using r128gain
or just add ReplayGain tags using foobar and apply the gain to the actual files. Only works with lossy files (afaik) and maybe only do this to files you use purely for portable listening usage.
+1    Also works for lossless.  I do it on all lossy files not just for portable. album gain +  clip prevent. Can't find a fault yet and a reason to not do it (lossy).

Re: Android music players that support Opus and R128 gain

Reply #15
+1    Also works for lossless.  I do it on all lossy files not just for portable. album gain +  clip prevent. Can't find a fault yet and a reason to not do it (lossy).

Exactly what I do, too.

Re: Android music players that support Opus and R128 gain

Reply #16
or just add ReplayGain tags using foobar and apply the gain to the actual files. Only works with lossy files (afaik) and maybe only do this to files you use purely for portable listening usage.
+1    Also works for lossless.  I do it on all lossy files not just for portable. album gain +  clip prevent. Can't find a fault yet and a reason to not do it (lossy).
In foobar I don't see the option to Apply gain to file content ... with FLAC files. Should that option be there via the ReplayGain context menu?

Re: Android music players that support Opus and R128 gain

Reply #17
In foobar I don't see the option to Apply gain to file content ... with FLAC files. Should that option be there via the ReplayGain context menu?
Applying gain to lossless is possible only on re-encoding. fb2k's converter has option to apply ReplayGain on conversion. It is irreversible, of course. Unlike "Apply gain to file content" for mp3 and m4a which can be losslessly (i.e bit-perfect) reverted.

Re: Android music players that support Opus and R128 gain

Reply #18
In foobar I don't see the option to Apply gain to file content ... with FLAC files. Should that option be there via the ReplayGain context menu?
Applying gain to lossless is possible only on re-encoding. fb2k's converter has option to apply ReplayGain on conversion. It is irreversible, of course. Unlike "Apply gain to file content" for mp3 and m4a which can be losslessly (i.e bit-perfect) reverted.

That's no problem IMO for lossy codecs. In fact its even better since any codec and any player in existence will work . In my case
album mode . But it can go even further; You can add RG tags that aware apps can use. Also with mp3 your not limited to 1.5db steps so more accurate .

Re: Android music players that support Opus and R128 gain

Reply #19
ahhh thanks @Bogozo - I had never seen that option in the 20 years of using it lol

Re: Android music players that support Opus and R128 gain

Reply #20
https://wiki.hydrogenaud.io/index.php?title=Foobar2000:ReplayGain_Scanner:Alter_File_Content
Quote
In foobar2000 v1.4, a similar feature to "alter file content" was introduced for Opus files. However, it does not alter the entire audio stream, it alters Opus header gain value

Right. Also should be a pretty nice workaround.
I thought this was changing the audio but for opus that is not the case.
However, I prefer not to use Foobar if possible because it is Windows-ish only (but rsgain could also do this), and using the header gain for this somehow feels a bit dirty.
But it would be spec compliant. Hmm.