getmusicbee.com

General => MusicBee Wishlist => Topic started by: Zak on April 19, 2022, 04:58:50 PM

Title: Expose UI selections to virtual tags
Post by: Zak on April 19, 2022, 04:58:50 PM
This may be a niche request, and it's also possible I haven't thought it through properly.
But I thought I'd post it anyway as a conversation starter so others might be able to show either:
a) why this won't work, or
b) other possible uses to get excited about.

Background

I'm building a nice new artist overview album cover view that uses a virtual tag to group artists' tracks by album, EP, single etc. One of the categories I'd like to include is cover versions. (Note that any references to covers here refers to songs re-recorded by another artist, not covers in the sense of album covers or artwork.)

So, having selected an artist name in the column browser, as well as showing their own tracks it would show tracks of theirs that have been covered by other artists. For example, selecting "David Bowie" in the column browser will include Nirvana's cover of "The Man Who Sold the World" from their album "Unplugged in New York". So far, so good.

The problem

The problem is that when I select "Nirvana" in the column browser, it will also appear as a cover. In that case though I want it to appear with the other tracks on the "Unplugged in New York" album - it isn't a cover of one of their songs.

This isn't currently possible because there is no way to provide context to the virtual tag that that track is only a cover when I've selected David Bowie.

The solution?

To cater for this (and other uses), I'm proposing some new built-in "tags" that reflect what selections have been made to populate the current view. Some possibilities that come to mind are column browser selections, the current view and maybe the tab name. The first would allow a virtual tag to display different values for different artists/albums/genres - whatever columns you use. The others would allow a virtual tag to provide different values in different views. I'm sure people could come up with uses beyond the specific one I've described.

User selections in the GUI could be provided via new functions.
e.g.

$ColumnBrowser(ColumnName) would just return whatever value was currently selected in that column, or null for the default All Items (or if the user specifies a column that isn't actually displayed, I guess).
<CurrentView> could return the equivalent menu text for the active view (Tracks | Album and Tracks | Album Covers etc., in the users specified language) or the name of a custom view.
<TabName> would return the name of the active tab.

It's a little confusing that the first one functions more like a function because it takes a parameter, whereas the other two are more like custom tags. Maybe a new character delimiter could be used to make it clear these are neither functions nor tags? I'm not sure.

Implementing this doesn't seem like it would be too difficult since MusicBee is just exposing values it already knows to the user, but I might be overlooking something obvious.

I'm interested to see what other people make of this suggestion.
Title: Re: Expose UI selections to virtual tags
Post by: hiccup on April 19, 2022, 05:50:17 PM
Not as a comment on the grander idea here, but I was wondering how you have defined if a track is a cover.
Are you using the 'composer' or 'original artist' tag?
Or perhaps something custom and manually populated?
Title: Re: Expose UI selections to virtual tags
Post by: Zak on April 19, 2022, 06:41:24 PM
I was just using Original Artist, but MusicBee won't use that to populate the Artist column in the Column Browser, so I had to duplicate it as Performer (Original Artist).
Title: Re: Expose UI selections to virtual tags
Post by: hiccup on April 20, 2022, 06:12:30 PM
Just some hypothetical considerations about the original problem you are trying to solve:

Suppose you would use 'Original Artist' for this purpose.
Could you make your formula work integrating something like:
If 'Original Artist' = 'Artist' (or empty), then… , else…

If that is doable, then you could probably solve the second issue by creating a virtual tag for the column browser to replace 'Artist'.
Using something along the lines of:
Code
<Artist>; <Original Artist>; $RxReplace(<Artists: Performer>,"\([a-zA-Z0-9_ ]+\)","")
would probably work for that.
Title: Re: Expose UI selections to virtual tags
Post by: Zak on April 20, 2022, 06:53:04 PM
Suppose you would use 'Original Artist' for this purpose.
Could you make your formula work integrating something like:
If 'Original Artist' = 'Artist' (or empty), then… , else…

That would seem to be the intuitive approach, but it's incorrect.
The Artist value in the comparison you've suggested isn't the Artist value from the same track - it's the artist being displayed, hence the request.

(No track would have Original Artist and Artist the same - an artist can't cover their own song)
Title: Re: Expose UI selections to virtual tags
Post by: hiccup on April 20, 2022, 07:03:32 PM
(No track would have Original Artist and Artist the same - an artist can't cover their own song)
Yeah, I meant to say if it 'is not' or 'empty'.
Title: Re: Expose UI selections to virtual tags
Post by: tjinc on March 13, 2025, 06:33:37 PM
I'm going to +1 this now I think I understand it - although I would probably like to see a 'Selected in the Thumbnail Browser' field or function rather than, or in addition to, the Column Browser.
Title: Re: Expose UI selections to virtual tags
Post by: Pickles7853 on March 14, 2025, 06:09:52 AM
I kinda... sort of get what you are saying.  But I am slightly confused.
How can you tell if the song/ track is a cover when viewing from the perspective of Mr Bowie?

You can probably achieve a favorable effect by changing how you are sorting your columns.
My counter example would be the following: Album [Against All Odds].
This is a compilation album where each track is sung by a different artist -- EG track 1: Phil Collins, track 2: Stevie Nicks, etc.

I have it shown, full album, under its Movie title.  If I view separate artists then I can see their specific track they sung.
It sounds very similar to what you are describing.

(https://i.postimg.cc/mDPv122K/1.png)
(https://i.postimg.cc/B6RdT9jb/2.png)
(https://i.postimg.cc/1X6bMCFH/3.png)
Title: Re: Expose UI selections to virtual tags
Post by: Zak on March 17, 2025, 07:46:03 AM
The original idea was to create a group heading to show tracks by the selected artist that have been covered by others.
e.g.

(https://i.imgur.com/mTgZpyI.png)

It is possible to compare Artist and Original Artist to determine which tracks are covers, with a virtual tag like this...

Code
$IsNull(<Original Artist>,F,$If(<Artist>=<Original Artist>,F,T))
...but not to distinguish between cover songs by other artists and cover songs that the selected artist themselves have performed.
e.g.

This is not the desired outcome:

(https://i.imgur.com/nYw8voj.png)
Title: Re: Expose UI selections to virtual tags
Post by: Pickles7853 on March 18, 2025, 03:31:08 AM
Well... I can see where that would be an issue using your current settings.
I actually know how to fix that (and similar issues) but it requires a different mind set and a willingness to not strictly adhere 100% to proper tagging conventions where artists are concerned.  This is not the place to discuss this however.

I am OK giving a +1 as long as the option could be toggled in settings as I have no need for it.
Title: Re: Expose UI selections to virtual tags
Post by: hiccup on March 18, 2025, 06:34:37 PM
I actually know how to fix that (and similar issues) but it requires a different mind set and a willingness to not strictly adhere 100% to proper tagging conventions…
You have now woken my curiosity.
Please explain.
As long as you also describe the (possible) negatives of 'your system' no harm will be done.
Title: Re: Expose UI selections to virtual tags
Post by: Pickles7853 on March 18, 2025, 10:05:57 PM
Not going to hijack this thread  ;)
I posted a tutorial of sorts explaining it under general discussion.
Looking forward to your thoughts on the matter.