Inspiration
I have always been very impressed with the intersection of ML and arts. Also, I love listening to music, yet I am so bad at identifying the composers of the pieces. With this inspiration, I wanted to make a model which would beat me in composer identification.
What it does
It identifies the composer of a newly heard piece. It actually does not hear the piece, but sees the features extracted from the MIDI file and classifies it among 5 composers.
How I built it
I experimented with various models. Random Forest was the model with the highest validation set accuracy, so I used it as my final model. The model is trained on hundreds of piano pieces of 5 composers: Liszt, Bach, Beethoven, Chopin, and Schubert.
Challenges I ran into
Pre-processing the pieces was challenging because I had to extract the relevant features from the music in a way the model could interpret. Hopefully, there was a software called JSymbolic to extract features from the pieces, which I learned about in a research paper.
Accomplishments that I am proud of
I have played several rounds on the web app against my model, and I am very satisfied that I have never won so far (very ironic). The model always beats me, and I am super happy about this.
What I learned
This was my first ever ML project, and I have learned so much, especially about data pre-processing, different models, and hyperparameter tuning. Also, it was my first time using Flask, and I am very proud that I managed to make a web app!
What's next for Guess the Composer
First of all, I want to improve my web app with a more beautiful front-end design. I will also deploy it. In my project, I only used the piano works of 5 composers. I aim to explore more composers and pieces for different instruments.

Log in or sign up for Devpost to join the conversation.