forum

Reduce timing error by this way in beatmap editor

posted
Total Posts
2
This is a feature request. Feature requests can be voted up by supporters.
Current Priority: +0
Topic Starter
CircusGalop
current
timing unit calculation : rounding to 15 significant figures
snap timing calculation : decimal floor

suggestion 1 (just avoid 1ms error)
timing unit calculation : ceiling to 15 significant figures
snap timing calculation : decimal floor

suggestion 2 (maximum error will be reduced by half)
timing unit calculation : rounding to 15 significant figures
snap timing calculation : decimal rounding


example)
BPM180, Third beat

current
timing unit calculation = 60000/180 = 333.333333333333
Third beat snap timing = floor(333.333333333333 * 3) = 999

suggestion 1
timing unit calculation = 60000/180 = 333.333333333334
Third beat snap timing = floor(333.333333333334 * 3) = 1000

suggestion 2
timing unit calculation = 60000/180 = 333.333333333333
Third beat snap timing = round(333.333333333333 * 3) = 1000

True timing : 1000


this maximum error is 1 ms. but it can be accumulated whenever change BPM.

examle)
BPM 180 -> 105 -> 180 -> 105 -> 180
Finally, this case can cause maximum 5ms error if you use current beatmap editor.
MillhioreF
This is why you're supposed to place multiple timing points in order from last to first, to prevent rounding errors from piling up. On single bpm maps, an error of 1ms doesn't really matter, since osu!'s timing is only accurate to the nearest 1ms anyway.

It would be better if that wasn't necessary for sure, but given how each new red point resets the metronome and sub-ms values, I don't know how feasible it would be to implement.
Please sign in to reply.

New reply