Logo

Requesting feedback on proposed changes to the CRS format in ITGMania

Register Log In Back To Forums

Post #1 · Posted at 2024-02-26 01:14:39am 2 months ago

Offline mike_vvv
mike_vvv Avatar Member
2 Posts
Not Set
Reg. 2024-02-23

For the past few months, I've been working on implementing a new alternative to the #SONG tag for Course files in ITGMania. Before I finalize the work and get it merged into the main codebase, I wanted to get some feedback from the community on it.

The current #SONG tag is very limited in its functionality and isn't terribly well documented. I've personally been frustrated with its limitations for, like, a decade now, and I'm sure I'm not the only one.

Below is a description of the tag and how it works. My main questions to you all are:
- Does this make sense? (I'm pretty sure it does, but sometimes I like to make sure I'm not writing Beautiful Mind nonsense)
- Is there anything you'd like to see this support, that it currently doesn't?
- More generally, is there anything you'd like to see Courses support that they currently don't?



The proposed tag is tentatively called #SONGSELECT, which aims to replace the #SONG tag by including and expanding on its functionality in a format that is easier to understand. It's composed of a series of PARAM=VALUE statements, separated by :'s. I'm still working on writing up documentation, but the basics are:

It currently supports the following parameters, which can be used in more or less any combination and order:
TITLE, GROUP, ARTIST, GENRE, DIFFICULTY, METER, BPMRANGE, DURATION, SORT.

TITLE, GROUP, ARTIST, GENRE
These parameters accept a comma-delimited list of one or more values. Examples:

#SONGSELECT:TITLE=Goin' Under,Springtime;
#SONGSELECT:TITLE=thank u\, next;
#SONGSELECT:GROUP=Stepmania 5,In The Groove:ARTIST=Kommisar,NegaRen;
#SONGSELECT:GENRE=J-Pop,Black Metal;


DIFFICULTY
Accepts a list of one or more difficulties. Example:
#SONGSELECT:DIFFICULTY=Medium,Hard;

METER
Accepts a minimum and maximum value for the song's difficulty meter, separated by a hyphen ('-'). Example:
#SONGSELECT:METER=8-12;


BPMRANGE, DURATION
These parameters accept a minimum and maximum value, separated by a hyphen. The DURATION values are in seconds. Examples:

#SONGSELECT:BPMRANGE=120-150;
#SONGSELECT:DURATION=90-200;


SORT
A set of two values that specify a sort type and a number, separated by a comma. This really isn't intended to be used in conjunction with other parameters, and was mostly added so that #SONGSELECT can support all of the features of the #SONG tag. Examples:

#SONGSELECT:SORT=MostPlays,1;
#SONGSELECT:SORT=LowestGrades,4;


There's also a MODS parameter, but its explanation is lengthy.

So for example, if you wanted to write a course that consists of moderately difficult songs in the 140-ish bpm range:
#SONGSELECT:METER=7-12:BPMRANGE=130-150;
Or if you want a course that consists of BeForU songs on Hard:
#SONGSELECT:ARTIST=BeForU:DIFFICULTY:Hard;


If anyone is curious to see the code, it's available on github. The majority of the changes are in CourseLoaderCRS.cpp and Course.cpp.

Post #2 · Posted at 2024-02-26 06:29:34pm 2 months ago

Offline Dancefreak
Dancefreak Avatar Member+
340 Posts
United Kingdom
Reg. 2006-08-12

Personally I think those are some great ideas and i'm currently browsing the pull request myself to see how you've gone about doing it. I've also been really frustrated by how limited and outdated the old .crs format is and would love to see these sorts of features added. The only major caveat is that so much content is in the old .crs #song format you'd have to make sure they still work because it's already difficult enough getting old courses to play in the manner in which they were designed without having to convert them to a whole new format as well.

Post #3 · Posted at 2024-02-26 07:32:49pm 2 months ago

Offline n00b_saib0t
n00b_saib0t Avatar Member
2,302 Posts
United States
Reg. 2007-02-05

Nintendo Network ID: n00bsaib0tNintendo Switch Friend Code: SW-7875-2425-72033DS Friend Code: 4871-6557-4900
"F***ing exhausted."
My biggest gripe with the current course format is that if you don’t specify a directory it can grab the wrong song. So just downloading the official ITG marathons doesn’t necessarily work if you also have DDR songs in your library. Like, despite one being all caps and the other not, one of the courses grabbed DRIFTING AWAY from MAX2 instead of the ITG song Drifting Away so you either have to rename the DDR song or edit the course to include the song directory (group). That and scripted noteskin changes don’t work anymore, but this was true for official ITG PC as well which I think was SM4 based, so courses like Driven don’t change like they’re supposed to. I’m not sure if these have a reasonable fix or not.
Quote: sharibetsu in The Unwritten Rules of ZIv thread
Any popular thread must have at least one debate between n00b_saib0t and someone else.

Post #4 · Posted at 2024-02-26 08:12:35pm 2 months ago

Offline Dancefreak
Dancefreak Avatar Member+
340 Posts
United Kingdom
Reg. 2006-08-12

Quote: n00b_saib0t
My biggest gripe with the current course format is that if you don’t specify a directory it can grab the wrong song. So just downloading the official ITG marathons doesn’t necessarily work if you also have DDR songs in your library. Like, despite one being all caps and the other not, one of the courses grabbed DRIFTING AWAY from MAX2 instead of the ITG song Drifting Away so you either have to rename the DDR song or edit the course to include the song directory (group). That and scripted noteskin changes don’t work anymore, but this was true for official ITG PC as well which I think was SM4 based, so courses like Driven don’t change like they’re supposed to. I’m not sure if these have a reasonable fix or not.

I Mean I agree with you it's a pain but I think the oversight you have there is that those courses were never designed to be used outside of their official hardware or in the closed environment of ITG PC so really you're asking something designed for a closed system to work on something it wasn't set up for. The Noteskin changes however I think that's just something that's been neglected over time and i'm completely with you on that.

To be fair if this resulted in more options for courses and for someone to come along and fix all the classic ITG courses for ITGMania i'm all here for it and hope this actually gets done Big Grin

Post #5 · Posted at 2024-02-26 10:04:15pm 2 months ago

Offline n00b_saib0t
n00b_saib0t Avatar Member
2,302 Posts
United States
Reg. 2007-02-05

Nintendo Network ID: n00bsaib0tNintendo Switch Friend Code: SW-7875-2425-72033DS Friend Code: 4871-6557-4900
"F***ing exhausted."
Yeah I get that they were only meant to be used on an ITG machine, what I meant was can it be done where courses look for songs in a case sensitive way. Since so many DDR songs are all caps and ITG didn’t really do that it would at least alleviate the issue for official courses.
Quote: sharibetsu in The Unwritten Rules of ZIv thread
Any popular thread must have at least one debate between n00b_saib0t and someone else.

Post #6 · Posted at 2024-02-26 10:22:11pm 2 months ago

Offline mike_vvv
mike_vvv Avatar Member
2 Posts
Not Set
Reg. 2024-02-23

Quote: Dancefreak
The only major caveat is that so much content is in the old .crs #song format you'd have to make sure they still work because it's already difficult enough getting old courses to play in the manner in which they were designed without having to convert them to a whole new format as well.

I guess I should clarify, I won't be literally replacing it. Existing courses should behave exactly the same. I've tried to leave the existing code that handles the #SONG tag alone as much as I can. Funnily enough, I actually came across and fixed a couple of bugs that appear to have been around since at least 2007, which in my mind is a testament to just how little courses actually get used.


Quote: n00b_saib0t
My biggest gripe with the current course format is that if you don’t specify a directory it can grab the wrong song. So just downloading the official ITG marathons doesn’t necessarily work if you also have DDR songs in your library. Like, despite one being all caps and the other not, one of the courses grabbed DRIFTING AWAY from MAX2 instead of the ITG song Drifting Away so you either have to rename the DDR song or edit the course to include the song directory (group). That and scripted noteskin changes don’t work anymore, but this was true for official ITG PC as well which I think was SM4 based, so courses like Driven don’t change like they’re supposed to. I’m not sure if these have a reasonable fix or not.

Yeah I know what you mean. The #SONG tag compares the group and song names in a case-insensitive manner, which maximizes the likelihood of finding a match, but can also lead to situations like this, where it might come across a less "correct" match first.

Currently, #SONGSELECT only accepts exact matches for group, title, artist, and genre, so you won't run into that issue (at least not from your specific example).

One option I'm considering adding is some sort of flag to enable/disable strict matching--I can't imagine why someone would ever want to use it, but that's not really my concern. I've also got an idea for breaking down artist names that are actually several artists (eg "NAOKI feat. PAULA TERRY", "Lady Gaga & Ariana Grande") so that they're included as options when a course is choosing songs based on an artist name.

And to your second point of scripted noteskin changes, I'll have to look into that, I'm not sure why those wouldn't still work, other than the noteskin names may have changed.
Register Log In Back To Forums

0 User(s) Viewing This Thread (Past 15 Minutes)

©2006-2024 Zenius -I- vanisher.com -5th style- IIPrivacy Policy
Web Server: 4% · Database: 4% · Server Time: 2024-04-27 11:56:41
This page took 0.007 seconds to execute.
Theme: starlight · Language: englishuk
Reset Theme & Language