I want to say thanks to Quentin for continuing to work on this great music player. I spent the last few days trying every different Linux music player that looked promising. After a lot of testing, the only new apps I kept installed are gmusicbrowser and quod libet. I've been using deadbeef, and it is a great player. I'm keeping it installed too. But I anticipate that gmusicbrowser is going to become my main music app now. I'm very impressed with it so far.

I particularly like the ease with which I can set or change ratings on tracks and the straight-forward way GMB saves ratings metadata compared to many other players.

Other features I like are regular expression searches, support for multiple genres for a song (because I have a lot of music that doesn't fit neatly into the usual genres), the customizable window layouts (which I plan to explore in great detail as I learn more), and the ongoing development by Quentin.

I am also very interested in options to read/write custom fields from/to tags.

Another thing I like about GMB is its support for large music libraries. I currently have 61629 flac files and another 13283 MP3 files and a few .wav, .ogg, and other formats. I estimate my total music library could be over 80,000 songs because some of my flac files are not split into tracks. I guess GMB might tell me the exact size once I load up my entire library.

The only suggestion I have at this moment is in regard to ratings metadata. My own ratings are a very important part of how I manage my music. It would be really awesome if GMB could offer users some advanced and configurable options for saving ratings metadata.

For example, I have been thinking that it might be helpful to save my song ratings into multiple metadata fields simultaneously. For example, on flac files, GMB uses FMPS_RATING, but deadbeef uses "RATING". I believe I can solve a lot of compatibility issues if I save my ratings to multiple fields.

One concern I currently have is that when GMB saves a rating to FMPS_RATING, it deletes the data that was already saved in the RATING field of the file's metadata. I'd probably like an option to not do this.

Then there is the issue of rating scales. As you know, different apps use anything from 0 to 5, 0 to 100, 0 to 255 or even 0.0 to 1.0 (like GMB). (However, for FLAC / Vorbis, the two dominant informal standards seem to be "0.0 to 1.0" and "0 to 100".)

I might like to be able to:

1. define more than one rating field to be used simultaneously (I am mainly focused on flac files. I don't know if this will be needed for others such as MP3 where POPM seems to be universal.)

2. define my rating scale, and potentially use a different scale for the different rating fields I define. For example, I could use 0.0 to 1.0 in FMPS_RATING (as GMB does by default) while also saving 0 to 100 in RATING.

This is one post I looked in for reference on ratings:

Songs ratings and playcount as POPM fields · Issue #1143 · DeaDBeeF-Player/deadbeef

I think it would be great if GMB becomes the one music player that can satisfy anyone's needs for ratings metadata configs :)

This seems to fit the overall philosophy of GMB to be highly configurable. In a similar way to how a user can choose Layout > Make it look like > [pick one], maybe you could do something similar for ratings. For example, "Ratings > Save metadata like > [choose one].

However,for me it does not need to be that sophisticated. I'd be happy to write some values into the GMB config file to meet my needs.

What are your thoughts about this rating metadata idea?

Thanks again for your work on GMB! I'm happy to be a user now.

Sorry for not replying sooner.

I do plan to enable user-defined tags, it's mostly a gui-problem as most of the needed capabilities are already coded.
Though concerning the rating field, I could easily improve it to support more standards. Though I could use some help to know what standards are being used by other players.

If you're adventurous, you could be interested in the technical details of how the tags are defined in gmb, for the rating field, it's currently (from gmusicbrowser_songs.pm):

id3v2 => 'TXXX;FMPS_Rating_User;%v::%i & TXXX;FMPS_Rating;%v | percent( TXXX;gmbrating;%v ) | five( TXXX;rating;%v )',
vorbis => 'FMPS_RATING_USER::%i & FMPS_RATING | percent( gmbrating ) | five( rating )',
ape => 'FMPS_RATING_USER::%i & FMPS_RATING | percent( gmbrating ) | five( rating )',
ilst => '----FMPS_Rating_User::%i & ----FMPS_Rating | percent( ----gmbrating ) | five( ----rating )',
postread=> \&FMPS_rating_postread,
prewrite=> \&FMPS_rating_prewrite,
'postread:five'=> sub { my $v=shift; length $v && $v=~m/^\d+$/ && $v<=5 ? sprintf('%d',$v*20) : undef }, # for reading foobar2000 rating 0..5 ?
'postread:percent'=> sub { $_[0] }, # for anyone who used gmbrating
for each type, there is a list of tags, separated by either '&' or '|', and I recently added '&?', the first tag and tags after '&' are always written, '|' are deleted when a new value is written, and with '&?' the tag are only written if already in the file.
For reading the first one found is used, except for multi-value fields that use all found tags.

Also there is an optional function to convert the value, so 'five( TXXX;rating;%v )' will use the function defined in 'postread:five' to convert the value it reads. And, if it used "&" or "&?", it could use a function that would be defined in prewrite:five to convert the value before writing.
something like:
'prewrite:five'=> sub { my $v=shift; ($v eq '' || $v>100) ? '' : int($v/20) },
About using POPM, I'll have to look, it might be a bit more complicated because it includes a playcount (in addition to using a stupid 0-255 scale)