Forums » General StepMania » StepMania Helper Program

Hi everyone,

I've been an avid StepMania player for about two years now, and because I'm constantly downloading new songs, my song library has grown to an almost unmanageable size.

As a software engineer by trade, I decided to program an application which could help me to manage the thousands of songs I have in my library. The result of this effort is a program I call StepMania Helper. I originally didn't plan to release the software publicly, but I figured it might be useful to others, and I figured it would be a good way to give back to the StepMania community that has provided me with thousands of hours of free gameplay.

StepMania Helper parses all songs in your StepMania library, and then moves songs (according to filters you define) to directories where StepMania won't detect them. The filters that are currently supported are as follows:
- Detect identical songs (duplicates)
- Detect alternative versions of the same song (using song name, artist, BPM, length, and music files)
- Detect songs which cannot be played on a dance mat (jumps that involve 3 notes)
- Detect songs that have inaccurate difficulties (calculates average step densities and then identifies outliers)
- Detect songs that have no difficulties under a specified threshold (too hard)
- Detect songs that have an average BPM over a specified threshold (too fast)

Once the songs have been moved by StepMania Helper, you can do whatever you want with them (delete them, move them elsewhere, or even put them back where they came from).

After parsing all songs, a "StepManiaHelper.bin" file will be created in your songs directory. This file contains binary information about all detected songs, which will be used to speed up program execution if run again. The file is safe to delete, however doing so will prevent subsequent executions from being faster.

The application requires .Net Framework version 4.0, which if you don't already have installed, is available for download from the following link:
http://www.microsoft.com/en-us/download/details.aspx?id=17718

StepMania helper was designed to be user friendly and stable, but since this is the first public release, you may experience problems.
If you would like to report a problem, if you would like to provide feedback, or if you would like to request additional features be added,
please reply to this thread, or contact me via email at StepManiaHelper@gmail.com

StepMania Helper is available for download from my dropbox via the following link:
https://www.dropbox.com/s/rygjuu03h2xdqyr/StepManiaHelperV1.01.zip?dl=0

Last edited: 14 February 2015 4:13pm

Reply
This is a nice tool, though I don't think I have enough songs to make this useful. I bet it would be handy for adjusting DDR X difficulties to match old DDR difficulties, though.
Reply
Thanks. It's definitely geared toward a song library that has thousands of songs in it, but it can be useful for smaller libraries as well.

The functionality to detect inaccurate difficulties works by associating the skill need to play each difficulty, with the reported numerical difficulty. Songs that require a skill level above the average for a given reported difficulty are flagged and moved. If the program moves a song for this reason, it shows the difficulty the song reported along with the difficulty the program calculated using the averages.

Using these displayed difficulties could definitely help when adjust DDR X type songs to match old DDR type songs. However, since it works using averages and standard deviations, you'd need significantly more DDR X type songs than old DDR type songs in order to skew the averages in that direction.

Also, I updated the original post to contain a link to version 1.01. An individual in another thread pointed out that the logic to detect inaccurate difficulties in version 1.00 wasn't taking into account BPM, and was consequently rating slow songs as more difficult than they should have been. If you're upgrading from version 1.00 to version 1.01, be sure to delete your "StepManiaHelper.bin" file since it contains outdated information now.
Reply
Seems pretty cool.
(by the way, songs with 3+ notes on jump can be played on a dance mat. just use your hands)
<YungDaVinci> but what does it mean
<YungDaVinci> what is kyzentun
<Kyzentun> It means Kyzentun.
<Jousway> what the fuck is a Kyzentun
Reply
When I see 3 notes at once my brain just freaks out. That particular filter probably isn't useful for gifted individuals who can handle such situations, but for me it helps to minimize the brain freak-outs :p

Thankfully none of the filters are forced on you, so if you don't want to use that particular one, you don't have to.
Reply
Why didn't you try to get any of these features added into stepmania to make them usable in the game and usable by people not running Windows?
< cybik> til Kyzentun fixes bugs for breakfast
--
< maxvg1> shakesoda: then why do i still play lol
<@shakesoda> because you're an ITG player. And thus, a masochist
--
<@shakesoda> Kyzentun: I think you might need to put down the meshes for a bit
Reply
I wrote StepMania Helper in C# because the .Net Framework provides a lot of tools that allow for rapid development (Regex, Cryptography libaries for MD5 hashes, LINQ, etc.). This allowed me to focus more on the logic side of things without having to worry about the low level stuff. StepMania is written in C++, and although I certainly could port the code over, it would be a bit of an undertaking given that I'd have to recreate the afore mentioned tools and libraries (or find alternative ways to arrive at the same results).

Even if I did port the code to C++ though, does StepMania presently offer any functionality to manage a user's song library? To my knowledge, StepMania simply reads your library data, it never attempts to modify any of it. I suppose it would be possible to add additional menus under options, but it seems like its a bit of a deviation from the other tools available from within the game. A standalone application seemed like a better fit for the task.

If the main goal is simply to run the program under Linux, I could take a stab at porting the code over to Mono. That should at least be easier than porting it to C++, and if I get lucky I may not even need to change much (Mono's come a long way in a short time).
Reply
The only one I'm actually interested in is how you figure out inaccurate difficulties.
If all you're doing for that is "number_of_notes / song_length", then it probably produces wrong results because that doesn't consider how the chart is actually played. Even with that, the statistics used to identify outliers might still be useful.

Everything else, I could easily implement myself. (I already have a way of filtering out songs that don't have any charts below a certain difficulty as part of my theme)

btw, having 3 arrows at once doesn't make a chart unplayable on pad at all. When I had been playing for 2 years, I was playing Disconnected Disco double expert from ITG, which has 3 and 4 arrow stuff all over, and even one spot with holds in 4 columns and taps in two others, for 6 arrows at once.
< cybik> til Kyzentun fixes bugs for breakfast
--
< maxvg1> shakesoda: then why do i still play lol
<@shakesoda> because you're an ITG player. And thus, a masochist
--
<@shakesoda> Kyzentun: I think you might need to put down the meshes for a bit
Reply