A Library and Tool for Symbolic Melodic Similarity based on Shape Similarity
Java TeX Batchfile
Latest commit 2292fc8 Nov 16, 2016 @julian-urbano committed on GitHub Added ack in README.


License GitHub release JDK Build Status


MelodyShape is an open source Java library and tool to compute the melodic similarity between monophonic music pieces. It implements several algorithms that compute similarity based on the geometric shape that melodies describe in the pitch-time plane.

All these algorithms have obtained the best results in the MIREX Symbolic Melodic Similarity task in 2010, 2011, 2012, 2013, 2014 and 2015 editions, as well as the best results reported for the 2005 collection.

MelodyShape can be run both as a graphical user interface and as a command line tool:

$ java -jar melodyshape-1.4.jar
usage: melodyshape-1.4 -q <file/dir> -c <dir> -a <name> [-k <cutoff>] [-l] [-t <num>] [-v] [-vv] [-gui] [-h]
-q <file/dir>  path to the query melody or melodies.
-c <dir>       path to the collection of documents.
-a <name>      algorithm to run:
               - 2010-domain, 2010-pitchderiv, 2010-shape
               - 2011-shape, 2011-pitch, 2011-time
               - 2012-shapeh, 2012-shapel, 2012-shapeg, 2012-time, 2012-shapetime
               - 2013-shapeh, 2013-time, 2013-shapetime
               - 2014-shapeh, 2014-time, 2014-shapetime
               - 2015-shapeh, 2015-time, 2015-shapetime
-k <cutoff>    number of documents to retrieve.
-l             show results in a single line (omits similarity scores).
-t <num>       run a fixed number of threads.
-v             verbose, to stderr.
-vv            verbose a lot, to stderr.
-gui           run with graphical user interface.
-h             show this help message.

MelodyShape 1.4  Copyright (C) 2013-2016  Julian Urbano <urbano.julian@gmail.com>
This program is distributed under the terms of the MIT License.

A detailed user manual in PDF is available from the releases page.


  • The MelodyShape library uses the Math library from Apache Commons.
  • The command line tool uses the CLI library from Apache Commons.

Dependencies and building can be managed directly with Maven.

Current Version

The current version is MelodyShape 1.4, and it is compiled for Java 7. It can be redistributed and/or modified under the terms of the MIT License. Javadoc documentation and a user manual are available as well.

This work was supported by an A4U postdoctoral grant and a Juan de la Cierva postdoctoral fellowship.