Readme for HarmTrace-2.1
HarmTrace (Harmony Analysis and Retrieval of Music with Type-level
Representations of Abstract Chords Entities) is a system for automatic harmony
analysis of music. It takes a sequence of chords as input and produces a harmony
analysis, which can be visualised as a tree.
Music theory has been essential in composing and performing music for centuries.
Within Western tonal music, from the early Baroque on to modern-day jazz and pop
music, the function of chords within a chord sequence can be explained by
harmony theory. Although Western tonal harmony theory is a thoroughly studied
area, formalising this theory is a hard problem.
With HarmTrace we have developed a formalisation of the rules of tonal harmony
as a Haskell (generalized) algebraic datatype. Given a sequence of chord labels,
the harmonic function of a chord in its tonal context is automatically derived.
For this, we use several advanced functional programming techniques, such as
type-level computations, datatype-generic programming, and error-correcting
parsers. Our functional model of harmony offers various benefits: it can be used
to define harmonic similarity measures and facilitate music retrieval, or it can
help musicologists in batch-analysing large corpora of digitised scores, for
instance.
More information about HarmTrace, including how to use and example output, is
available on its webpage: http://www.cs.uu.nl/wiki/GenericProgramming/HarmTrace