The report/source for this project is available on request, but the professor still uses this project and out of respect I have not made it open.
For the final project of my track (digital signal processing) course, we were tasked with building out a signal processing system that could classify songs into genres. We were provided a good background for doing this, but many of the adjustments had to be made at our own discretion in an attempt to achieve as accurate of a classification as possible.
The final classification algorithm involved a filterbank built to mimic the human ear, which produced these fun, colorful waveforms:
It also performed a note analysis, checking the frequencies and building out something like this as a result:
And, in the end, we put this and many more concepts together to produce a similarity matrix, which resulted in this:
This was then all cross-validated, and ended up having about 60% accuracy, so much better than randomly selecting a genre, and even better than just flipping a coin. The math behind this, as well as more description are available in the full report.
This is one of those projects that was challenging, fun, and just plain cool. I'm a bit of a music nerd myself, so getting to do this sort of analysis really ignited my passion for building similar things in the future, and this passion eventually inspired me to build QUAX3. It was also an interesting experiment on taking mathematical concepts and translating them into coherent code, which isn't as easy as it seems. Overall, I had a ton of fun doing this project and it was a great way to push the boundaries of my technical expertise.