Welcome to the "Hum-a-song" web page !!!



In this page you can find "Hum-a-song" [2], a system built for music retrieval, and particularly for the Query-By-Humming (QBH) application. According to QBH, the user is able to hum a part of a song that she recalls and would like to learn what this song is, or find other songs similar to it in a large music repository. We present a simple yet efficient approach that maps the problem to time series subsequence matching. The query and the database songs are represented as 2-dimensional time series conveying information about the pitch and the duration of the notes. Then, since the query is a short sequence and we want to find its best match that may start and end anywhere in the database, subsequence matching methods are suitable for this task. The "Hum-a-song" system employs and exposes to the user a variety of state-of-the-art dynamic programming (DP) methods, including a newly proposed efficient method named SMBGT [1]. SMBGT is robust to noise and considers all intrinsic problems in QBH; it allows variable tolerance levels when matching elements (where tolerances are defined as functions of the compared sequences), gaps in both the query and target sequences, and bounds the matching length and (optionally) the minimum number of matched elements. "Hum-a-song" is open source, which is to the best of our knowledge the first non-commercial effort trying to solve QBH with a variety of methods, and that also approaches the problem from the time series perspective.

Below, you can see how part of the "Happy Birthday" music score (Figure 1a) is transformed to a 2-dimensional time series representation (Figure 1b).

Figure 1a : Initial part of the "Happy Birthday" music score.

Figure 1b : Representation using pitch intervals and IOIR.

Next, Figure 2 depicts how the SMBGT method is used for subsequence matching in the QBH application (for convenience the time series representations of the songs are shown as being 1-dimensional).

Figure 2 : SMBGT: error-tolerant matching is denoted as epsilon-match.

Following, there are several screenshots of the "Hum-a-song" system. In Figure 3 the welcome screen of the system is shown. In Figures 4a and 4b the screenshots for setting up the experiment and getting the results for SMBGT are shown, respectively, where the query song is "Yesterday" and the target song is found to be the Top-1 in the returned results. In Figures 5a and 5b the screenshots for setting up and getting the results for a testbed using the Edit distance method are shown.


Figure 3 : Welcome screen of the "Hum-a-song" system.

Figure 4 : (a) Setting up the experiment for the query song "Yesterday" using the SMBGT method, and (b) Results for the experiment set in (a).

Figure 5 : (a) Setting up a testbed experiment using the Edit distance method, and (b) Experimental results for the testbed and method given in (a).


"Hum-a-song" is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License. Please see file "COPYING.txt" for details, which can be found at the zip file (Download section).


In order to download the zip file for the "Hum-a-song" system, please contact me at the e-mail given in the Contact section. The zip file includes all the appropriate files for the system to be installed and run properly.


Primary Contact/Author : Alexios Kotsifakos

E-mail : alexios.kotsifakos"at"gmail.com


1. Alexios Kotsifakos, Panagiotis Papapetrou, Jaakko Hollmen, and Dimitrios Gunopulos, "A Subsequence Matching with Gaps-Range-Tolerances Framework: A Query-By-Humming Application". In Proceedings of the Very Large DataBases Endowement (PVLDB), August 2011 [.pdf].

2. Alexios Kotsifakos, Panagiotis Papapetrou, Jaakko Hollmen, Dimitrios Gunopulos, Vassilis Athitsos, and George Kollios"Hum-a-song: A Subsequence Matching with Gaps-Range-Tolerances Query-By-Humming System". In Proceedings of the Very Large DataBases Endowement (PVLDB), August 2012.