<< Chapter < Page | Chapter >> Page > |
A classical example for source separation is the "cocktail party problem", where a number of people talk simultaneously and one is trying to follow one of the discussions.
In our case, we deal with music instead of multiple people. Music is often composed of multiple instruments playing different notes at the same time. In order to separate these instruments, there exist many methods in signal processing which perform source separation , attempting to determine the different signals that make up the music.
Some of the most famous methods of source separation include Independent Component Analysis (ICA), Markov chains, and using Fast Fourier Transforms (FFTs). For this project we decided to focus on ICA instead of other methods to separate the sources, since it could be implemented in Matlab easily.
Independent Component Analysis (ICA) takes a 0.5 second frame of the track, sliding this 0.5 second window along the entire song. It then separates this frame into 20 possible sources, determines 3 sources that are maximally independent, and returns those 3 sources. We then perform FFTs on these 3 sources and find the peaks from the resulting spectrums of the signals.
From these frequencies, we determine the peaks, take the two most dominat peaks per source, and create matrix containing the results from each frame.
If we see a note that lasts for more than 5 frames, we call it a note and visualize it. In the example above, we can see a constant note in low frequencies, this could be considered the bass line.
Our ICA algorithm is based off of JadeR algorithm, which was implemented in our Matlab code.
There are many factors we can change in our Matlab code, including:
Notification Switch
Would you like to follow the 'Music visualization using independent component analysis' conversation and receive update notifications?