The best way to slow down (rall) or speed up (accel) is to do it with a constant rate of change, e.g. +9 BPM after 1 seconds, +18 BPM after 2 seconds, +27 BPM after 3 seconds...
You are stepping something and thought a slowdown would make a great effect; but Stepmania only allows you to change BPM every beat. (i am aware you can now; problem still stands though)
The problem is: To get from X -> Y BPM in T seconds, while minimizing the difference between each BPM and the expected BPM from the linear rate of change. BPM can only be changed on the beat.
more formally: We want a list (b1, b2, ...., bn) where
the time of the end of the last beat is exactly T: (60/b1 + 60/b2 + ... + 60/bn = T)
We want to minimize the sum of the differences between the linear BPM change and the actual BPM.
let N be where bn occurs (N = sum(60/bk, k = 1 -> n))
= the wanted BPM - the actual BPM
= (the starting BPM - the rate of change in BPM * seconds) - the actual BPM
= (X - (Y-X)/T * N) - bn
Is there a way of doing this, or a way that gets close but is not optimal?
You are stepping something and thought a slowdown would make a great effect; but Stepmania only allows you to change BPM every beat. (i am aware you can now; problem still stands though)
The problem is: To get from X -> Y BPM in T seconds, while minimizing the difference between each BPM and the expected BPM from the linear rate of change. BPM can only be changed on the beat.
more formally: We want a list (b1, b2, ...., bn) where
the time of the end of the last beat is exactly T: (60/b1 + 60/b2 + ... + 60/bn = T)
We want to minimize the sum of the differences between the linear BPM change and the actual BPM.
let N be where bn occurs (N = sum(60/bk, k = 1 -> n))
= the wanted BPM - the actual BPM
= (the starting BPM - the rate of change in BPM * seconds) - the actual BPM
= (X - (Y-X)/T * N) - bn
Is there a way of doing this, or a way that gets close but is not optimal?










Comment