Skip to content

Two scripts to generate precise stepmania BPMs on less consistent songs by manually hitting a key every beat as the song plays.

Notifications You must be signed in to change notification settings

kenakofer/stepmania-bpm-generation

Repository files navigation

stepmania-bpm-generation

A tool to get generate precise stepmania BPMs on less consistent songs by just hitting a key every beat as the song plays. The second script smoothes out the result and creates a #BPMS entry with the correct syntax. Because of the smoothing function, it works well on songs that are basically one tempo, but with small variations.

⬅️ ⬇️ ⬆️ ➡️

The first song I used to test (and my first stepmania track ever): Billy Joel's "Piano Man" on youtube. It slides in tempo almost imperceptibly between 172 BPM and 184 BPM. Faster than manually using a metronome to find BPMs, this script was able to output all the BPMs with only a single listen of the audio.

At time of writing, I've only made a single song, so there is likely a better strategy for tackling this problem. This has been a good exercise nonetheless.

Prerequisites: Python3 with python-vlc

Example use:

  • Get audio/video (using youtube-dl for example)
  • Run record_beat_times.py, passing in the audio/video file, and the name of the output file.
./record_beat_times.py  Billy\ Joel\ -\ Piano\ Man\ \(Video\)-gxEPV4kolz0.ogg output.times`
  • As the file plays, hit Enter on every beat. Type q then Enter when you're done
  • The program will write to the output file a list of time diffs between every beat. The next script will smooth out the imprecision in your repeated keyboard hammering.
  • Review the output times file. If you really messed up any beats, you'll see a warning. Add or remove rows if you'd like to fix it. Only the first number in each row matters for the next script.
  • Run the BPM generation program. It will smooth out the beat times using a windowed average.
./process_beat_times_to_ssc_bpm_pairs.py output.times output.bpms
  • Review the output bpms file, which gives beats of the song and the BPM setting at that beat.
  • Copy/paste the output bpms into your .ssc and .sm files.
  • In stepmania, make sure to reload from the hard drive to see the changes.

About

Two scripts to generate precise stepmania BPMs on less consistent songs by manually hitting a key every beat as the song plays.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages