forum

Map Speed Changer - Release! (Now with source code!)

posted
Total Posts
50
Topic Starter
MillhioreF
Please use smoogipooo's program instead, this one is obsolete and outdated!

old
As a solution to the problem posed in this thread, I spent some time putting together a quick Java program to automatically adjust the speed of notes in .osu files. Of course, you'll need to edit the map's mp3 to bring it to the speed you want first, or else the map won't really make sense at all.

Click here to download! (current version: 1.32)
Source code on github

For instructions and details, READ THE README! That's what it's there for!
If the program says that java is an unrecognized command, download the JRE here: http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html

Known issues:
  1. If the output filename is the same as an existing filename, it'll overwrite. I'll fix this later.
  2. Stack leniency, difficulty settings, etc. aren't adjusted to fit the new speed. Low priority for the moment.
  3. .osu files with Unicode don't work. I've attempted to fix this but haven't succeeded yet, it's top priority though!
Planned features:
  1. Config file for toggling various settings. I've already put some framework in for this!
  2. Drag'n'drop support for .osu files. Not easy to do as far as I know, but I want it to happen.
  3. Maybe a GUI someday..?
[box=How to edit mp3 speed in Audacity]0. Open your mp3 in Audacity
1. Go to Effects -> Change Tempo
2. Put in the percent change you want, or the current BPM and desired BPM. BPM change doesn't take decimans for some reason, so just multiply the numbers you want by 100.

3. Export your mp3 and add it to the song folder. Enjoy!
Aqo
oh hey that's nice

<3

Does your program snap notes to timeline as well as timeline lines and re-calculate slider speeds with the timelines speed changes?
Yarissa
This isn't against the rules?
Aqo

Kaoru wrote:

This isn't against the rules?
why would it be

all it does is let you create maps faster that you can otherwise create manually

except I tried this now and it doesn't seem to work for me. Millhiore sup?
[CSGA]Ar3sgice
the quick brown fox - the big black (300% speed ver)

Topic Starter
MillhioreF

Kaoru wrote:

This isn't against the rules?
Nah, it makes separate unranked .osu files, it doesn't change the speed of existing ones.


Aqo wrote:

Does your program snap notes to timeline as well as timeline lines and re-calculate slider speeds with the timelines speed changes?
It doesn't forcibly snap to timeline, but it does recalculate timing sections to change slider speeds. Hopefully the program is accurate to within 1ms of timeline, too.


Aqo wrote:

except I tried this now and it doesn't seem to work for me. Millhiore sup?
What's not working? Does the program run successfully?
theowest
I haven't actually tried it yet, but boy am I excited to do so. Good job on this!
FlameseeK
This is such an awesome idea, I really appreciate it!

It didn't work for me either though, I keep getting the message - "'java' is not recognized as an internal or external command". I tried to fix this issue, but haven't managed to do yet. Any thoughts?
lolcubes
FlameseeK

lolcubes wrote:

Try http://www.java.com/en/download/index.jsp
I tried reinstalling Java, but I still got the same message. Not exactly sure what I need to do yet, but if this works properly for millionaire and other people then there must be something wrong that I gotta fix.
Topic Starter
MillhioreF
lolcubes's link is for in-browser Java - you probably need the JRE for this. http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html

I'll go ahead and add this to the OP just in case.
FlameseeK
Ok sir, I'll give it a try now and let you know how it works. Thanks for the help! 8-)
theowest
Can you possibly make an example map where you've used this program of yours? I don't really want to make one myself just to try it out.
Topic Starter
MillhioreF
Oh, sure. Here's one I have saved in my puush (will edit this post later to add more)
http://puu.sh/1PppR

Also see http://osu.ppy.sh/s/68740, which WASN'T made by my program but rather was made manually, and served as the inspiration.
theowest

MillhioreF wrote:

Oh, sure. Here's one I have saved in my puush (will edit this post later to add more)
http://puu.sh/1PppR

Also see http://osu.ppy.sh/s/68740, which WASN'T made by my program but rather was made manually, and served as the inspiration.
Thanks! You could maybe add it to the OP too if you want, just as an example.

here's another map: http://osu.ppy.sh/s/58452
Winshley
Would be more awesome if there's also MP3 converter as well. :P

I was thinking that the offset might differ to the converted MP3 because there's a chance that the converted one may give some milliseconds of silence at start, but that can still be done manually though.

Another issue is probably the OD, as slow notes are harder to time than fast ones under same OD.
Topic Starter
MillhioreF
I'd make it convert the MP3 too if I knew how... Audacity doesn't seem to have an API for using it remotely, so I don't think it's feasable. I might release an update to automatically adjust the difficulty stats at some point, too.
Aqo
So I've been trying to use this and it's reallly nice, GJ Millhiore.
One thing tho, can you add an option to edit speed by bpm and not be percent?
i.e. right now if I want to convert 200bpm to 300bpm I have to type "150" for 150% speed, I want an option to type "200" and "300" to get that.
This would be useful when trying to convert speeds like 163.85 into 180 which is really hard to do with % change. (needless to say, please add support for floats in this and not just integers)
Topic Starter
MillhioreF
Floats are supported already, of course. I should be able to add raw BPM support too, good idea - I'll look at doing that later today.

Update: Version 1.1 released! Adds the requested BPM specification as well as fixes a couple small issues. Download link is in the OP, or here for the lazy: Download
Aqo
Thanks a ton! <3
Topic Starter
MillhioreF
Couple more bug fixes, the most important of which being that mania maps should work better now.

Download
Topic Starter
MillhioreF
Big release! This one fixes some parsing issues in v9 maps as well as streamlines the input and output further.

Download
Niko
"Processing beatmap headers failed" error in game when I try to adjust the speed of this map ;_;
Topic Starter
MillhioreF
Works fine for me. Try again - if it still happens, can you send me the corrupt .osu file?
mrk_old
Could you made a public version for dudes with american key-layout.
Because after converting osu says the file is corrupt due to wrong signs in the timestamps :S

As a non-american key-layout user you either have to change the "," in the timestamps to "." for the non-integer numbers or rewrite the bat correctly :S

Cost me a lot of time to figure the problem out^^


P.S.: That is why all european guys in here, have the problem with "Processing beatmap headers failed".
Topic Starter
MillhioreF
I've already fixed that issue thanks to Niko, but I haven't put up another version yet because I meant to add a couple of other things (like not closing the program totally if you typo the name of the .osu file)
I'll try to get it out over the next day or so.
Topic Starter
MillhioreF
Finally got around to this! I've added looping (for mass conversions) and attempted to fix the issue Europeans were having with decimal separators. I'd appreciate it if someone could test that out, since I'm unable to myself.
Download
mrk_old
Does not work for me. It always says, it can't find the file.

One Example:

Tried several .osu files
Topic Starter
MillhioreF
Oh darn, I totally forgot to release the fix for that. Will update once I'm back home from work @_@
For now, rename the file so there are no brackets in the filename and it'll work.
mrk_old
It converted it correctly, but osu! still says its corrupted, looked through the osz, but it seemed fine to me.
After that i opened it with the ingameeditor and the timing was done right and the circle were also at the same place, so i can't figure out the problem. I'll just changed my language-overlay to american keyboard in windows and using yours without a prob :)

Here are some of my speed-ups thanks to MillhioreF

Here my list.
Topic Starter
MillhioreF
Bugfix update is out. Sorry for the inconvenience!
mrk_old

MillhioreF wrote:

Bugfix update is out. Sorry for the inconvenience!
works now with both decimalformats, thank you.
primrose
It showed like this. Is it the same problem as the java is not unrecognized command?
Topic Starter
MillhioreF
Pretty much. That means that you have java 6, while this program requires java 7 (which you can get from the OP)
primrose
Thanks! It worked fine now :)
Dexus
Any guide on how to change the speed of the mp3 to properly fit? I tried and it ended with a mess.
Topic Starter
MillhioreF
I've been trying to implement SoundTouch to convert mp3s in-program, but it really isn't working out and I have no idea why (yay for being a bad programmer!) Pretty simple to do in Audacity though.

0. Open your mp3 in Audacity
1. Go to Effects -> Change Tempo
2. Put in the percent change you want, or the current BPM and desired BPM. BPM change doesn't take decimans for some reason, so just multiply the numbers you want by 100.
3. Export your mp3 and add it to the song folder. Enjoy!
Aquamarine
If I wasn't in debt I'd gift you money for this.
Dexus
Thanks! I don't know how to use audacity so that was helpful (I first tried change speed, but it didn't fit at all)

You should also include that either in the main post or in the readme
Topic Starter
MillhioreF
Fair enough, I'll add it to the OP. Thanks for the encouraging words!
Nanika133
Wow, really nice program, I love it :D

(I'll change every stream map to 150 bpm :3)
Just a question : What can we do about SBs? Can you add something like that?

Also when we have a multiple BPM song, what should we put as new BPM? The higher BPM or the first one?
Dexus

Nanika133 wrote:

Also when we have a multiple BPM song, what should we put as new BPM? The higher BPM or the first one?
Use the first BPM that comes up in the map as a base point for it and then use math to figure out how much you need to adjust to get what you want.

Map A starts at 60 BPM and goes to 180 BPM and I want to adjust it to be 210 BPM at the 180 BPM parts.

( Desired BPM ) / ( BPM being adjusted ) = ( Percentage increased ) * ( First BPM in the map ) = New First BPM

210 / 180 = (1.1666...) * 60 = 70

So in the map speed changer I would set it to 70 BPM and then the 180 BPM part becomes 210. This is because (1.1666...) * 180 = 210.

Be sure to go in and edit the map to see what the very first BPM timing is set to because sometimes there's slower parts that show as the lowest BPM in the map but it isn't the first BPM. The first BPM pretty much determines what you're going to be adjusting.

I hope that helps, and also I really wish there was a GUI for this because it'd be useful to calculate and adjust stuff faster seeing what results you would get if you adjust numbers. Not that it's hard to do but there are times when I'm lazy to whip out a calculator to do the math.

Also please fix it to where the song filename in the osu file is renamed to the BPM you adjusted it to similar to what it's called in the filename after being adjusted.

Proposed GUI:
shows all the BPM that come up in the map in individuals
Can click them and set them to desired bpm
The rest adjust accordingly
Be able to say what gets tagged on the end of the filename (Song filename, difficulty gets appened to be the same) [Maps with multiple BPM kind of give the wrong BPM tagged on the diff and I have to manually edit it to be correct]

This is a very useful tool thank you very much Millhiore. It has helped me get better at this game. Sorry if this post seems overbearing and bloated.

Edit:
I also thought of maps with online offsets, how would this get calculated if you adjust the BPM? Is it possible to add the offset in the adjustment?
Topic Starter
MillhioreF
There's a version floating around that doesn't work, period. I fixed a potental cause of this, so you can get it here or in the OP.

Dexus wrote:

Also please fix it to where the song filename in the osu file is renamed to the BPM you adjusted it to similar to what it's called in the filename after being adjusted.
This will happen after the config file update (which might come out someday!)

In fact, I just released the source code to this program in the OP! The code is horrible and nasty because most of it was created over half a year ago (I've improved since then, honest) so if you're interested in adding to it, feel free to contact me and ask me what the hell my code is doing if you don't understand.
raww_old

mrk wrote:

It converted it correctly, but osu! still says its corrupted, looked through the osz, but it seemed fine to me.
After that i opened it with the ingameeditor and the timing was done right and the circle were also at the same place, so i can't figure out the problem. I'll just changed my language-overlay to american keyboard in windows and using yours without a prob :)

Here are some of my speed-ups thanks to MillhioreF

Here my list.
I made some too, the only issue I've found is that the tool sometimes throws offset off by -20 or +20, I think it happens when the map starts around 20-30 seconds into the song, it doesn't fix offset properly. Around 2/3 of all the maps I changed needed -20. Anyway I fixed those manually and they should all be correct. Thanks for making this tool!! Incredibly useful. Also, such necrobump

I used 192kbps audio quality for all the BPMs, so that's why it's quite spacious

Multiple BPM pack 1
https://mega.co.nz/#!2FJhzKTQ!ITxHFuByd ... 5uqZ1d5asY

Multiple BPM Pack 1 content
World's End [Extra Stage] (happy30) Fixed offsets 16-05-2014
210 BPM. 220 BPM, 230 BPM, 240 BPM, 250 BPM

Hitori Tori - perthed again (yambabom remix) [AR9] (Zapy) fixed offsets 17-05-2014, +20
200 BPM, 220 BPM

DJ Technetium - Yaranaika [Paglidaika] (Pagliaccio)
185 BPM, 200 BPM, 210 BPM, 220 BPM, 230 BPM

Team Nekokan - Can't Defeat Airman [Holy Shit! It's Airman!!] (Blue Dragon)
220 BPM

Igorrr - Pavor Nocturnus (grumd) [Insane]
200 BPM, 220 BPM, 240 BPM

Harry - Earth Day (Moway) [Earth Day] fixed offsets 17-05-2014, +20
210 BPM, 230 BPM

DJ YOSHITAKA - FLOWER -COLORFUL GARDEN MIX- (eLy) [Flower]
190 BPM, 200 BPM, 210 BPM

M2U - Placebo Dying (Angelhoney) [ExtrA] fixed offsets 17-05-2014, +20
200 BPM, 210 BPM, 220 BPM

Suzaku VS Genbu - Himiko (Charles445) [Another]
200 BPM, 210 BPM, 220 BPM, 230 BPM

Yumeji Ruri - The answer BLOOD ~Senketsu no Michishirube~ (Short Ver.) (Star Stream) [S.S] fixed offsets 17-05-2014, +20
200 BPM, 210 BPM, 220 BPM, 230 BPM

Shounen Radio - neu EX (Philippines) [Platinum] fixed offsets 17-05-2014, +20
210 BPM, 220 BPM, 230 BPM, 240 BPM

UNDEAD CORPORATION - Yoru Naku Usagi wa Yume o Miru (Smoothie) [CRN's Extra]
220 BPM, 230 BPM , 240 BPM, 250 BPM

TOMOSUKE - Macuilxochitl (Charles445) [Extra]
180 BPM, 190 BPM, 200 BPM, 210 BPM, 220 BPM

bibuko - Reizoku Mitara Pudding ga Nai (val0108) [Jumpudding!] fixed offsets 17-05-2014 +20
200 BPM, 210 BPM, 220 BPM, 230 BPM

Saiya - Remote Control (Garven) [Insane] fixed offset +20
200 BPM, 210 BPM, 220 BPM, 230 BPM, 240 BPM

beatMARIO - Judgment Days (terametis) [Insane]
210 BPM, 220 BPM, 230 BPM, 240 BPM

Beridzebeth - Seijin no Tou (Maddy) [Boss Stage]
210 BPM, 220 BPM, 230 BPM

yanaginagi - Killer Song (Short Ver.) (terametis) [Insane]
200 BPM, 215 BPM, 230 BPM, 245 BPM

gmtn vs. kozato - squartatrice (Maddy) [eXtra] fixed offset all -20
200 BPM, 210 BPM, 220 BPM, 230 BPM, 240 BPM
peppy
Please stop editing your post...
raww_old

peppy wrote:

Please stop editing your post...
lol

sorry, some of the difficulties were messed up, I'm trying to fix it >_>.
All done :P
Gnoske
Thanks :D This is something i really wanted :D
raww_old

raww wrote:

I made some too, the only issue I've found is that the tool sometimes throws offset off by -20 or +20, I think it happens when the map starts around 20-30 seconds into the song, it doesn't fix offset properly. Around 2/3 of all the maps I changed needed -20. Anyway I fixed those manually and they should all be correct. Thanks for making this tool!! Incredibly useful. Also, such necrobump
This issue still stands. If you use the tool, remember to listen to the offsets, in most cases you will need -20
WORSTPOLACKEU
Program keeps crashing for me as soon as I try to save a map.
TPGPL
When I try to play a map, osu is crashing
Please sign in to reply.

New reply