Comment 2 for bug 1741147

Revision history for this message
Uwe Klotz (uklotzde-deactivatedaccount) wrote :

YES! The dynamic organization of a library based on metadata is much more powerful than statically dropping tracks into just crates and playlists. Sharing, exchanging, and enriching this metadata with others and from different sources provides so many chances for exploring and discovering unknown possibilities.

I already was thinking about something similar. A simple system of custom tags composed of
  - a "namespace" (optional, but might be necessary when thinking globally),
  - a "name" (mandatory),
  - zero or more "values" (just strings for now)
for dynamically classifying and organizing your music. A "label" is then just a custom tag without any values, solely represented by the combination of "namespace" + "name" or just the "name".

To give you an idea here are some examples of names and values from my own library:
"Rating" (0 to 5): "r0" / ... / "r5"
"Energy" (0 to 5): "e0" / ... / "e5"
"Mood" (0 to 5): "m0" / ... / "m5"
"Epoch" or "Decade": "1980s" / "1990s" / "2000s" / ...
"Occasion": "Cruise" / "Dinner" / "Lounge" / "Party" / "Wedding" / ...
"Season": "Xmas" / ...
"DjSet": "Arrival" / "Warmup" / "FloorFiller" / "PeakTime" / ...
"Commercial" or "Advertising": ...value refers to the company/product where it appeared...
"Soundtrack": ...value refers to the name of the movie or series where it appeared...
"Cover": ...value references the original artist (and optionally the title if different) that has been covered...
"CoveredBy": ...the other direction if the cover version itself is very popular...
"Sample: ...value references the track by artist and title that has been sampled...
"SampledBy": ...the other direction if the track that used the sample is very popular...
"Soundcheck"
"Mainstream" or "Charts"
"Evergreen" or "Classic"

Currently I store my custom tags unorganized as space-separated textual tokens in the comments field. Just the values of "Rating", "Energy", "Mood", and "Epoch" in a predefined order followed by others, unordered, some of them with just their value (if more or less unique) and some as <name>:<value> pairs. All names and values encoded in CamelCase style to reserve whitespaces for separating individual tags. This works ok for filtering, but of course is very awkward and time-consuming to maintain and not suitable for parsing.

All custom tags associated with a track should permanently be stored (import/export) in one of the track's file tags in some well-defined format. I suggest using a well-adopted, machine-readable format like JSON. Enclosed in delimiters like {{ }} for distinguishing it from the remaining contents of the field when storing it side-by-side in a file tag that might already contain user-defined content. This would be much more sophisticated than what I've seen in Rekordbox: They simply enclose the list of custom "labels" into one C-style /* */ comment block and append it to the "COMMENT" file tag. I would also suggest to append the custom tag data to the comments field when exporting tags, but definitely not adopting such an oversimplified solution.

In the database custom tags should be stored in an appropriate relational schema for efficient searching, grouping and filtering. This schema should also take into account synonyms for different names within the same namespace or even across different namespaces as discussed here: https://community.metabrainz.org/t/similarity-synonyms-merging-for-folksonomy-tags/326055
The synonyms could be synchronized initially and/or regularly with the MusicBrainz database and stored as some kind of master or contextual data in the local database. The file tags are unaffected if the synonyms change, but users should of course be able to normalize their tag names according to the synonyms for selected tracks on demand and export them into file tags.

I recommend a cooperation with MusicBrainz for defining some kind of informal, open standard. Both for how to store track-related data in file tags and also for sharing and synchronizing synonyms to correlate custom tags from different sources. Reviewing the APIs of services like Spotify or The Echo Nest and the features of other DJing or music applications might provide valuable ideas. A standard is easier to establish if it fits into the existing landscape.

Since this is a long dream of mine I would gladly support such a collective approach from within the Mixxx team! My condensed collection of ideas that I presented here hopefully encourages others to follow.