forum

Scroll v0.04 - an osu!mania scroll speed setter program

posted
Total Posts
14
Topic Starter
Blaizer
Scroll was an osu! thing that reads osu!.db and sets the mania scroll speed settings for each of your installed beatmaps.

Downloads

EDIT: This has been implemented into osu natively (See here for details: t/254145)! Ignore this thread and go play now!

Some background

The osu!mania scroll speed setting (the thing you change with F3/F4) can be a pain to set for every map. Currently, mania does very little to help you set it right. It saves the setting for each beatmap, and if a map doesn't yet have a setting it uses the setting from the last map you played. I made a feature request for a better system than this at t/216614.

In the meantime, though, I realised that if osu! is keeping track of your scroll setting for each map then it must be saving it somewhere. So I had a look around and managed to find where they were stored. It turned out that these scroll speed settings are all saved by osu! into osu!.db (found in C:\Program Files (x86)\osu!). If you edit one of these values for a beatmap, then osu! will happily use that scroll speed setting the next time you play the map. That's what this program does.

How to use it
  1. Run scroll.exe

  2. Enter your osu!.db file, usually found at C:\Program Files (x86)\osu!\osu!.db

  3. Back up that file (optional)

    All your scroll settings will be clobbered by this program. If you're worried you'll want them back, you should take this step.

  4. Close osu!

    Restarting osu! seems to be the only way to make osu! notice any changes to osu!.db. It's also safer to use this program while osu! is closed, so that two programs aren't trying to update the file at the same time.

  5. Enter your "best" BPM and speed settings

    Instead of making you put in all different BPMs and the scroll speed you like best at that BPM, this program just uses a single BPM-and-speed pair. From this, the scroll speed for every other BPM is calculated. I recommend choosing a BPM that's average for the songs you play (around 160 for me). Then find your best speed setting for that BPM.

  6. Hit the "Write scroll speeds to file" button!

  7. Play some songs at different BPMs and tweak your "best" settings

    You may need to do this to make every song scroll at a speed that's comfortable. You can make small adjustments to make things slower by putting the BPM down a bit. To make small adjustments to make things faster, raise the BPM slightly.
Features
  1. Simplicity!

  2. Saves your settings from the last time you ran the program

  3. Full error checking. Never tries to do anything with a file it doesn't understand

  4. Does all writing after reading. The file must be valid for anything to be changed
Changes

v0.04 - 2014-07-23 - Added visualisation of BPMs for scroll speeds

v0.03 - 2014-07-22 - Fixed that scroll speed for osu!standard maps wasn't set

v0.02 - 2014-07-19 - Updated readme

v0.01 - 2014-07-18 - First release
TyroneSama
Looks like a good workaround until o!m gets a c-mod equivalent. Nice work! I'll give this a try.
Bobbias
You should put in a better explanation for how this actually calculates the other speeds based off that single speed/BPM pair. Nice work, but why do you have 2 different sources in your repo?

EDIT: holy hell, you've got way more libraries in that zip than you should need lol. Might want to slim that down a bit. I'm sure you don't need pthreads, cairo, or libxml just to do this. (At the very least you shouldn't need libpng)
Topic Starter
Blaizer

Bobbias wrote:

You should put in a better explanation for how this actually calculates the other speeds based off that single speed/BPM pair.
It's just a linear function. BPM and speed are in direct proportion. song_speed = (my_best_bpm / song_bpm) * my_best_speed. Very simple calculation.

Bobbias wrote:

Nice work, but why do you have 2 different sources in your repo?
scroll.c and its buddies are the GUI. It's optimised for speed so there's very little debugging fluff in there. scroll.pl and its buddies are for debugging. They print out everything, and make it easy for me update scroll.c when the format of osu!.db gets changed as it regularly does in osu! updates.

Bobbias wrote:

EDIT: holy hell, you've got way more libraries in that zip than you should need lol. Might want to slim that down a bit. I'm sure you don't need pthreads, cairo, or libxml just to do this. (At the very least you shouldn't need libpng)
Try deleting any one of them and the program won't run. What I've included is actually minimal. GTK+ is just cool like that.
Cozzzy
This has helped me a lot, because there were a few maps I didn't realise I had set slightly too fast. Thanks for this! :D
Topic Starter
Blaizer
Oops. The link was broken for a while there but now it's fixed again.
Topic Starter
Blaizer
Kinda big-ish change in the new version 0.04 I just put up. I added a "visualisation" of what scroll speeds will be used at what BPMs, depending on your settings. Should make it a lot easier for you to figure out questions like "what's the lowest BPM setting I can use to get 180 BPM songs to be at a scroll speed of 11". With scroll speed set to 11, the answer is 172, as you can see in the updated screenshot.

Check it out!
Cuppp
How does it work for converted maps that has speedchanges. Bpm is say 56-65000 (170). Does it calculate for (170) then?
Topic Starter
Blaizer

Cuppp wrote:

How does it work for converted maps that has speedchanges. Bpm is say 56-65000 (170). Does it calculate for (170) then?
Yes. It currently picks the BPM that is effective for the longest. It actually treats SV changes as BPM changes, so if a song is 180 BPM, but at 2.0x for most of the song, then it'll be treated as a 360 BPM song.

I could make the algorithm a bit smarter. Currently the only song I know of that Scroll gets the BPM wrong is Big Money. It has a section that's really fast, which is the BPM you probably want to be chosen, but a longer portion of the song is actually at a slower BPM. Luckily there aren't many songs like this, though. Pretty much all songs stick to one main BPM and vary from it just for effect.
ikzune
i know i may have not read this right but please tell me this doesn't change slowjam aspects in maps if a lot of the map has this or if there are lots of speed changes, those things that people almost consider unreadable to bump up ur sv beyond what you can play at, if this application does already account for those factors and disincludes them then thank you c:
Topic Starter
Blaizer

laishiou wrote:

i know i may have not read this right but please tell me this doesn't change slowjam aspects in maps if a lot of the map has this or if there are lots of speed changes, those things that people almost consider unreadable to bump up ur sv beyond what you can play at, if this application does already account for those factors and disincludes them then thank you c:
Yeah it disincludes them. Songs tend to run at one speed for a lot longer than any other speed. SV bumps and stuff may be extreme changes, but they're not active for very long, so they end up not getting picked. All the BPM-picking algorithm does currently is treats everything as a BPM, and then picks the BPM that's active for the longest. So a 2.0x SV change on 120 BPM is treated as 240BPM.

Only time it will mess up is on a song that has a section you don't want to be picked as the primary BPM, which sums to a longer time than a section that you do want to be picked as the primary BPM. Only song I know of where this is the case is Big Money. For now it's easy enough to just adjust your setting for that song manually in-game based on what the game tells you the BPM of the song is, and what Scroll tells you your scroll speed is for that BPM range.

I could make the algorithm a bit smarter, but for now it works well enough to ignore those SV bumps and stuff.
gintoki147
Everyone should know about this.
You really helped me today! Thanks a lot!
[ Pustules ]
THIS IS AMAZING!
Topic Starter
Blaizer
This has been implemented into osu natively! See here for details: t/254145. I've removed the download links, and this thread can die happily.
Please sign in to reply.

New reply