Skip to content

MutilatedPeripherals/blastbeat-detector

Repository files navigation

Blast beat detector

Tests

Premise

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?

Experiments

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:

audacity_analysis

Preliminary results

Here is what we are currently detecting with the MVP (blast beats in red):

Dying_Fetus___Subjected_To_A_Beating

And here is another one, from the ecuadorian band Curetaje:

CURETAJE___Arutam

(Yes, in this one the end is all blast beats)

Demo

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: Open In Colab

  • Or just directly download examples of processed songs from here

And then upload the results to the visualizer:

image

News

The Blast Beat Detector was presented in the 6th meetup of the Python Leiden user group 🇳🇱! --> Slides here

image-3

About

Identifying blast-beats in songs using spectral analysis

Topics

Resources

License

Stars

Watchers

Forks