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):
And here is another one, from the ecuadorian band Curetaje:
(Yes, in this one the end is all blast beats)
Currently the detector is not deployed as a service because demucs requires a GPU for drum-track separation in reasonable time, and those servers aren't free...
But you can:
-
Try this notebook to process some songs using Google's free-tier GPUs:
-
Or just directly download examples of processed songs from here
And then upload the results to the visualizer:
The Blast Beat Detector was presented in the 6th meetup of the Python Leiden user group 🇳🇱! --> Slides here