Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Quentin Sculo

1
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)
2
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.
3
Questions / Re: How to start customizing a layout?
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
4
Questions / Re: Filter by 'no rating given'?
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.
5
Questions / Re: Previous song headache
September 19, 2021, 14:00:27
You need to configure your desktop/window manager to use the command "gmusicbrowser -cmd PrevSongInPlaylist" when pressing the key.
6
Questions / Re: How to fudge the date added
April 23, 2021, 21:52:39
No just send me one of the "playlists indicating what month a song was added". I'm not quite sure what you mean by that, does the file contains a date for each song, of is it the playlist itself that is named after the date? I need to know how to get the date from the playlist.
7
The problem with that is you need to be able to select the row without activating it.
Are you using the gtk3 version (still in beta) ? It might handle touchscreen better.
Also are you using the SongList or the SongTree, the SongList use the standard TreeView gtk widget so it might work better (though it is a bit slow with lots of songs in the gtk3 version).
8
Hi, I don't know why anything in the config file could have that effect. Can you post a screenshot of that "black page" ? If you think it comes from the config file, you can send it to me (squentin gmail.com) I'll take a look.

Currently you can only save the play count in the tag (Settings->Fields->Play count->check "Read/Write in file tag"->restart, though it will only write modified play counts, if you want to write all existing play counts, you then have to go in Settings->Tags->Update Tags->select "play count".
About writing "last play", I've been thinking about adding write options recently, maybe this year?
9
Questions / Re: How to fudge the date added
March 06, 2021, 23:57:54
There is no easy (via gui) way to do it, but you can either edit the gmbrc file with a script, each song is one line, fields are tab separated, dates are in unix time (seconds since epoch). Otherwise I can give you a command-line that sets the date for a song, still needs a script though.
If you don't know how to make the script I can help you, just give me an example of your playlist that contains the dates.
10
Questions / Re: composer/conductor tag empty
March 06, 2021, 23:47:16
Other software might look at some alternative tags maybe, can you send me some examples (squentin gmail.com) ? I'll take a look.

11
Sorry for not replying sooner, which player are you using (in the audio tab) and did you try another ?
You could send me the single track file by your preferred method, I will take a look.
12
Questions / Re: Playlist difficulties
January 18, 2021, 18:14:55
You should be able to do that with the filter editor.
For the regexp, you want ^Classical( III)?$
But you can easily select just those 2 genres by "Add multiple condition", select "Any of" and add a condition, select genre, select includes, and then select the genre you want, repeat for the 2nd genre.

The dialog is a bit cumbersome to use though, you can also use the Simple Search widget*, simply typing:
genre~"^Classical( III)?$" playcount=0should work, or
(genre=Classical | genre="Classical III") playcount=0

*Sadly I still haven't documented the syntax of the Simple Search widget
13
Questions / Re: GMusicBrowser and WAV files
January 05, 2021, 19:25:36
1. "bitperfect .WAV format"
I'd just like to point out that they will still be bit-perfect if you compress them to a lossless format like flac, there is really no reason to keep wav files, unless you are using them with software that doesn't support lossless formats.

2. WavPack has nothing to do with .wav files, they use .wv files, yes it's misleading

3. I recently (only in git version currently) added what I call partially-supported formats or read-only formats, so you will be able to add any format recognized by gstreamer or the mediainfo command, this include wav files, but any metadata you edit in those partially supported files will stay inside gmb.
But again, see 1.
14
It's a known issue, it's only if you're not using a gmb icon theme I think (changing the icon theme requires a restart because it's currently a mess) it's affecting the gtk theme icons that have a direction (left-to-right or right-to-left) because my code tries to check if the icon exists but it doesn't work for them.
The whole icon code needs fixing, I'll focus on it soon.
15
Questions / Re: can't import m3u playlists
December 29, 2020, 22:20:51
If you are using the gtk3 version it's because there is a bug from the porting to gtk3, I've fixed it in git. Thanks for reporting it.

The playlist are not saved in independent files.
To be honest I don't use m3u lists myself so the support for them is rather minimal. Generally, lists are discouraged unless you care about the order of the songs, using labels is a much more flexible solution in most cases. That doesn't mean I won't improve the use of lists, but there is so many other things that I want to improve...