BPM: BULLETS PER MINUTE

BPM: BULLETS PER MINUTE

Not enough ratings
Advanced Custom Music Guide (Pefect Loops, Loudness matching, BPMs with decimals)
By Dampfsalzig
Hi, I want to help you make the custom songs for Bullets per Minute be fitted with perfect loops, loudness matching (so that you don't have to go to the audio settings every time a song is too loud or too quiet), and also let you use songs with unregular bpms.
I will assume that you are already familiar with the official guide and the knowledge that I present here builds on that.
My strategy takes a lot of effort but if you want your songs to be perfect, then this is the place for you. After you have done this a few times, it should not take you more than 5 minutes per song to be fitted perfectly for BPM.
In the following processes, I will use 3 software (which are all free): Foobar2000, Serato DJ, and FL Studio.
You can also use any similar tool to any of the ones I mentioned.
If you have any improvements let me know.
3
   
Award
Favorite
Favorited
Unfavorite
Why these softwares?
1) I'm most familiar with them. There definitely are various alternatives out there and the knowledge i present here applies to them as well. Check the last chapter of this guide for other alternatives.
2) Foobar2000 is a powerful music player compatible with almost all audio codecs and also allows to easily batch analyze the replaygain for many files.
3) Serato will detect the BPM for you with 97% accuracy. Also has batch mode.
4) FL Studio allows us to easily cut the song together to a perfect loop because we edit the track on a bpm grid, meaning we never destroy the rhythm of the song.
5) These softwares are free or have a neverending free trial with limitations.

Official downloads:
Foorbar2000[www.foobar2000.org]
Serato DJ Lite[serato.com]
FL Studio unlimited trial[www.image-line.com]
BPM Math
BPM: Bullets per Minute allows custom music from 60 bpm up to 120 bpm.

So what happens if you add a 124 bpm file? It will still work, but you will notice that ingame it is much slower than 124 bpm, it is actually 62 bpm instead.

If your bpm is outside the range of 60-120, the game will repeatedly divide your bpm by 2 until it is within the range again.

This means a file with a bpm of 360 will be read as a file with 90 bpm because 360/2 = 180, 180/2 = 90.

This is something we can put to use with odd bpm and bpm with decimals. Since we can't put decimals in the filename, we can simply repeatedly multiply our bpm by 2 until we a get number without decimals.

Example: Original BPM 82.25, can't write that on filename -> 82.25*2 = 164.5, 164.5*2 = 329 (no decimals, so that is the bpm we write on the file).

To generalize which bpms we can use, i have to two functions: f(x) = 1/(2^x) and g(x) = 1 - 1/(2^x)

x
0
1
2
3
n
1
2
4
8
f(x)
0.0
0.5
0.25
0.125
g(x)
1.0
0.5
0.75
0.875
(n = 2^x)

So if we have a bpm wich for example has the decimal XXX.75, we know that if we multiply it by 4 (look at n row), we get a natural number that we can write on the filename.

But what if we have a bpm value with decimals that isn't in that table? In that very likely case we look for the closest table value and then later stretch the audio appropiately.

E. g.:
  • 88.21 bpm -> 88.25 bpm, 88.25*4 = 353 bpm.
  • 125.98 bpm -> 126.0 bpm (no need for multiplication)
  • 47.9 bpm -> 47.875 bpm, 47.875*8 = 383 bpm.

Note that this might be overkill, you could also just round to the closest natural number and stretch the audio but if you want to ensure the audio stays the same the most it can, then you should do this approach.
Step 1: Caculating ReplayGain for future normalization (Foobar2000)
If you don't feel like your tracks vary too much in loudness or simply don't care, you can skip this step and also step 3.

1) Open Foobar2000 and drag your files into the playlist (note that foobar might look slightly different for you but that's no problem).
2) Mark all files.
3) Right-click on one file, select: ReplayGain > Scan per-file track gain

4) Done for now, will come back to this in Step 3.
If you want to see the gains later, you can either select one track and look to the left at properties under ReplayGain section, or if you don't see that, right-click on one track and select Properties and look at the ReplayGain section.


The value we are interested in is the Track gain value.
Step 2: BPM Detection (Serato DJ)
If you can find all of the bpms of your songs online, then you can completely skip this step.
Check the last chapter of this guide to find various online BPM sources.


1) Open Serato DJ Lite and make sure the analysis settings are set like this:
2)

  • Single File Option: Now drag your song file onto the Analyze Files button and the track will be automatically analyzed.
  • Batch Option: Drag your folder with the files you want to analyze into the left (crate) section.
    Then drag that crate onto the Analyze Files button.
3) You can now see the bpms for each track, but make sure to double-click on the bpm value in the columns to see the real value, because the column values are rounded.

Rounded values:
Real values:

Serato is pretty good at analyzing bpms, however it does make mistakes every now and then. I specifically chose the Subways track as an example because its real bpm is actually 97.34 .
If you get bpms that are only 0.05 or less away from a natural number (for example, 102.98 bpm) then you can almost be 100% sure that the real bpm actually is the natural number, but yes sometimes there are also exceptions. Also, if the bpm is XXX.5 then I would use the double amount, meaning the BFG division song is 155 bpm instead of 77.5 .
If you really think you have a song with bpm that is not a natural number then I can advise you to watch this video, in order to get the real bpm, but only if you think it's worth the effort, I'm not going to cover that hurdle in this guide.
Step 3: Loudness Matching (FL Studio)
Through trial and error, I found out that if you deduct another 5dB from the track gain we analyzed earlier in step 1, then it's about the same loudness as the game soundtrack.

So if your analyzed track gain is -13.7dB for instance, then you need to reduce the track overall by about 18.7dB.
If the track was +20.13dB then you need to increase the track's loudness by 15.13dB.
If it was +2.0dB track gain, then you must reduce the track by 3.0dB.

You can also easily do this in Audacity, just find the Amplify option under effects and type in the right value.
However, I will do this in FL Studio and it's the first action I'm gonna show in the next step.
Step 4: Creating Perfect Loops (FL Studio)
For this, I made a youtube video that will hopefully help you understand the process.
I will go over 3 different editing strategies:
  1. First, where we leave the track (almost) completely unedited except for loudness matching.
  2. Second, where we add a metronome to desired parts.
  3. And third, where we cut out certain parts of the song and rearrange them in an adequate way.
I will add timestamps to the video, but I will only talk about keyboard shortcuts once so you might have to watch the whole thing (sorry).

Here's the Metronome Loop for you to download.[drive.google.com]


If you have any more questions or ways to improve upon this process, please let me know.