UltraStar-Deluxe / format

UltraStar Format Specification
https://usdx.eu/format
MIT License
9 stars 2 forks source link

[Spec] Multiple entries in #GENRE / #LANGUAGE / #CREATOR #30

Closed marwin89 closed 9 months ago

marwin89 commented 9 months ago

Suggestion

It would be good to have multiple entries in #GENRE, #LANGUAGE, #EDITION and #CREATOR.

Example:

#GENRE: Rock | Grunge | Alternative #LANGUAGE: English | French #CREATOR: DoubleDee | Bohning | retrogirl #EDITION: Eurovision | SingStar | SongChecked | Duets

Use case

There are a lot of songs that

  1. are mixture of different genres and music styles
  2. have two languages in the lyrics
  3. are made, fixed or updated by more than one person
  4. fit to different collections or compilations

Extra info/examples/attachments

Which separator would be the best?

  1. |
  2. ,
  3. /

In #19 for music database #MUSICDB we are going to have a consens to use |

rakuri255 commented 9 months ago

I also seen ;

Baklap4 commented 9 months ago

How about instead of seperating on character to introduce multiple TAGS if you'd want multiple values? And read all lines starting with a certain tag.

#GENRE: Rock
#GENRE: Grune

this would prevent possible clashes with seperation characters vs the actual value. An issue like this was recently found by myself for usdb-syncer https://github.com/bohning/usdb_syncer/issues/169 In short: Video tag contained title which contained an = character which resulted in that it failed parsing

Don't get me wrong i like to have a feature where multiple values can be used for a certain tag but not sure how to make a good architecture for it

rakuri255 commented 9 months ago

How about instead of seperating on character to introduce multiple TAGS if you'd want multiple values? And read all lines starting with a certain tag.

#GENRE: Rock
#GENRE: Grune

this would prevent possible clashes with seperation characters vs the actual value. An issue like this was recently found by myself for usdb-syncer bohning/usdb_syncer#169 In short: Video tag contained title which contained an = character which resulted in that it failed parsing

Don't get me wrong i like to have a feature where multiple values can be used for a certain tag but not sure how to make a good architecture for it

I think most other programs use a separator by default rather than using the tag multiple times. I am thinking of csv files as an example.

rakuri255 commented 9 months ago

UltraSinger currently uses , and in #Comments it uses | and , for readability when there are 2 separated things..

#GENRE:Metal,Rock
#COMMENT:UltraSinger [GitHub] | Score: total: 6825, notes: 6161 line: 664, golden: 0
marwin89 commented 9 months ago
Which separator would you like the most? Please vote by using emoticon-reactions: Vote separator result
πŸ˜„ = pipe
❀️ = comma ,
πŸš€ = semicolon ;
πŸŽ‰ = combination of pipe an comma
bohning commented 9 months ago

Most natural and easy to type is a comma-separated list

Baklap4 commented 9 months ago

To ellaborate on the | vote. This is barely used in any normal written stuff, whereas comma and semicolons are far more likely to be used.

If the element can only contain one word then i'd go for comma or semicolon. z If the element can have more than one word i'd use a pipe

If you just want one delimeter, a pipe or symbol which isn't used in natural language is a good choice :)

Most natural and easy to type is a comma-separated list

No one should edit txt files themselves by hand. And creator software can just give the user multiple inputs (checkboxes) for genres or something :)

marwin89 commented 9 months ago

Let's use comma and end this discussion here πŸ‘ This should be fine.

SUMMARY / FINAL RESULTS 🏁

So here are the final results for this issue.

We enable multiple entries in #GENRE, #LANGUAGE, #CREATOR and #EDITION in version 1.1.0 via separator. Separator is comma ","

#GENRE: Indie-Rock, Grunge, Alternative
#LANGUAGE: English, French
#CREATOR: DoubleDee, Bohning, retrogirl 
#EDITION: Eurovision, Checked, Duets, Christmas, Halloween, SingStar, RockBand

The description in the spec (website) will be complemented with these infos:

GENRE

... This tag allows multiple entries, you separate them with comma. Right now there is a limit up to 255 Characters. So can add a lot of information.

LANGUAGE

... This tag allows multiple entries, you separate them with comma. Right now there is a limit up to 255 Characters. So can add a lot of information.

CREATOR

... This tag allows multiple entries, you separate them with comma. Right now there is a limit up to 255 Characters. So can add a lot of information.

EDITION

... This tag allows multiple entries, you separate them with comma. Right now there is a limit up to 255 Characters. So can add a lot of information.

Baklap4 commented 9 months ago

Not quite sure if all these fields are only containing one thing per instance..

GENRE => Alternative Rock, Heavy Metal, New Wave Creator => Names can have spaces in them EDITION => Singstar Rocks, SingStar 90"s, Disney Sing Along

Language is probably the only one with only one word :o

bohning commented 9 months ago

I agree with @Baklap4, they can be multiple words, but I don’t see a problem with that, as long as there are no commas in the entries (most likely not the case for any of the three).