Added scripts to test out one version of key detection.
Trying out hierarchical markov models for key estimation.
Trying out hierarchical markov models for key estimation.
Created class and specs for an HMM-based key estimator. Slow as hell, but works pretty well on the soprano lines of the Bach chorales
Moved key estimation code into the NoteQueue
Added a FIXME.
Using the new key-estimation code, I added a new critic that uses {key mode (major/minor), note's implied chord (relative to the key), note's pitch class (relative to the key)} to predict interval (which yields next pitch). This is the best performing pitch critic. It's better (on its own) than the previous ComplexPitchCritic, and when included in the ComplexPitchCritic, decreases its entropy by 12%.
Moved details on beat detection implementation to the MusicIR readme.
Getting rid of tools used to prototype the key estimation algorithms.
Using the term "chord mode" instead of "chord type". Seems clearer.
Fixed failing tests.
Mojved chords and note-queue-key-detection into MusicIR gem. All but one tests pass. Merging back into master now.
no longer requiring 'hmm' directly, as music_ir handles requiring it.
Adding a script to let me profile the performance of the whole system.
Moving away from *Symbol classes.
Converting BeatPosition and DurationAndBeatPosition to new symbol-less idiom.
Still converting away from the *Symbol pattern.
Refactoring of specs.
increased width of a formatted string to fix overflow.
Optimized. Incrementally better bits/note now.