forum

[Guide] Perfect beatmap timing using Audacity

posted
Total Posts
4
Topic Starter
ekgame
I've decided to finally try beatmapping and the biggest problem I have faced so far is finding the correct timing. The traditional method of tapping to the rhythm is prone to errors and I don't trust myself to do accurately enough. Fortunately, I've found a method to effortlessly find perfect timing for most songs. I searched around and didn't find anything similar, so I've decided to write a quick guide.

This turned out to be rather long, but don't worry, it's easier that it may seem at first.

You will need:
  1. Audacity - http://www.audacityteam.org/
  2. The default hitsound - http://up.ppy.sh/files/soft-hitclap.wav
  3. A high quality audio file of a song to analyze. YouTube converts will usually be insufficient.

Finding the BPM

Step 1
Load the song into Audacity. (File > Open...)

Step 2
Switch the audio visualization from a waveform to a spectrogram.


Step 3
Zoom into about 5-10 seconds of the spectrogram and try to find a periodic pattern for beats. Try playing the song to confirm that what you think represents a beat does actually represent a beat. Sometimes the patterns may not be obvious, you may have to search in the middle of the song, but most songs should have them.

Here's a couple of examples:





Step 4
Select 8-12 (or even more) full beats and measure their length. Zoom into the each end of the selection to make sure it's accurate as possible.

When I say full beat, I mean the beat itself and everything to the next beat. In this example I've selected 8 full beats:


To measure the length of you selection select "Lenght" in the bottom of the screen.


Step 5
Do the math.

Find the length of a single beat (in miliseconds): divide the length you've just measured (in miliseconds) by the number of beats you've selected.
Find the BPM: divide 1 minute (or 60000 miliseconds) by the length of a single beat.

Simplified the formula for BPM would be:
BPM = (60000*number_of_beats_selected)/selection_length



Finding the offset

This may be a bit more complicated for some songs than others. If there is a clear first beat in the spectogram, then that's great. If not - good luck, I've got nothing.

Step 1
Import the default hitsound into the project. Again, turn the waveform into a spectogram.
Now take a close look at it. There is something rather peculiar about it.



As you can see there is an exponentially declining slope and a cluster just above it.
The declining slope is a bass-line, the cluster is the snare that you clearly hear.

Step 2
Align the cluster to the first beat in the song.


Step 3
Select the beginning of the hitsound. That is your offset. For the number, refer to "Selection Start" box below.


This will not be perfect just yet. Input both numbers into osu! and test the timing. If you feel like the hitsounds are too early or too late, try adjusting the offset. The perfect offset should be around +-30ms of the number you've got.


That's it

I hope you find this as useful as I did. Good luck beatmapping!
Endaris
Wow, so complicated.
+ this most likely only works for pop-songs with a consistent 2+4 backbeat
I don't see how you would time a song that uses off-beats with this method.
Thanks for sharing your work though.
Bara-
I think editor is faster O.o
Babble
I thought about trying this out a few days ago. Interestingly enough, I stumbled upon this. Nice find, I may try it out.
Please sign in to reply.

New reply