Forums » General StepMania » Song library management for social gaming

I've been playing Stepmania for about 14 years now and I've stuck with that long because it's proven to be a fantastic social game to play with friends. We play on metal pads and most of my social group aren't high-level players.

I'd like to discuss song library management in the context of playing SM socially with people who aren't "SM / DDR nerds".

Many of us here have fairly large SM song libraries. I have about 5000 songs installed, for example, and that probably isn't even close to some of the larger collections people on this site have. This presents a problem when it comes to social gaming with non-SM nerds: The "typical" non-nerd will tend to gravitate towards wanting to play songs that they know from "real life". Even I, as a semi-SM-nerd, enjoys playing songs that I know outside of Stepmania.

Why is this a problem? It's because of how song library managment is handled in Stepmania. For a party setting, it takes way too long to flip through thousands of songs, browsing for something you recognize.

I've personally made a point of keeping as many songs as possible that I've found in packs which are relatively "mainstream" or "normal" music that an everyday person may know because these are the kinds of songs that non-SM nerds tend to gravitate towards. The problem is finding them in a sea of obscure remixes to also obscure songs, anime themes, hardcore techno, K-pop, etc. that one typically finds in SM song packs. Casual players, as far as I've ever seen, don't hear a random song on SM and think "oh, that sounds cool, I'll play it". No. They say to themselves "I don't know this. I'm going to look for something I've heard of". With large collections, that's an absolute nightmare.

The #GENRE tag is, in theory, a fantastic tool for solving this problem.
The issue? Almost nobody who releases a song pack USES this tag and it didn't even always exist for Stepmania - the older packs can't use it without converting their .sm files to .ssc song at a time! The event hoster would need to #GENRE tag every song in their collection manually, which is extremely tedious. I have about 4600 untagged songs. I can't even fathom how long that would take to tag.

[EDIT] I actually just finished manually-tagging all 5000 of my songs. Answer: It took about 35 hours.

One thing that would make the #GENRE tag more practical to use for managing large libraries would be to allow players to edit the #GENRE tag right on the song wheel. By pressing some key combination, a "edit #GENRE tag" option could pop up. Reloading the song library and sorting by Genre would then put that song in that Genre. Over time, the entire library could be sorted like this relatively painlessly. This would be fantastic because one could simply create a "Western pop/rock" genre to sort all of those "mainstream" songs out into a Genre folder all of their own, making it more manageable for social settings.

On a similar note, I would love to see a key combination that would open EDIT mode for the selected song from the music wheel. Oftentimes I find a song I want to fix up for whatever reason but then I'll either:
1) Forget or
2) Forget which folder it's in and searching for it manually in the edit/sync songs song selection screen is tough because you don't get previews there.

Being able to simply open edit mode from the song wheel would be awesome!

Another problem I've had for using Stepmania for social gaming: Overly-difficult songs or songs that don't have relatively "Easy" steps available.

The majority of step makers don't release lower difficulties for their songs. I understand why this is but this does force me to specifically seek out songs that have a complete set of difficulties available. I wouldn't mind keeping some harder stuff in my library but that makes the use of the RANDOM song feature completely unsafe!

To address this problem, Stepmania would benefit greatly from some filtering options, such as:
- Hide all songs with a minimum difficulty higher than X (say, 9).
- Hide all songs that don't have at least 2 different difficulties.

I love Stepmania and I love it as a social game. These aspects do make it very challenging to manage large song libraries, though. It's to the point where it's actually in my best interest at this point to actually DELETE songs from my library in order to make it more manageable for social gaming events. I'd love to see Stepmania offer solutions to casual gaming other than simply forcing players to browse endlessly or force the game owner to simply...keep a smaller collection.

What is everyone's experiences playing Stepmania with friends when not everyone is super-hardcore? Has anyone else had issues with it? Are there things you wish you could do that you can't?
Discuss and thanks for reading!

Last edited: 17 May 2015 6:41pm

I started writing Consensual because I had 13k songs and finding a particular group among the 400+ took too long, and finding a song by title was ridiculous. Now I'm at 15k songs in 500 groups, and it's not a problem.
It features a custom music wheel written in lua to solve the problem by nesting groups and songs with no depth limit. It also features custom tagging of songs (though I still need to make that bring up ScreenTextEntry for adding new tags in stepmania), hiding songs that lack charts below a certain difficulty, and many other features.

I've taken it to two events so far. For normal people navigating, it fares about the same. A noisy video game room at a convention is not a convenient place to explain the pad code to switch to the sort menu, and how to open/close a folder to a new person every 5 minutes. And putting that info on a screen that appears after idling doesn't seem to work. But if someone knows the name of the song they want, or even just a single word of the title, I can sort and navigate to the song in under a minute, (from the dance pad, not the keyboard), then step off and let them play.
The only problem that comes up is when there are 13 different charts for Bad Apple, some for different remixes.

Song library management is only a problem for extreme outliers like us who want large libraries. It's going to stay a problem for the forseeable future, because rewriting the music wheel in the engine to support better sorting and management would break theme compatibility, and everybody gets pissy over their favorite abandoned theme no longer working.

At this point, I've taken Stepmania in various versions from SM4 CVS to current to events since 2008. Pretty much the same every year, in every theme. Nobody knows the controls, people accidentally stand on arrows, scrolling the wheel or changing difficulty. People don't know what difficulty they're on. The Player Options menu is entered on accident 99% of the time, and people don't know how to get past it. I have to explain basic navigation to everyone that goes to play, even though the controls appear after 10 seconds of idling.
I'm considering switching to two-part selection style to fix the difficulty problem. Instead of picking song and difficulty at the same time, difficulty selection appears in a separate prompt after the song is picked.
Rewriting the Player Options menu and putting "Play Song" at the top as the first option fixed the problems of people going into options on accident.
Accidentally standing on arrows can only be fixed by building a separate controller mounted in a stand for navigation.

At this point, the things I wish I could do are mostly esoteric stuff that isn't really relevant to running an event. Everything that I've thought of for smoothing play during an event I've already done, at least on the stepmania side.
< 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
That's an interesting theme you've developed! I checked it out and I'll bear it in mind for a potential solution if needed. Thanks for sharing! :)

Over the past few days, I've actually gone in and tagged all 5000 of my songs with #GENREs. The result is...actually pretty awesome! Everything is easy to find and great for playing.
While doing this, I came across a rather odd UI quirk in Stepmania that I never noticed before:

You have different song management operations available to you, depending on which screen you're in!
Here's what I mean by that:

On the Song Wheel, you can:
* Sort songs by any method and, as a result, look up a song's GENRE by its group and vice-versa.
* DELETE songs.
NOTE that you cannot get to the EDIT screen from the song wheel to modify any song information, steps, etc.

On the Edit Song screen, you can

* Sort songs by GROUP ONLY.
* Edit song information
And here's the quirk: You cannot sort songs by GENRE (or any other method) and you cannot DELETE songs.

Why is this inconvenient?
Here are three scenarios:


Say you're in EDIT SONGS mode and you find a song you want to delete. Here's what you have to do:
1) Remember the song name/group.
2) Leave the EDIT screen.
3) Go into the main game.
4) Find the song in the group.
5) Finally you can delete it.
...If if I'm doing something with multiple songs in the Edit Song screen, now I have to find my place again:
6) Leave the main game.
7) Go back to the Edit Songs screen.
8) Find where I was and keep going.

That's 8 steps just because I can't delete the song from the Edit Song screen. The purpose of the Edit Song screen is to manage your library. That's the kind of place a DELETE operation ought to be available.



Say you have a handful of songs that are tagged as one GENRE but you want to change them to a different GENRE. These songs also happen to be in different GROUPS. This has happened to me countless times in the last few days.

The problem is that you can't sort by GENRE in the Edit Song screen. You need to look up which GROUP each song is in, individually, in order to find it and make the change.

Here's what you have to do. In the main game, I found the song on the song wheel that I want to change the GENRE of. I can't really find songs on the EDIT SONG screen because there's no preview music on that screen. Therefore, I need to:

1) Highlight the song in GENRE sort mode.
2) Switch to GROUP sort mode so I can look up which group the song is in.
3) Scroll up or down to see the name of the GROUP that song is in. Remember that group and song name.
4) Leave the main game.
5) Go to the Edit Song screen.
6) Pull up that GROUP and find that song.
7) EDIT that song.
8) Edit Song info -> Edit GENRE
9) and FINALLY I can type in the genre.

...And if I have more than 1 song I need to change the GENRE tag of, I need to go back to the main game and do all 9 steps again!
This is all because

1) There's no way to get to the EDIT SONG screen for the currently-highlighted song directly, by pressing some key combination from the song wheel and
2) You can't sort by GENRE in the EDIT song screen.

If EITHER of those operations were available, I wouldn't have had that problem.



Say I'm actually using the GENRE tag to manage my song library. Say I have a lot of groups. Odds are, I can't remember what group every song is in - Group names are pretty arbitrary and don't really give you a clue as to what's in them, especially when they're full of miscellaneous songs like the vast majority of song packs are.

If I'm using the GENRE tag to manage all of this, I'm going to want to be able to sort by GENRE throughout Stepmania. In EDIT SONG mode, I simply can't sort by GENRE. I'll need to go into the main game, sort by genre, look up the song, switch to GROUP sort, look up the GROUP, go back to EDIT SONG mode and find it...All because I can't use my robust GENRE sort on the EDIT screen.


If I were to make two reasonable requests, I would absolutely love to see the following two features implemented into SM:

1) A DELETE operation available on the EDIT SONG screen.

2) Allow different sorting methods in the EDIT SONG screen. I don't remember which of my billion groups my songs are in. The group names are so arbitrary and full of miscellaneous stuff. Being able to use the GENRE tag...or even the Alphabetical by Song or Artist... would make it infinitely easier to find a song you want to tweak, rather than having to go to the Music Wheel in game and look it up every time. Sorting by group is actually the LEAST-useful sort method for me for song management but that's all we get on EDIT SONG mode.

Also, quick question: Is there any way to change the DEFAULT sorting method on the Music Wheel from GROUP to GENRE when you first start up the game? Even if I play a song in GENRE sort, beat it, leave the game and come back, I have that song highlighted but I'm back to GROUP sort. I want to run in GENRE sort as much as possible and having it default would be ideal. Thanks!

Last edited: 17 May 2015 6:47pm

I'll keep this thread in mind and look at it whenever I need ideas for song management features.

Since any management improvements will go into Consensual first, it's a good idea to look at what it gives you before sinking countless hours into the clumsiness of the default system. (Consensual in general is a playground for making features that I want, and when it's practical some of those features might get put into the engine for other themes to use)

The tags in Consensual basically work like this:
A song can have any number of string tags attached to it. The pane display can show up to 10 of these tags if configured to show them. The tags menu gives you a list of tags that can be applied, and you can turn a tag on or off for a song by selecting it in the tags menu.
You can sort the music wheel by tags, which means that it'll be split up into buckets with the tag names, and songs will go into every bucket they fit in. So if a song is tagged with "jungle", "house", "r^b", and "jazz", that song will be in all 4 of those buckets.
Additionally, tags are not stored in the simfile, they're stored in the profile. Each player can have their own list of tags and tag songs however they like, without affecting the machine. Tags are also stored for the machine profile. (this is meant for a setting with many long-term players who want to tag things differently. Your case is best suited to you doing everything in the machine tag list.)

I'm adding some improvements to the tagging system in Consensual, particularly writing a function to go through and tag all songs by genre. So don't get started converting all the genre work you've done to Consensual's tagging system. Should be done in a few hours.

As for deleting songs, I'm a seriouis packrat, so deleting stuff directly from stepmania makes me uncomfortable (and doesn't work in Consensual for now). Instead, I implemented a censoring system, so that any song not appropriate for the event venue can be marked as censored, and it never shows up in the music wheel. It's still on the drive though, so I can use the same machine at home, turn off the censoring, and play the song.
< 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
There is one thing I'd like to address. In your previous post you said:

rewriting the music wheel in the engine to support better sorting and management would break theme compatibility, and everybody gets pissy over their favorite abandoned theme no longer working.

I browsed around for awhile for functional themes for SM5 and there appear to be VERY few completed options and, after downloading and playing with more than a handful of them, none of them seem to be as stable, pretty and feature-complete as the default SM theme.

It's clear that you're kind of poking fun at people getting pissy over said non-existent themes losing compatibility but that does beg a question:
If the themes are known to be incomplete and we're already poking fun at people getting pissy over this issue, why is maintaining compatibility for non-existent themes a higher priority than improving Stepmania's UI / UX?

SInce there really isn't much that would break down, I can't help but feel like it makes more sense to break compatibility with said non-existent themes, implement some modern features and build skins around those upgraded features.

Without improving the UX, I'm not too sure where else Stepmania can go at this point. I love Stepmania, I don't want to see it die but it's very good at what it does already. It doesn't really need much more to it. It's a very solid game (much kudos to the devs!) To bring it into the modern world is to implement more robust systems for keeping up with larger hard drives, faster download speeds and more available song packs.
If an improved UX/UI isn't a priority for SM devs, where is SM going from here? What else is there to do?

You mentioned:
Song library management is only a problem for extreme outliers like us who want large libraries.

Out of curiosity, how large is the SM player base these days? Is that known? I'd imagine the players who have stuck around with a game as old as DDR/SM are probably the more hardcore fans who would tend to want larger song collections, would they not? Especially since it's not 2001 anymore like when I started playing. You can't get many songs on a 20GB hard drive. Those problems don't exist anymore.

Are SM players who like to play with friends really that small of a demographic for SM? I have a large song collection because, why not? Bandwidth is cheap, hard drives are cheap and song packs are plentiful. I have friends who like different music than I do. Having variety makes everyone happier. I can't be the only SM player who thinks this way.

I'm just honestly surprised to think that's a minority demographic with a game like SM. They way you've described it, I'm not just a minority for wanting to play SM with friends and have a variety of music: I'm an extreme minority! That's really something to think about, considering to me such an approach for a game like SM just seems natural. I stuck with SM because my friends and I got a kick out of it and it's been fun to grow the song library over time with friends. I got into stepmaking right away too and been doing that off and on for years. I should post up some stepfiles I made sometime. I keep meaning to but I keep tweaking them (fix it, make it better!) so they never feel "ready" to give out to the they just stayed in my private collection.

What do most players tend to do with SM? I'd imagine most players are keyboard players because setting up pads is expensive, not possible in every kind of living situation and, honestly, not for everyone. Even so, wouldn't it be in a keyboard player's prerogative to find more songs to play?

Last edited: 19 May 2015 12:27am

In my view, the default theme isn't feature complete to my standards, and most themes make no attempt to add new features or execute it poorly when they do. I'm a rather harsh critic though.

I "poke fun" at people getting pissy over theme compatibility because every theme I have seen that was made before August of last year has dozens or hundreds of errors in it that were silently hidden by earlier versions of SM5. Those themes never worked right, and people are ignorant for thinking they did.
In spite of that, I have held back and worked to maintain compatibility because I want SM5 to be rock solid before breaking compatibility with what little custom theme content it has. That has pretty much been achieved, and I've hit the limits of what can be done without breaking compatibility.

The other side is that I implemented the important UX changes I wanted before I started working directly on the engine. Since then, I haven't had a reason to break compatibility forcing them in, because I already have what I want.
Improving the UX was my priority for 6-8 months. After that, I had everything I wanted, and everybody outside a tiny group ignored my work, so I moved on to other things. From the few people that have posted, it's clear that 99% of users consider graphics to be paramount, and don't look beyond that.

The closest I have to a good measurement of community size is the download counts for the last few releases. Since we don't make binaries for Linux, those are untracked. I've talked to ~10 people that play on Linux, which isn't a useful sample. Let's pretend Linux players are 1/4 as common as OS X players.
5.0.7: 4152 OS X, 39687 Windows, total: 43839
5.0.6: 4369 OS X, 41169 Windows, total: 45538

So it looks like there are 40-50k SM users downloading new releases.
I don't have library size stats for anybody, just a vague notion of a few people I talk to frequently. Among that tiny group, my collection of 15.5k songs is much larger than anyone else's (except horsey), so it seems reasonable that I'm an extreme outlier.
So that's why I think large libraries are rare.

Anyway, I finally finished my tagging system improvements, so you can go try that out.
< 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
In my view, the default theme isn't feature complete to my standards, and most themes make no attempt to add new features or execute it poorly when they do. I'm a rather harsh critic though.
I will agree with you. What features do you feel the default theme needs in order to feel complete? The points I've made in my previous posts are the sorts of things that immediately come to my mind when I think about "things missing from the default theme". If UX improvements aren't the things that are missing, in your view, what is?
as far i can anticipate, your theme kyzentun has the feature "feature-wise", but binds managing functionality to your theme. plus it's hella frustrating to navigate through menus assigning all these.
It should be a functionality not bound to a theme, with super-simple operation. After all, I wanna find and "favorize" the best songs of my liking out of my 20000 songs "collection"

I'd wish this to become core functionality, as described here:

the idea is to work with dynamic favorites folders per user-profile.

a certain key combination marks a song from standard songfolders into the user's dynamic favorite folder.
you'd need two key combos. one for p1, another for p2.

you do fileman manipulations already with delete song functionality.
you could fork this functionality to put/remove entries to/from a favorites.txt

adding with no-profile loaded adds to machine profile, works for p1 and p2 side/keycombo
adding from loaded p1/p2 profile adds to the respective p1/p2 favorites

removing then works the same way, but only from within p1/p2 user profile.
how/if removing from machine profile may work may be discussed.
I'd say, allow machine profile removal using either p1 or p2 keycombo.

upon starting a game, machineprofile/favorites.txt, $user_p1_profile/favorites.txt and $user_p2_profile/favorites.txt are parsed,
and their respective entries replicated in respective "dynamic favorites" folders:
- Machine Favorites
- $user_p1_profile Favorites (translates to user profile name, e.g. 'kyzentun's Favorites')
- $user_p1_profile Favorites (ditto)

In short:
- songwheel allows songs to be favorized to 'favorites folder in songwheel, per machine/p1/p2 profile
- upon being in a favorites folder, removal from such is allowed

this looks pretty trivial in code, despite me _not_ being a programmer.



favorites.txt are human readable, and would allow for manual edit, and obviously can enable players to share txt files for song recommends instead of other current ways to "socialize online".

Last edited: 29 September 2015 5:36am