I found out about a library called Essentia from UPF that has many basic classical ways for music information retrieval.
I have started to work on the first component of the similarity vector, the melodic similarity. What I decided was to create a chroma vector, by which I mean a vector of the notes of the melody in temporal order.
I tried using Essentia's Predominant Melody Extraction, which ended up being very inaccurate and noisy. Perhaps this would be tolerable if it can still accurately depict differences in the melodies of songs, since, going back to my earlier classification, melody is a similarity component and does not need to be a "state-function." I have to test this out.
Still, it would be preferable if there was a reliable way to extract the melody of the song without noise, which would lead to a cleaner comparison.