  Often, I hear a piece of music and wonder what the name of the piece is.
Indeed, there are applications such as Shazam app that provides music matching.
However, the limitations of those apps are that the same piece performed by the
same musician cannot be identified if it is not the same recording. Shazam
identifies the recording of it, not the music. This is because Shazam matches
the variation in volume, not the frequencies of the sound. This research
attempts to match music the way humans understand it: by the frequency spectrum
of music, not the volume variation. Essentially, the idea is to precompute the
frequency spectrums of all the music in the database, then take the unknown
piece and try to match its frequency spectrum against every segment of every
music in the database. I did it by matching the frequency spectrum of the
unknown piece to our database by sliding the window by 0.1 seconds and
calculating the error by taking Absolute value, normalizing the audio,
subtracting the normalized arrays, and taking the sum of absolute differences.
The segment that shows the least error is considered the candidate for the
match. The matching performance proved to be dependent on the complexity of the
music. Matching simple music, such as single note pieces, was successful.
However, more complex pieces, such as Chopins Ballade 4, were not successful,
that is, the algorithm could not produce low error values in any of the music
in the database. I suspect that it has to do with having too many notes:
mismatches in the higher harmonics added up to a significant amount of errors,
which swamps the calculations.
