Summary: Recognise audio chroma vectors into textual chord descriptions.
- createChordRanks :: [BeatChroma] -> [TimedData [ProbChord]]
- beatSync :: BarTimeTrackData -> [ChordinoLine] -> [BeatChroma]
- meanBeatSyncVectors :: [BeatChroma] -> [TimedData (Vector NumData)]
- mergeByOneAndThree :: [TimedData [ProbChord]] -> [TimedData [ProbChord]]
- module Numeric.LinearAlgebra
- module Numeric.GSL.Statistics
Having a matrix of beat-synchronised bass and treble chromagrams and a chord dictionary, the probability of a chord sounding at a particular beat is estimated by calculating the Euclidean distance between the chord structures and the chroma feature. These distances are calculated for every chord candidate at every beat. Next, we sort the chord candidates by descending Euclidean distance. To obtain a relative measure of the fit between a chord candidate and the chroma vector in the range [0,1], the distances are normalised by dividing them by distance of the best matching chord candidate.
Merges chord segments, adding a bias toward merging at the first
and the third