User Tools

Site Tools


deconstructing_sample-based_electronic_dance_music

====== Differences ====== This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
deconstructing_sample-based_electronic_dance_music [2015/10/25 08:20]
hendrik created
deconstructing_sample-based_electronic_dance_music [2015/10/25 11:15] (current)
jonathan
Line 1: Line 1:
-====== ​Deconstructing Sample-based Electronic Dance Music ======+====== ​Can we break it? Yes we can! ======
  
-EDM (Electronic Dance Music) is often constructed from 8 bar samplesstacked on top of each other. +| **Authors **| Patricio López-SerranoHendrik Schreiber, Jonathan Driedger, Richard Vogl, Sebastian Böck| 
-Often a song starts with 8 bars of somethingIn the seconds 8 barsthe first sample is repeated and another sample is superimposed on it.+| **eMail** | [[patricio.lopez.serrano@audiolabs-erlangen.de]],[[jonathan.driedger@audiolabs-erlangen.de]],​[[hs@tagtraum.com]],​[[richard.vogl@jku.at]],​[[sebastian.boeck@jku.at]]|
  
-The goal of our hack was to extract samples from the piece in an iterative fashion. +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 loopWhile the song builds up, more and more loops are added.
-I.e. the task is:+
  
-  - Find a sample that's as //pure// as possible. +{{ :step1.jpg?​nolink&​400 |}}
-  - Subtract the sample wherever it occurs in the song. +
-  - Repeat.+
  
-//Pure// in this context is shall mean //​standalone//​i.e. a sample that is not polluted by another sample yet.+As an examplelisten to this excerpt of Moby's song "​Porcelain"​.
  
-===== Finding pure Samples =====+{{ :​Moby_Porcelain_FullSong.mp3 |}}
  
-  - SSM (diagonal median filtered) +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.
-  - Identify paths that have a certain length and length/​distance relationship +
-  - Pick a path according to the super-secret rules +
-  - Find similar locations ​in the song+
  
-To find similar locations in the song, we weren'​t able to use a regular cosine distance function, because we are not looking for absolute similarity, but rather a "​Sample A contains Sample B" relationship.+===== Step 1: Identifying Isolated Loops =====
  
-===== Removing samples from the Song =====+In a first step, we need to identify a loop that occurs without other loops stacked on top of it.
  
-In order to remove samples ​(loops) from the song, we simply ​subtract the magnitude ​spectrogram from the original ​spectrogram and re-synthesize both signal—the ​remains ​of the song and the sample ​we subtracted.+{{ :​step2.jpg?​nolink&​400 |}} 
 + 
 +In our example, this is this loop 
 + 
 +{{ :​Moby_Porcelain_Iteration1_Loop.mp3 |}} 
 + 
 +We achieve this by first computing a //​self-similarity matrix// ​(SSMof 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. 
 + 
 + 
 +===== Step 2: Find the Reoccurrences of the Identified Loop ===== 
 + 
 +Now, we need to identify the positions in the song where the identified loop is also present. 
 + 
 +{{ :​step3.jpg?​nolink&​400 |}} 
 + 
 +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. 
 + 
 +===== Step 3: Remove the Loop from the Song ===== 
 + 
 +Now, we remove the loop from the song at the identified time positions. This is done in the time-frequency domainwhere 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). 
 + 
 +{{ :​step4.jpg?​nolink&​400 |}} 
 + 
 +The //​remainder//​ of the song — meaning ​the song without the loops — in our example sounds like this 
 + 
 +{{ :​Moby_Porcelain_Iteration1_Remainder.mp3 |}} 
 + 
 + 
 +===== Step 4: Iterate ===== 
 + 
 +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. 
 + 
 +{{ :​step5.jpg?​nolink&​400 |}} 
 + 
 +In our example, the next loop to remove is 
 + 
 +{{ :​Moby_Porcelain_Iteration2_Loop.mp3 |}} 
 + 
 + 
 + 
 + 
 +===== Results ===== 
 +Here, you find the audio examples that we got from performing 3 Iterations of our procedure 
 + 
 +|Full song |{{:​Moby_Porcelain_FullSong.mp3|}}| 
 + 
 +Iteration 1 : SynthPad 
 +|Loop|{{:​Moby_Porcelain_Iteration1_Loop.mp3|}}| 
 +|Remainder|{{:​Moby_Porcelain_Iteration1_Remainder.mp3|}}| 
 + 
 +Iteration 2 : Drums - soft 
 +|Loop|{{:​Moby_Porcelain_Iteration2_Loop.mp3|}}| 
 +|Remainder|{{:​Moby_Porcelain_Iteration2_Remainder.mp3|}}| 
 + 
 +Iteration 2 : Drums - strong 
 +|Loop|{{:​Moby_Porcelain_Iteration3_Loop.mp3|}}| 
 +|Remainder|{{:​Moby_Porcelain_Iteration3_Remainder.mp3|}}|
  
-===== Repeat ===== 
  
-We can continue this process for a number of iterations. Results get stranger and stranger... 
deconstructing_sample-based_electronic_dance_music.1445775659.txt.gz · Last modified: 2015/10/25 08:20 by hendrik