mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.26k stars 1.24k forks source link

Wishlist: "Favorited" column #12420

Open fwcd opened 7 months ago

fwcd commented 7 months ago

Feature Description

Many streaming services feature the concept of 'liking' or 'favoriting' a track. Some media players, including Apple Music/iTunes, have adopted this concept too, even for local libraries:

image

The biggest advantage I see in adding this column to the Mixxx library (i.e. the database and UI) is that it would allow us to cleanly map 'favorites' between external models (e.g. Apple Music/iTunes) and Mixxx's model. It would of course also provide another way for Mixxx users to tag their tracks, though admittedly there is some conceptual overlap with the ratings system. In any case, I would propose to only show this column by default in external libraries that support it (e.g. Apple Music/iTunes).

Alternatively, we could of course also just add the column to the external libraries that support it and not to Mixxx's library itself, but if we already build the UI for it, I see no big disadvantage in doing that.

daschuer commented 7 months ago

These are related issue: https://github.com/mixxxdj/mixxx/issues/10483 https://github.com/mixxxdj/mixxx/issues/9477 https://github.com/mixxxdj/mixxx/issues/6341

Using a new column that IS synced system wide, works around the mentioned issues. So it is probably a good idea.

Since we already have a star feature I like that harts used by spottily more: https://developer.spotify.com/documentation/design#liking-a-song

fwcd commented 7 months ago

I agree that syncing ratings and/or "favoritedness" to the file tags would be nice, though I would consider that orthogonal to this feature. Apple Music/iTunes unfortunately seems to write neither the rating nor the "favoritedness" to the file tags, therefore we'd either have to come up with our own tag or check what other programs are using (at least for the ratings).

Since we already have a star feature I like that harts used by spottily more

That's a fair point. The star would have the advantage of potentially being able to reuse UI from the ratings UI, which at the same time is a disadvantage in terms of distinctiveness. Spotify and Apple Music both seem to switch between a star/plus/heart/thumbsup icon every few years, so I don't have a strong preference here. Since hearts are a pretty well-recognizable shape, that seems definitely reasonable.

ronso0 commented 7 months ago

The star would have the advantage of potentially being able to reuse UI from the ratings UI,

After all it's just a styled checkbox, right? And we do have some experience with that now x)

Tricky part will be to use a shape in the header I guess.

mxmilkiib commented 6 months ago

How might a binary star state relate to the 0-5 star scale state?

I'm fact, why not just use a 5 star trading to achieve the desired result?

Certainly the way the existing star system is currently displayed it's not as nicely compact as the example, but I could envision an option for "Compact the star scale so that 5 is the only star that shows" to achieve the same effect. No?

AFAIU only MP3 stores rating (0-5) but maybe that table is out of date? (Looking at Serato forum threads, people have worked around by using unused tag columns to insert emoji stars)

The point in a linked issue above about the difference between "personal listening" rating and "good to play to a crowd" rating is a good one. So there is directly differing opinion on whether there should or shouldn't be a mapping between Mixxx 5 stars and the MP3 (or other?) standard 0-5 rating tag?

(Personally, I'm giving up on the idea of having music that is in my personal music collection that I access using MPD being the same files that Mixxx access. There's to much cruft, non DJable tracks, the library bloat makes Mixxx less responsive, and there's no way to link a USB stored file with a, say , NAS sorted files, see #11520 n #10939)

fwcd commented 6 months ago

How might a binary star state relate to the 0-5 star scale state?

They would be separate columns and completely independent.

I'm fact, why not just use a 5 star trading to achieve the desired result?

Because the primary goal is interoperability with systems that potentially use both. Mapping "favoritedness" onto a rating scale if the external playlist model uses both necessarily discards information.

Certainly the way the existing star system is currently displayed it's not as nicely compact as the example, but I could envision an option for "Compact the star scale so that 5 is the only star that shows" to achieve the same effect. No?

Yes, that is what I meant by "admittedly there is some conceptual overlap with the ratings system".

AFAIU only MP3 stores rating (0-5) but maybe that table is out of date? (Looking at Serato forum threads, people have worked around by using unused tag columns to insert emoji stars)

I would move the discussion about how ratings could be represented in tags to a separate issue to avoid confusion.

JoergAtGithub commented 6 months ago

Wy not set the single iTunes star for all tracks that have 5 star rating in the standardize MP3 tag and vice versa?

fwcd commented 6 months ago

See above:

Mapping "favoritedness" onto a rating scale if the external playlist model uses both necessarily discards information.

(Both iTunes and our integration already support the standard 5 star rating system, perhaps that is where the confusion stems from.)

mxmilkiib commented 6 months ago

For the record (pun intended), I agree that it would be nice to have all of these:

a) a 5 star music collection rating (the standard existing tag system),

b) a 5 star Mixxx rating (because DJing is quite a different context to sitting back in the sweet spot on a sofa to listen to music from the same set of files), something that can also live as a Mixxx specific tag in files and not just the library DB,

and c) having a binary Favourite rating (for utter bangers that aren't just 5 star DJable but also go-to/fallback/shit-hot-at-the-moment tracks that must not be lost in the regular DJing 5 star rating system), also not just as a DB thing but a tag thing also

daschuer commented 6 months ago

ID3 V2.3.0 has a Popularimeter personalized with an email address: https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2.3.0.html

How can we make use of this? For interoperability, we need to check how other applications deal with this email. Which applications are relevant? So there is a open research task, before we can dive into code.

mxmilkiib commented 6 months ago

Ah, thanks for linking the exact definition! And 0/1-255, interesting.

There may be more than one “POPM” frame in each tag, but only one with the same email address

Ah, so ratings can be "namespaced" with that mechanism, good point. But yes, I wonder how robust various decoders are to multiple ratings and what the higher level behaviour of other applications would be.

Edit: oh, in v2.2 it is POP, in v2.3 it is POPM

(I notice the ID3v2.3 page lacks section anchors/ids, but the ID3v2.2 page has them: https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2.2.html#popularimeter. I've raised this https://github.com/quodlibet/mutagen-specs/issues/2)