Currently there's two ways to get your scroll speed (the thing you change with F3/F4) for a song right. One is to look at the BPM of the song before starting it, and adjust according to that. This takes a relatively high level of familiarity with the game, though, and isn't really practical for new or casual players. The other option is to restart the song, adjusting your scroll speed until it feels about right. But this quickly gets frustrating after having to do it for every song, not to mention it isn't even possible when playing multiplayer.
So what we need is some sort of consistency with the setting, so that we won't have to change it as often. Most songs have a primary BPM that they stay at for a majority of the time, and for some smaller time they go faster or slower, with BPM or SV changes. It would be perfect if the same setting made all songs scroll at the same speed during the time the songs are going at their primary BPM.
So the scroll speed setting should be scaled according to the primary BPM of each song. This will preserve everything that SV changes add to the game while giving the setting a good level of consistency between songs.
Implementing this should be fairly simple, and mostly builds upon the system currently in place. There are two main parts to it. The first part is calculating the primary BPM of each song. Include all SV changes in this calculation as changing the effective BPM of the song. Then find the effective BPM the song is at for the longest. This is a good starting point and can harmlessly be swapped out for more clever heuristics later on.
Once you've scaled the scroll setting by primary BPM, the other part is then figuring out what settings make sense with the new system. You should stick with having settings from 1 to 30 (although you may find that even 20 settings are enough now), and then it's just a matter of figuring out how slow you want setting 1 to be and how fast you want setting 30 to be.
So what we need is some sort of consistency with the setting, so that we won't have to change it as often. Most songs have a primary BPM that they stay at for a majority of the time, and for some smaller time they go faster or slower, with BPM or SV changes. It would be perfect if the same setting made all songs scroll at the same speed during the time the songs are going at their primary BPM.
So the scroll speed setting should be scaled according to the primary BPM of each song. This will preserve everything that SV changes add to the game while giving the setting a good level of consistency between songs.
Implementing this should be fairly simple, and mostly builds upon the system currently in place. There are two main parts to it. The first part is calculating the primary BPM of each song. Include all SV changes in this calculation as changing the effective BPM of the song. Then find the effective BPM the song is at for the longest. This is a good starting point and can harmlessly be swapped out for more clever heuristics later on.
Once you've scaled the scroll setting by primary BPM, the other part is then figuring out what settings make sense with the new system. You should stick with having settings from 1 to 30 (although you may find that even 20 settings are enough now), and then it's just a matter of figuring out how slow you want setting 1 to be and how fast you want setting 30 to be.