Recent posts

October 16, 2021, 17:12:27
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)
October 16, 2021, 16:32:45
Rating tags are a bit of a mess.

Currently, gmb will only write ratings using the FMPS standard, which I'm afraid did not caught on. If that tag is not found, it will try to read a 1-5 "rating" tag, which I thought fb2000 used, but maybe they changed that, I see  (https://wiki.hydrogenaud.io/index.php?title=Foobar2000:ID3_Tag_Mapping) that for mp3 they use the POPM id3v2 tag, which I highly dislike (because it is coupled with a play count and uses a 0-255 rating which is not easy to translate to sane numbers).

I personally prefer writing the rating as a 0-100 number, which can be presented to the user as 1-5 or 1-10 or whatever.

Currently gmb doesn't let read/write user-defined tags, they are just kept in gmb's db, but I plan on enabling this.

Can you send me (squentin gmail.com) a sample of your files with fb2000 ratings ? One mp3 and one non-mp3 at least.
October 10, 2021, 00:24:57
Hello. I have a large music library. I'm currently using the Playlist layout in GMB (it has the two panes on the right, and I generally keep the rightmost pane on the folder view).

Scrolling with the mouse in the various panels (artists, albums or folders) is not the most efficient way to jump to the location I would like when I'm navigating through thousands of albums, folders, etc. I would like to be able to use keyboard navigation (i.e., start typing the name and jump to the matching entry that way). What is the right way to do that?

I notice that sometimes I can in fact start typing an artist name and I will get a small text box showing what I am typing and it allows me to navigate this way. Generally that only happens after GMB first jumps to an artist I did not intend to select, however.

Most of the time, as soon as I type the first letter, GMB jumps to the first artist with that starting letter and begins playing. That's usually not what I want. I assume there is a way to navigate better with the keyboard, but I haven't found it.

Furthermore, I can't navigate with the keyboard at all in the folder pane. Is that possible?

I'm only scratching the surface of the power of GMB. I look forward to exploring all its features over time.

Thank you.
October 10, 2021, 00:15:49
QuoteSadly the color and font only apply to some simple widgets. If you want to change it for everything, you'll have to use the gtk theme method: https://wiki.gmusicbrowser.org/customization/themes.

I do want to change the font and font color everywhere, so I used this method. It works! Very happy with the result.

For now I have set the command in my .desktop file to:

GTK_THEME=gmbtheme gmusicbrowser %F
What are my other options for telling gmusicbrowser to use this GTK theme every time it starts up?

Thanks again for the very impressive music app.
October 10, 2021, 00:15:37
I've used foobar2000. All my files have Custom Field "RATING" with numbers from 1 to 5. I have mp3s, flacs, m4as..
Version 1.1.16.
I can not see this in tags via GMB. If I make in foobar2000 different fields like "RATING2" - I can see this tag in file description. But not in the playlist via custom tags - It's empty.
foobar2000 doesn't see your rating tags at all. So I cannot figure out how to transfer all my Ratings (It would be great, not to delete previous one.

But to tell the truth - It would be awesome to make my old rating visible in playlist. It seems like player intended to do so, but it doesn't work :(

And personally - I think it makes so much sense. 1 to 5 stars rating seams enough. Having the same tag field name

Other than that - YOUR PLAYER ROCKS!!!!! For years I didn't like the idea to join linux because there was nothing comparable to foobar2000. And GMB seams super-great!
October 09, 2021, 20:05:37
Yes you can copy the file, but be aware that it contains several layouts, you probably want to keep only the ones you plan to edit.

Also, that layout, like many others, use the "based on" system so that they only modify a few things from another layout. It is a simple and useful system but it can get messy fast, so unless you change just a few lines, you may be better off making a independent layout first. For that you first copy the original layout (the X in "based on X"), and then add the lines from the layout variation at the end (doesn't have to be at the end but safer if you forget to remove the line it replaces) and remove the lines that begin with the same "word =" (if any) from what you copied.

For example:
[original]
Type = G
Category = _"Small"
Name = _"test player"
Default = Window(sticky=1)
VBmain = HBButtons _Title
HBButtons = Prev Stop Play Next

[variation] based on original
Name = _"test player variant"
VBmain = HBButtons _Title _Artist _Album

Then you create the independent layout:
[variation2]
Type = G
Category = _"Small"
Default = Window(sticky=1)
HBButtons = Prev Stop Play Next
Name = _"independent test player variant"
VBmain = HBButtons _Title _Artist _Album


So here's the result you wanted, it actually would have been easy to do it as a "based on" layout.
The VolumeSlider is placed before Cover because they are added at the end ("-" before the name), so the order is reversed.
Sadly the color and font only apply to some simple widgets. If you want to change it for everything, you'll have to use the gtk theme method: https://wiki.gmusicbrowser.org/customization/themes.

[with browser & queue modified]
Type=G+
DefaultFocus = Play
HBIndic = MBmenu Sort 10Filter Queue 10Pos
MBmenu = MainMenuItem LayoutItem PSortItem PFilterItem QueueItem
VBleft = HBIndic HBButtons
HBButtons = VolumeIcon Prev Stop Play Next Time 5_ABtimebar
ABtimebar = (yscale=0) TimeBar
HBTitle = Filler0 _Title -Stars
HBArtist = LockArtist _Artist
HBAlbum = LockAlbum _Album -Year
VBright = 2HBTitle 2HBArtist 2HBAlbum
VBmain = HBupper 5HBstatus 5_HPbig Progress
HBstatus = _SimpleSearch(maxwidth=250) 10MBlist ResetFilter Refresh PlayFilter FilterLock -Total
MBlist = HistItem LSortItem PlayItem
HPfp = FilterPane0(nb=1,hidebb=1,page=artists,page_artists/lmarkup=1) FilterPane1(nb=2,hidebb=1,page=album,page_album/lpicsize=32,page_album/lmarkup=1)
VPlistAA = _SongList HBAA
HBAA = _ArtistBox _AlbumBox
HSize0 = Filler0 LockArtist LockAlbum
VolumeScroll = HBupper

Default = Window(size=1120x820) HPbig(size=400-700) HPfp(size=140-140) VPlistAA(size=575-150) VPBrowserQueue(size=490-210)
HPbig = HPfp _VPBrowserQueue
VPBrowserQueue = _VPlistAA VBQueue
VBQueue = _QueueList(group=1,hidewidget=VBQueue,hideif=empty) HBQueueButtons
HBQueueButtons = EditListButtons(group=1) 4QueueActions

Name = _"with browser & queue (modified)"
HBupper = VBleft _VBright -VolumeSlider  5-Cover
DefaultFontColor= #f0f0f0
DefaultFont = Sans 16
October 09, 2021, 16:21:57
You can do a filter with:
Any of:
  rating set to default
  rating > 50%

You can also get this filter by typing "rating= OR rating>50" into the SimpleSearch widget (I'll document the syntax one day).
By the way there is a totally undocumented virtual field "ratingnumber" that always returns a number, using the default rating if the rating is not set.
October 03, 2021, 16:49:21
Solved,I found the reason, why in my GNB the Composer tag was empty.
It was a mixture of user defined "Komonist" (German for compser) the the GMB field composer.
First I deleted the user defined filed Composer,
do in settings to fields and activate the field composer (in additional fields)
delete column Composer, and add afterwards field composer,
reread tags, restart GMB,
this worked on my GMB.
Thanks a lot.
September 27, 2021, 12:36:00
Salut,

Je cherche à creer des boutons qui permettent de changer le filtre du SongTree/SongList.
Je réussis a faire des bouton qui changent la playlist, ou qui mettent en file d'attente :
# Enqueue Filter
Button11(label="filter_title", click1='RunPerlCode(::EnqueueFilter(Filter->new_from_smartstring("title:test")))') \

# Play filter
Button12(label="Ftest", click1='RunPerlCode(::Select(filter => Filter->new_from_smartstring("title:test")))') \
   

Je voudrais un bouton qui fonctionne comme la selection dans les FilterPane, avec par exemple comme filtre : 'playcount:h:50' 'playcount:>:4' ou encore les morceaux dont la note est supérieur à 80...

J'ai tenté des truc comme
gmusicbrowser -cmd 'RunPerlCode ::SelectedFilter(filter => Filter->addnew("'playcount:h:50'"));'
'
... Mais echec...
September 25, 2021, 01:51:37
I have the same question.