What is a blast beat? This is what wikipedia has to say:
A blast beat is a type of drum beat that originated in hardcore punk and grindcore, and is often associated with certain styles of extreme metal, namely black metal, death metal and their respective subgenres. The blast-beat generally comprises a repeated, sixteenth-note figure played at a very fast tempo, and divided uniformly among the bass drum, snare, and ride, crash, or hi-hat cymbal."
As metal maniacs and programmers, we naturally asked ourselves: Can we identify blast beats programmatically?
We took one of the cleanest blast-beat examples available, in terms of production & execution (Dying Fetus - Subjected to a Beating), and after isolating the drums and analyzing the spectrogram, we observed a very clear pattern, with the bass drum hits hovering around 60Hz and the snare around around 300Hz.
Here we highlighted the first blast beat of this song, between 29s - 31s:
Here is what we are currently detecting with the MVP (blast beats in red):
- Identify frequencies of snare & bass drum (hihat left for next iteration); hardcoded for now
- snare: 300hz
- bass drum: 50hz
- Process the waveform (0.5s segments) and determine: 1) does it contain snare, 2) does it contain bass drum
- If at least 4 consecutive segments contain snare + bass drum, count it as a blast beat
- Plot the waveform with the blast beat segments highlighted
- Dynamically identify/estimate snare & bass frequencies & test with a few different songs & drum tuning ranges
- Test with other type of blast beats and see what is needed to support them