Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Spec] Add tags for online music databases #19

Closed
achimmihca opened this issue Sep 15, 2023 · 13 comments
Closed

[Spec] Add tags for online music databases #19

achimmihca opened this issue Sep 15, 2023 · 13 comments
Labels
new feature New feature or request wontdo This will not be worked on

Comments

@achimmihca
Copy link

Suggestion

I suggest to add an official header field for MusicBrainz IDs (MBID).

  • musicbrainz.org is an open music database
  • the MBID could be used to identify the song, artist, and album without doubt
  • the record MBID makes for a good identifier for an online score database because it uniquely identifies a song.
    • As a user, I would expect my online scores to stay the same even if I edit lyrics or make minor corrections to a song's txt file. Having an MBID could make this possible.
  • the MBID could be used to grab additional information such as album art, year, genre, etc.
    • at least if not already present in the txt file
    • the Visual Studio Code plugin could fetch and suggest MBIDs based on artist and title

Note that MusicBrainz is free only for non-commercial use.

I remember that UltraSinger is already using MusicBrainz to add information about newly created songs.

Use case

  • Fetch info about songs (e.g., year, genre)
  • Uniquely identify songs (e.g. for score database)

Extra info/examples/attachments

Examples

#MUSICBRAINZRECORDING:4725d53a-0771-427c-b3ad-5eb20ba62978
#MUSICBRAINZARTIST:2386cd66-e923-4e8e-bf14-2eebe2e9b973
#MUSICBRAINZRELEASE:6d24c724-9c5c-3855-9b92-bd6bfbf3ee80
@basisbit
Copy link
Member

basisbit commented Sep 15, 2023

the record MBID makes for a good identifier for an online score database because it uniquely identifies a song.

Let me quickly change the lyrics into a single note in one sentence, and suddenly I get best score on the online leaderboard.
(Not a fan of that idea, sorry)

Maybe combining use of the MBID (for local highscores) and the lyrics' hash (for online leaderboard) could work.

@achimmihca
Copy link
Author

suddenly I get best score on the online leaderboard

This kind of cheating is probably also possible on API level.

I mean, some API needs to be exposed so users can upload their new high score. And I don't know how one should verify that the uploaded score and song id is not fake.

So, I would not try to prevent people from cheating in the first place.

@marwin89 marwin89 added the new feature New feature or request label Sep 17, 2023
@Baklap4
Copy link
Collaborator

Baklap4 commented Sep 22, 2023

Not quite sure how the Hiscores are done now, as for performous we only have a local database, not a live one.

I think the idea is nice, but as from the format view i think it's pretty bad since we'd tie ourselves to musicbrainz id's whilst it might be possible to make it more generic?

@marwin89 marwin89 changed the title MusicBrainz ID [Spec] MusicBrainz ID Sep 23, 2023
@marwin89
Copy link
Collaborator

I support the idea. 👍
Is it possible to make a tag called: #MUSICDB and then put in service and [id]?
Examples:
#MUSICDB: musicbrainz [1234567]
#MUSICDB: rateyourmusic [1234567]
#MUSICDB: vgmdb [1234567]
In the end musicbrainz seems to be the best solution (for open source projects) these days (according to this music database overview)

@rakuri255
Copy link
Collaborator

I support @marwin89 idea to make it generic!

Who can say for sure that this website will life forever?
It can be shootdown in few years and then we have these deprecated IDs when it's too specific like #MUSICBRAINZID.

Do we need a list of DBs that should be supported?
Just for compatibility?

@achimmihca
Copy link
Author

achimmihca commented Sep 25, 2023

I agree, the field name should be generic.
Otherwise it may end like the MP3 tag, which is not MP3 in all cases.

For the format, I suggest to use a single header field with URL query parameter syntax, i.e. KEY1=VALUE1&KEY2=VALUE2.

This has the advantage that the parameters can be parsed with existing libs for parsing URLs.

  • #MUSICDB: musicbrainzrecord=12345&musicbrainzartist=12345&rateyourmusic=12345

Do we need a list of DBs that should be supported

I don't think so. IMO this is an implementation detail of the player. It could be a config setting, whitelist, or something else.

Which DBs are supported should not be part of the spec (I argue the same for the #WEBSITE tag).

Similarly, the spec also does not define which audio formats are supported because this would not make sense.

@marwin89 marwin89 changed the title [Spec] MusicBrainz ID [Spec] Add tag #MUSICDB Sep 25, 2023
@marwin89 marwin89 added backlog v1.1.0 (2023) implement in v1.1.0 (2023) and removed consent? labels Sep 25, 2023
@marwin89
Copy link
Collaborator

marwin89 commented Oct 5, 2023

SUMMARY

So here is a summary for this issue up tillnow.

We add this tag in version 1.1.0:

#MUSICDB: musicbrainzrecord=12345&musicbrainzartist=12345

The description in the spec (website) is:

#MUSICDB
This tag links to different online music databases. By using #MUSICDB you enable your song editor tool or game to fetch info about songs (e.g., year, genre, cover, title, artist). Use IDs from the database of your choice to identify record/artist. In the value you can combine information by using & (for example: musicbrainzrecord=id&musicbrainzartist=id). Right now the tag can only be 255 characters long.
We recommend musicbrainz for the next few years. But please check out which music databases are actually supported in your game or song editor.

@marwin89
Copy link
Collaborator

marwin89 commented Oct 7, 2023

2nd SUMMARY / VOTE NOW 📈 ✋

So here is the second summary for this issue. We are close to a final result.

Please vote for this issue till 31th oct 2023 with emoticon 🎉 / 🚀 / ❤️ .

🚀 A: #DBARTIST, #DBRECORDING, #DBRELEASE
🎉 B: #DATAARTIST, #DATARECORDING, #DATARELEASE
❤️ C: Don't introduce this feature at all

Why these tags?

  • Fetch info about songs (e.g., year, genre) in editor/game/tool automatically.
  • Uniquely identify songs (e.g. for online high score database) in games.

Spec doesn't define which db to use.
However we recommend Musicbrainz Database. Cause is free for open source projects.

🚀 A

We add these tags to the next version v.1.1.0 / v2023

#DBARTIST:https://musicbrainz.org/artist/ffd9d946-518f-4e66-800f-994c26bf24d5
#DBRECORDING:https://musicbrainz.org/recording/04c9c416-8bb7-45ee-a040-f7295b6582a9
#DBRELEASE:https://musicbrainz.org/release/5ba06af7-e9a0-469f-8276-6d3cce43bb0e

🎉 B:

We add these tags to the next version v.1.1.0 / v2023

#DATAARTIST:https://musicbrainz.org/artist/ffd9d946-518f-4e66-800f-994c26bf24d5
#DATARECORDING:https://musicbrainz.org/recording/04c9c416-8bb7-45ee-a040-f7295b6582a9
#DATARELEASE:https://musicbrainz.org/release/5ba06af7-e9a0-469f-8276-6d3cce43bb0e


The description in the spec (website) will be something like:

#DATAARTIST, #DATARECORDING, #DATARELEASE
Thes tags link to online music databases. Why is that great? There are two advantages. First: By using them you enable your song editor tool or game to fetch info about songs (e.g., year, genre, cover, title, artist). Second: A game might use it to identify a song for online highscore feature.
Use URLs from the database of your choice to identify artist, recording(=song) and release(=album that contains the song).
We recommend musicbrainz.org for the next few years. But please check out which music databases are actually supported in your game or song editor.

@marwin89 marwin89 added the vote now Please vote for your solution label Oct 7, 2023
@marwin89 marwin89 changed the title [Spec] Add tag #MUSICDB [Spec] Add tags for online music databases Oct 7, 2023
@rakuri255
Copy link
Collaborator

I am for the tag names in A but not for the URL part.
URLs will change/break over time, so they do not have a long-life time.
What we could rather rely on are the IDs what the DB API provides us.
The IDs should normally survive such URL and API changes.

Maybe use a separate tag for which Api used? So, the APP can build the URL themselves and also migrate it to a newer API version.

#DB:https://musicbrainz.org/ws/2/
#DBARTIST:ffd9d946-518f-4e66-800f-994c26bf24d5
#DBRECORDING:04c9c416-8bb7-45ee-a040-f7295b6582a9
#DBRELEASE:5ba06af7-e9a0-469f-8276-6d3cce43bb0e

For musicbrainz the Artist URL will then look like this: https://musicbrainz.org/ws/2/artist/ffd9d946-518f-4e66-800f-994c26bf24d5

@basisbit
Copy link
Member

basisbit commented Oct 8, 2023

This kind of cheating is probably also possible on API level.

@achimmihca Yes, it is possible on API-level, but no one has done this on API level the past couple of years, despite the communication not even having used TLS. The key part is that doing cheating on API level requires some software dev skills and a bit of time, while copy+pasting some ID in a text file can easily be done by most 10 years old kids. Thus imho this DBRELEASE is not suitable as an identifier except if your goal is to show additional information ingame for this song using (for example) musicbrainz api. For online high scores it imho is not suitable.

@rakuri255
Copy link
Collaborator

Let's think about that again. Do we really need the DB Link?
If you look at self-host APPs for audio like Plex, Synology Music, mstream, Jellyfin etc. See here. They fetch the information completely on their own. And for these APPs, the artist, title, year is actually enough to determine the song exactly. Often the infos are in the ID3 tags of the mp3. Most of the time only artist and year are in the ID3 as extra info and the other fields are mostly empty. But we could provide the most important ID3 tags in the .txt as well. See ID3 Tags

If you are honest, a well-defined .txt that has all the info about the song is enough to find it with any API.

@achimmihca
Copy link
Author

If you are honest, a well-defined .txt that has all the info about the song is enough to find it with any API

True.
Guess there is no need to add it to the format.

Ok then, I am fine to close this issue as "won't implement".


BTW: @marwin89 thanks for your summaries, I find these pretty helpful.

@marwin89 marwin89 added wontdo This will not be worked on and removed vote now Please vote for your solution labels Oct 12, 2023
@marwin89
Copy link
Collaborator

SUMMARY / FINAL RESULTS 🏁

Thanks for the discussion about MUSICDB-feature.

Here is the result:
The majority of participants already agreed not to implement this feature. Topic is closed now.


BTW: @marwin89 thanks for your summaries, I find these pretty helpful.

😄 good to hear that. I'll continue this moderation.

@marwin89 marwin89 removed the v1.1.0 (2023) implement in v1.1.0 (2023) label Oct 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new feature New feature or request wontdo This will not be worked on
Projects
None yet
Development

No branches or pull requests

5 participants