So you want to create a Beat Saber custom map… The first and most important steps are properly preparing your audio file and song info. This will save you tons of time in mapping and it will make it much easier to keep your notes on-beat. This guide will cover all of that and get you up to the pattern mapping phase. If you want more in-depth tutorials or you still need an editor, check out the Mapping Wiki here: https://wiki.assistant.moe/mapping
Step 1 – Preparing Your Audio File
No matter where you get your audio file from, you should typically run it through an audio editor like Audacity (free) to make sure the intro, outro and volume are adequate and then you’ll want to export it as an .OGG file. I’ll go over the basics but I’m not going into in-depth audio editing.
Intro: You want about 2-3 seconds before the first note so that the player can prepare themself. If the song naturally has an intro that won’t have any notes mapped to it then you might not have to do anything but if it doesn’t then you’ll have to add silence to the beginning of the file.
NOTE: Using a negative offset in EditSaber/MediocreMapper does NOT add silence.
Outro: Some songs end with long fade outs, a long section of silence or repetitive sections of music that you might want to shorten.
Volume: Songs can come from various sources and often you’ll need to increase the volume to a standard level so that the music isn’t overpowered by saber sounds.
Exporting: Once your editing is done, export the file as an OGG file and make sure you don’t export at a ridiculously high quality setting. The OGG shouldn’t be much bigger or smaller than a high quality MP3 so a 4 minute song should be about 6MB. Keep in mind that Beat Saver has a 15MB upload limit so especially long songs might need to be exported at below average audio quality.
NOTE: Make sure your file DOES ends in .ogg if you DO have file extensions showing but that it DOES NOT end in .ogg if you DO NOT have file extensions showing.
Step 2 – Determining the BPM
Determining the BPM is key to saving yourself tons of time manually timing notes. Most modern songs stick pretty well to a metronome so the BPM is pretty easy to figure out. Older songs, Jazz, live recordings, etc may not be perfectly on-metronome or they may be variable BPM. Sorting out off-metronome recordings and variable BPM is beyond the scope of this guide so if you think your song fits this description, either seek help from the #mapping-discussion channel on the Modding Discord or put that song aside and come back to it when you’re more confident that you can figure it out. Also keep in mind that squeaksies MediocreMapper supports variable BPM and BennydaBeast has a tutorial specifically for variable BPM. Now, there are three main ways to determine the BPM…
BPM Analysis Software: A program like MixMeister (free version on CNET) is invaluable to have since it can give you the BPM of a song down to 2 decimal places. A lot of songs aren’t going to be a perfect whole number which is the benefit of this method but the disadvantage is that the software just averages everything together so a song with a variable BPM might not be apparent. Don’t just take whatever number it gives you and expect it to work. We’ll go into detail on double-checking the BPM in Step 4.
Google It: There are various resources online that have tons of song BPMs archived. https://songbpm.com/ is one such resource. Osu! is another game that has tons of beatmaps made for it. The site’s search is only available if you have an account but you can just Google “[song name] osu” and get pages that list the bpm. Alternatively, you can just Google “[song name] bpm” for a wider search. The disadvantage of this method is that songs often have various versions and remixes so you can sometimes find multiple BPMs for one song.
Tap it Out: Using a site like https://www.all8.com/tools/bpm.htm you can tap out the BPM manually. The main advantage of this method is that you will absolutely get the BPM of the version of the song you’re listening to and not some remix and it’s also useful if you can’t find the BPM anywhere else. If you try to Google the BPM and get multiple answers, you can try to tap it out to figure out which one applies to your version even if you don’t tap it perfectly. It’s also useful if your song has an intro in a different BPM. If you skip the intro you can tap out the BPM of the main part of the song. The disadvantage of this method is that it’s humanly impossible to tap out to 2 decimal places so it won’t be perfect. If tapping it out is your ONLY option for BPM, usually you can round off to the closest whole number, test it in the editor and tweak it as needed. We’ll go into detail on double-checking the BPM in Step 4.
BPMSaber: BeastSaber itself has both a BPM analyzer and tapping tool available here: https://bsaber.com/bpmsaber/
Step 3 – Determining the Offset
The offset is basically just the starting position of the grid. Positive values push the grid forward in time and negative values pull the grid back. NOTE: Using a negative offset in EditSaber/MediocreMapper does NOT add silence. See Step 1 if your audio file begins too soon. If your BPM is correct, offset is used to line up the main beats with the thick, numbered lines on the grid. If you recall, I said we’ll be double-checking the BPM in Step 4 but before we can do that we have to set the offset. It’s a back-and-forth process but once you get used to it, this whole setup process only takes a few minutes.
Here I’m going to go over the method of manually setting the offset in EditSaber. Note that you can also do this as part of your audio file editing routine if you so choose and that’s what Kolezan’s Song/Audio Editing tutorial covers. There are no pros or cons to either method. Once you get used to it, both methods can be done in seconds and will be perfectly on-beat so use whichever method suits you.
First, put a few notes down on the thick, numbered lines NEAR the main beats. We’re going to move them until they’re on-beat so don’t worry if they’re super off-beat right now:
Second, estimate the difference between the main beats in the waveform and the notes on the numbered lines. Then go back to the song info page, plug that into the offset field and go back to the map. For this example, let’s go with 180ms:
The notes should be a lot closer but still not perfect. From here you just keep tweaking the offset to dial it in until the notes are perfectly on the main beats. For this example, the actual offset is 200ms:
Precise Testing of Timings
When you’re doing rough timings you can just do it by ear with the waveform on but that’s not good enough for precise timings. The two times you’ll need to do precise timings are right now, while you’re dialing in the offset and in Step 5 when you’re timing your notes. At these times, you need to open the options menu, turn the waveform off, turn “tick” sounds on and turn down the playback speed to about 0.5. The waveform is not optimized very well and it can cause tick sounds to be late or not play at all so it NEEDS to be off. Then you just play the music back over and over, as many times as you need to until you’re satisfied that the ticks are perfectly overlapping the beats of the song.
Once you’ve dialed in the offset perfectly and done precise timing to check it, it should look something like this:
Step 4 – Double-Checking the BPM
Once you’ve set the BPM and the offset, the main beats at the start of the song should all line up with the numbered grid lines but that doesn’t mean the BPM is correct. In order to make sure it’s correct, you need to check it in at least one other point in the song. Personally, I always check it in the middle and end of the song, just to be safe.
NOTE: You NEED to do this before you start mapping. If you start mapping and find out later that the BPM is wrong, it’s going to be a headache to fix.
This is what we ultimately want:
If the notes aren’t on-beat at the middle and end of the song, it can mean that the BPM is wrong or it can mean that the song is variable BPM. One easy way to check is to quickly scroll through the song at 1/1 precision and watch the main beats in the waveform. If they slowly crawl away from the grid lines then the BPM is slightly off. If the main beats are timed correctly for a bit and then they suddenly jump or you suddenly can’t track them then it’s probably variable BPM. If they’re perfectly on-beat for awhile and then shift but are still on-beat then it means the song skipped some beats during a sequence change.
Here are some examples to show how to determine what the issue is. If your BPM is just slightly off, then you may have to tweak it manually if you’ve already tried running it through a BPM analyzer. If you get seriously stuck at this part, that’s beyond the scope of this guide and I suggest you seek help from the #mapping-discussion channel on the Modding Discord.
BPM is slightly too low:
BPM is slightly too high:
If your BPM is way off, you’ll probably have to start over and see if you can find a different BPM to work with. If it’s off by a little bit, you may have to manually tweak it. Once you change the BPM you have to recheck the offset and then you have to double-check the BPM again.
NOTE: If you change the BPM at this point, you need to change it in the map’s option menu. The BPM field on the song info screen only affects new maps.
Once you have your BPM and offset locked in, it’s time to time…
Step 5 – Timing Your Notes
Once you have the BPM and offset nailed down, it’s time to start mapping! But before you start thinking about patterns, it’s a great idea to do timings first. This is when you go through the music and just put down placeholder notes for the sake of triggering tick sounds so you can get everything timed properly. Then once you get the timings figured out, you can plan patterns based on them.
It’s hard to go into detail on this method in text so below I’ll just post a final video with me doing some timings for you to get the idea. Basically it’s just a process of listening to the music a little bit at a time, placing notes and then re-listening to it to make sure it’s correct. You just have to keep a few things in mind:
First, choose a specific layer of the music to map. You generally want to pick something near the top of the mix that the player can identify even if they aren’t familiar with the song whether it be the melody (varies by song but this is typically your lead guitar and keyboard), bass (typically your bass guitar and drums) or the vocals (the singer). You can switch layers during the song but generally you want to do one layer per section and only switch when there’s a logical reason to switch. Which layer(s) you choose to map is entirely up to you. This is part of the mapper’s expression.
Next, be extremely precise about your timings. Once you have the BPM and offset configured, the notes should fall on the grid pretty nicely but you should still do precise timing checks each time you complete a section just to be sure. (see: Precise Testing of Timings in Step 3 above)
Finally, you don’t have to time the entire song before you do patterns. If you want, you can just do one section at a time going back and forth between timings, patterns, timings, patterns, etc.
Timing Notes Example:
Hope you found this helpful… Good luck and happy mapping!
Great guide! Thank you for writing it!
Yeah @silentcaay , fantastic tutorial!
Offset setting seems to be ignored by BS now.
Is there any way to edit maps on mac?
AFAIK, the community map editors do not work on Mac. Your only chance is if the official editor but I don’t even know if the game itself runs on Mac.