HarmTrace: Harmony Analysis and Retrieval of Music

[ gpl, music, program ] [ Propose Tags ]

HarmTrace: Harmony Analysis and Retrieval of Music with Type-level Representations of Abstract Chords Entities

We present HarmTrace, a system for automatically analysing the harmony of music sequences. HarmTrace is described in the paper:

[Skip to Readme]
Versions [faq] 0.1, 0.1.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 1.0, 2.0, 2.1, 2.2.0, 2.2.1
Dependencies array, base (>=4.2 && <4.6), binary (==0.5.*), cmdargs (==0.9.*), deepseq, Diff (==0.1.*), directory, filepath, hmatrix (>=, hmatrix-gsl-stats (>=, instant-generics (>=0.3.1 && <0.4), ListLike (>=3.0.1), mtl, parallel (>=3), parseargs (>=, process (>=1.0), sox (>=, template-haskell (>=2.4 && <2.8), uu-parsinglib (==2.7.1), vector (>=0.7) [details]
License GPL-3.0-only
Copyright (c) 2010--2012 Universiteit Utrecht, 2012 University of Oxford
Author W. Bas de Haas and Jose Pedro Magalhaes
Maintainer bash@cs.uu.nl, jpm@cs.ox.ac.uk
Category Music
Home page http://www.cs.uu.nl/wiki/GenericProgramming/HarmTrace
Uploaded by JosePedroMagalhaes at Mon Jun 18 17:55:13 UTC 2012
Distributions NixOS:2.2.1
Executables harmtrace
Downloads 7868 total (14 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
All reported builds failed as of 2016-12-24 [all 7 reports]


  • HarmTrace
    • Audio
      • HarmTrace.Audio.Annotate
      • HarmTrace.Audio.AnnotationParser
      • HarmTrace.Audio.ChordTypes
      • HarmTrace.Audio.ChromaChord
      • HarmTrace.Audio.ChromaKey
      • HarmTrace.Audio.DataParser
      • HarmTrace.Audio.Evaluation
      • HarmTrace.Audio.Key
      • HarmTrace.Audio.Statistical
    • Base
      • HarmTrace.Base.MusicRep
      • HarmTrace.Base.Parsing
      • HarmTrace.Base.TypeLevel
    • HAnTree
      • HarmTrace.HAnTree.Binary
      • HarmTrace.HAnTree.HAn
      • HarmTrace.HAnTree.HAnParser
      • HarmTrace.HAnTree.PostProcess
      • HarmTrace.HAnTree.ToHAnTree
      • HarmTrace.HAnTree.Tree
    • Matching
      • HarmTrace.Matching.Alignment
      • HarmTrace.Matching.GuptaNishimura
      • HarmTrace.Matching.HChord
      • HarmTrace.Matching.Sim
      • HarmTrace.Matching.SimpleChord
      • HarmTrace.Matching.Standard
    • Models
      • Jazz
        • HarmTrace.Models.Jazz.Instances
        • HarmTrace.Models.Jazz.Main
        • HarmTrace.Models.Jazz.Model
      • HarmTrace.Models.Models
      • HarmTrace.Models.Parser
      • Pop
        • HarmTrace.Models.Pop.Instances
        • HarmTrace.Models.Pop.Main
        • HarmTrace.Models.Pop.Model
    • Tokenizer
      • HarmTrace.Tokenizer.Tokenizer
      • HarmTrace.Tokenizer.Tokens


Maintainer's Corner

For package maintainers and hackage trustees

Readme for HarmTrace-2.0

[back to package description]
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 

More information about HarmTrace, including how to use and example output, is
available on its webpage: http://www.cs.uu.nl/wiki/GenericProgramming/HarmTrace