Portability | non-portable |
---|---|

Stability | experimental |

Maintainer | bash@cs.uu.nl, jpm@cs.ox.ac.uk |

Safe Haskell | None |

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

# Documentation

createChordRanks :: [BeatChroma] -> [TimedData [ProbChord]]Source

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.

beatSync :: BarTimeTrackData -> [ChordinoLine] -> [BeatChroma]Source

Synchronises the `ChordinoData`

with the list of beats
by grouping the `ChordinoLines`

of the `ChordinoData`

in separate lists.

meanBeatSyncVectors :: [BeatChroma] -> [TimedData (Vector NumData)]Source

mergeByOneAndThree :: [TimedData [ProbChord]] -> [TimedData [ProbChord]]Source

Merges chord segments, adding a bias toward merging at the first
and the third `Beat`

module Numeric.LinearAlgebra

module Numeric.GSL.Statistics