This is a major feature release introducing new symbolic and audio score-following trackers, a unified interface refactor, particle filters, bug fixes, and documentation improvements. This version is not backwards compatible with 0.2 versions.
- New
OuterProductHMMtracker for MIDI score following - Cython-accelerated Viterbi step for improved performance
- State probability normalization inside the Cython Viterbi step
- Set as the default tracker for MIDI in the
Matchmakerclass
- New symbolic OLTWArzt tracker for event-based score following
- Major refactor to a fully event-based interface
- New symbolic
OLTWDixontracker (event-based) - Updated implementation and integration into the unified wrapper
- New audio score-following trackers added and integrated
- Wrapper extended for four Parangonar-based trackers
- Updated benchmark code for audio trackers
- Major MIDI tracker refactor for a unified interface
- Fixed MIDI score-following pipeline for HMM methods:
- Skip
Noneframes inMidiStreamqueue (empty polling frames) - Removed patience-based early termination in
BaseHMM/PitchIOIHMM - Warping path now stored as
(beat, time)floats instead ofint32 return_pitch_list=Trueenabled forPitchIOIHMM- Handle
(pitch, ioi)tuple input inPitchHMMfor time tracking - Fixed NaN handling in
plot_alignmentbeat ticks
- Skip
- Default MIDI tracker changed to
PitchIOIHMM(pthmm)
- Single
ParticleFilterclass implemented for both MIDI and Audio - Removed
auto_adjust_tempodependency
- Parse tempo directly from MusicXML scores
- Score marking and text tempo parsing
- Tempo adjustment now configurable as an option
- Added
BytesAudioStreamfor web audio input - Added
polling_periodargument inBytesMidiStreamfor web MIDI input - Applied 1ms
polling_periodto arzt/dixon/outerhmm trackers
- Fixed bug in calculating adjusted BPM of the score (PR #41)
- Fixed symbolic ARZT and Dixon trackers to be fully event-based
- Fixed bug in external matcher
__call__method - Fixed bug when empty observation is received
- Fixed typo in
feature_typeparameter - Fixed lazy import for
parangonaron Python 3.10 - Fixed Cython file naming issues
- Fixed NaN handling in
plot_alignmentbeat ticks - Fixed incorrect path in README installation instructions (PR #52)
- Unified interface refactor across MIDI and audio trackers
- Separated arguments in
__call__method for clarity - Removed
PitchChordProcessor(deprecated) - Fully deprecated
pkg_resources— replaced with modern alternatives (PR #60) - Updated assets and package management
- Normalized state probabilities in Viterbi step (Python and Cython)
- Score performance used directly for time mapping
- Added note IDs to the test score file
- Source length retrieved directly from score MIDI
- Added
pandasas a dependency inpyproject.toml
- Updated README with current usage, API, and installation instructions
- Added
CONTRIBUTING.mdand how-to-contribute guide - Updated version strings to
0.3.0(PR #60)
- Add evaluation function with performance annotation file
- Add
run_examples.pyfor simple testing of the package - Add more feature processors
- Bug fixes
- Add beat-level evaluation and assessment capabilities
- Adjustable parameters for distance functions and frame rates
- New HMM features for audio analysis
- Particle filter implementations
- Fix version scope of the
scipydependency
- Fix pinned versions of
numpyandscipy - Add automatic linting and formatting via
ruff - Update recommended Python version to 3.12
- Add documentation via ReadTheDocs
- Publish package on PyPI via GitHub Actions
- Rename package to
pymatchmaker
First release.