I'm trying to use beets in conjunction with loudgain. Loudgain is an EBU R128 based replaygain tagger than can tag a lot of file types, using a superset of the well-known mp3gain commandline syntax.
Loudgain has the ability, apart from calculating track/album gain and peak values, to also store the track/album loudness _ranges_ (LRA) and the _reference loudness_ used in the tags.
_MusicBrainz Picard_ already recognizes these, and I’d much like to bring loudgain and beets closer together, also supporting these values. (I actually _do_ search for things like reference loudness and dynamic ranges.)
For the loudgain _backend_ proposed in #3368, loudgain could of course also _provide_ these values.
As a first step, I’d like beets to recognise the additional fields. Second, we should be sure that beets can read these _case-insensitively_, because this is today still a problem with many players, for instance KODI requires _lowercase_ ReplayGain tags, VLC requires _uppercase_. Sigh.
It’d also be great if beets could _write_ these tags _as found_, or at least upper-/lowercase be specified somewhere, for the same reasons. It wouldn’t much help if a user had tagged his whole collection of 150k files using lowercase ReplayGain tags (for a reason), and beets would overwrite them with uppercase versions … You might want to read this.
If anyone knowledgeable could point me at a good start (i.e., where to look), I’d even try to prepare a PR.
These are quite basic values, and should be in the core. I think.
Sounds pretty good to me! The place to start adding support for reading and writing those tags is in MediaFile: https://github.com/beetbox/mediafile/
Because of the complexity of the multitude of tag formats, MediaFile is a pretty complex thing and requires some staring to get accustomed to. So please ask questions if there's anything there that you can't figure out.
The precise answer about case sensitivity depends on the format. For ID3, for example, we manually search desc strings for TXXX frames case insensitively. For Vorbis Comments, the standard says that keys are case insensitive, so Mutagen normalizes to lower case on write.
https://github.com/beetbox/mediafile/pull/19
https://github.com/beetbox/mediafile/pull/20
Done. Working. So now: How to make beets use and store these? :-)
You've doubtless already seen this, but just for completeness in the historical record, here are my notes about how to do that:
https://discourse.beets.io/t/better-replaygain-2-loudgain-support/947/5?u=adrian
Is this still relevant? If so, what is blocking it? Is there anything you can do to help move it forward?
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.