Present and Future
This project accomplished a lot, but leaves room for additional progress. In the end, we were able to decouple a sustained chord into its composite notes. However, the resulting notes include extra noise, are particularly quiet, and lose most of their characteristics besides frequency. For example, if the chord is piano or clarinet the decomposed notes will sound fairly similar, but a guitar chord's decomposed notes sound almost like a synthesizer. Good enough for a musician wanting to understand the notes being played, but not good enough for a musician looking to play along with a a full band of instrument's minus his.
Future work can be broken into 2 categories: generalizing the current algorithm and improving the algorithm. There are several steps of our process that require human calculation and input, and these need to be automated so that the algorithm can run over the entire song instead of just a single chord of notes. These steps are documented with our code. Once that is done, a slight modification to the code will make it run on each time step (small enough so only 1 chord/note is being played per instrument) as opposed to once on the whole song). Finally, a GUI to make the whole system user friendly will complete this stage of the project.
The previous method seems to have unavoidable problems. Loss of information due to a number of factors, particularly absolute values of complex numbers, creates a less than ideal product. However, we have gained considerable insights into different ways to approach this problem. Our current analysis is based on spectrogram.m (Shot-Time Fourier Transform) analysis and non-negative matrix factorization. Matlab has a larger variety of frequency analysis tools than we originally thought (type "help spectrum" into the matlab console to see some of them, the pseudo spectrum tools seem the most promising). Additionally, looking into the book An Introduction to Audio Content Analysis: Applications in Signal Processing and Music Informatics, we found many more methods of spectral analysis including tonal analysis and observation of signal properties such as zero crossing rate, spectral crest factor, and spectral flatness. A combination of simple methods of characterizing a signal Finally, an area we didn't get to look into very much at all is the Bayesian approach to this problem, which is based on statistically comparing models of different notes on different instruments with the song in question. While we did go to a recording studio and begin to create such a library, we ran out of time before we could try any of the relevant analysis techniques (See the paper "A Blind Source Separation Technique Using Second-Order Statistics").
Future work can be broken into 2 categories: generalizing the current algorithm and improving the algorithm. There are several steps of our process that require human calculation and input, and these need to be automated so that the algorithm can run over the entire song instead of just a single chord of notes. These steps are documented with our code. Once that is done, a slight modification to the code will make it run on each time step (small enough so only 1 chord/note is being played per instrument) as opposed to once on the whole song). Finally, a GUI to make the whole system user friendly will complete this stage of the project.
The previous method seems to have unavoidable problems. Loss of information due to a number of factors, particularly absolute values of complex numbers, creates a less than ideal product. However, we have gained considerable insights into different ways to approach this problem. Our current analysis is based on spectrogram.m (Shot-Time Fourier Transform) analysis and non-negative matrix factorization. Matlab has a larger variety of frequency analysis tools than we originally thought (type "help spectrum" into the matlab console to see some of them, the pseudo spectrum tools seem the most promising). Additionally, looking into the book An Introduction to Audio Content Analysis: Applications in Signal Processing and Music Informatics, we found many more methods of spectral analysis including tonal analysis and observation of signal properties such as zero crossing rate, spectral crest factor, and spectral flatness. A combination of simple methods of characterizing a signal Finally, an area we didn't get to look into very much at all is the Bayesian approach to this problem, which is based on statistically comparing models of different notes on different instruments with the song in question. While we did go to a recording studio and begin to create such a library, we ran out of time before we could try any of the relevant analysis techniques (See the paper "A Blind Source Separation Technique Using Second-Order Statistics").