To input a melody to search for, select the duration of the note using the buttons to the right, and then click the note you would like to enter on the on-screen piano keyboard.
The buttons to the right can also be used to add ties, barlines, and rests, as well as flip the accidental of the last-entered note.
As you enter notes, they will appear on the treble staff area below the keyboard. Here, you can move the red cursor by clicking at different points in the melody, allowing you to insert, delete, and modify any of the notes entered so far. In addition, you can use the undo and redo buttons to navigate the changes you've already made.
Search queries are required to contain at least four notes, but it is generally advisable to enter more than that, to improve the accuracy of the results. If you know you are only interested in exact matches, checking the "exact matches only" box will speed up the search, but only return results that contain exactly the melody inputted.
Return to SearchThe melodic search engine used here is based on the principles and techniques presented in Rainer Typke's thesis entitled Music Retrieval based on Melodic Similarity (you can read it or buy it). For information about music retrieval systems in general, Nicola Orio's article Music Retrieval: A Tutorial and Review and Typke's own Survey of Music Information Retrieval Systems are excellent starting points for those interested in some further reading.
And of course, this project would not have been possible without the work of those providing free and open-source tools for our use, so we would like to extend a special thanks to them:
Here's a basic walk-through of how the search engine works:
The first thing to happen after a user inputs a melody is called the "segmenting" process, whereby the user's query melody is broken up into smaller pieces for searching. We use a series of 4-note segments, starting every other note, so if the entered melody was an altered form of "Amazing Grace" (the tune NEW BRITAIN) like this:
It would get broken up into pieces like this (the last segment would have only three notes, so it is omitted):
For each of the three segments there, a search is done through the database to find other segments that are potential matches. Since there are over 83,000 segments, comparing the query segment to each one would be too time-consuming. Instead, each segment in the database has a pre-calculated similarity score against 10 randomly-generated "vantage" segments, like these:
Potential matches are thus found by looking for segments whose vantage similarities scores line up well with the query segment's vantage scores, such as these two from NEW BRITAIN:
After all of the segment searches have run, the results are tabulated to produce final scores, by rewarding the tunes with a high number of matching segments, matching segments that are close together in the tune, and are very similar to the query segments. Using those final scores, the tunes are ordered and displayed on the results page: