Dynamic Score Matcher for Matlab

Authors: Edward W. Large & Summer K. Rankin


The toolbox provides functions to a match a musical performance to its corresponding notation, or score. This program requires the MIDI Toolbox. The matcher utilizes dynamic programming techniques, runs in polynomial time and is described in (Large, 1993). The dynamic programming algorithm finds an optimal match between the two sequences, given a scoring function that is hard coded into the program. A graphical match inspector / editor is provided to inspect and adjust the output.

The algorithm for this task was developed in the context of a study of music production errors (Palmer & van de Sande, 1993). The original program required that the two performances be grouped into chords before matching the sequences. In a recent study of piano performance (Rankin, Large & Fink, 2009) this was found to cause difficulties for very long performances, because often no adequate temporal criterion can be found. In this more recent implementation, the notation matrix is grouped into chords (notes beginning on the same beat are chords); it does not group the performance before the match. It also uses an additional scoring function for timing information, and optimizes the sum of the two scoring functions. Thus, performed notes are matched to notated chords, yielding a many-to-one match. Based on this information, the program goes on to group the performance into chords.


Rankin, S. K., Large, E. W. & Fink, P. (2009). Fractal tempo fluctuation and pulse prediction. Music Perception26 (5), 401-413.

Palmer, C. & van de Sande, C. (1993).  Units of knowledge in music performance. Journal of Experimental Psychology: Learning, Memory, & Cognition19, 457-470.

Large, E. W. (1993). Dynamic programming for the analysis of serial behaviors. Behavior Research Methods, Instruments, and Computers, 25 (2), 238-241.

If you have suggestions, bugs or feature requests or want to contribute code, please email us.