|Authors||Patricio López-Serrano, Hendrik Schreiber, Jonathan Driedger, Richard Vogl, Sebastian Böck|
EDM (Electronic Dance Music) is often constructed from samples or loops, stacked on top of each other. A common workflow of EDM producers is to start a song with a single loop. While the song builds up, more and more loops are added.
As an example, listen to this excerpt of Moby's song “Porcelain”.
The goal of our hack was the following: Given an EDM song that was built in the way described above, we want to break it into all the separate loops that were used to create it. To this end, we came up with an iterative strategy.
In a first step, we need to identify a loop that occurs without other loops stacked on top of it.
In our example, this is this loop
We achieve this by first computing a self-similarity matrix (SSM) of a feature representation of the song and identifying a segment in the recording that is frequently repeated. To account for the fact that the repetitions of the sample are most probably superimposed with other loops, we experimented with different feature representations and distance measures.
Now, we need to identify the positions in the song where the identified loop is also present.
We do this by computing a matching curve and applying a peak picking scheme. Again, suitable feature representations and distance measures played an important role.
Now, we remove the loop from the song at the identified time positions. This is done in the time-frequency domain, where we subtract the spectrogram of the loop point-wise from the spectrogram of the full song (we subtract the magnitudes, capping at 0, and use the phase information of the original song).
The remainder of the song — meaning the song without the loops — in our example sounds like this
In the remainder of the song, we now hopefully have another loop that is occurring isolated. To remove this loop, we start from the beginning again.
In our example, the next loop to remove is
Here, you find the audio examples that we got from performing 3 Iterations of our procedure
Iteration 1 : SynthPad
Iteration 2 : Drums - soft
Iteration 2 : Drums - strong