Last year I was working on a Music Information Retrieval (MIR) problem, trying to identify a song’s key from audio recordings. With many machine learning problems, one of the most difficult tasks is finding good data sets to train and test with. While there are some good annotated music datasets out there, sometimes you need to generate your own test data. This post includes a simple Python script we used to generate test data based on MIDI files.
In the previous post, we looked at the Fourier transform function. In this post, we’ll explore some implementations of this function in Scala and capture some performance metrics.
The Fourier Transform is one of the most important algorithms in signal processing. While there is a wealth of information out there on the topic, most of it seems focused solely on the math or optimized implementations of the algorithm. I have used this algorithm countless times in my research and thought I would share a programmers (and non-math major) perspective on the topic.