A Python library implementing academic DSP algorithms for polyphonic chord detection and key estimation from audio.
chord-detection is a Python library that implements Digital Signal Processing (DSP) algorithms for automatically detecting musical chords and estimating the key from polyphonic audio files. It translates methods from academic papers into practical code, solving the problem of extracting harmonic information from complex music signals. The library includes multiple detection techniques like ESACF and Harmonic Energy, each offering different approaches to multipitch analysis.
Audio DSP researchers, music information retrieval developers, and programmers working on music analysis, transcription, or music technology applications who need robust, academic-grade chord detection algorithms.
Developers choose chord-detection for its focused collection of peer-reviewed algorithm implementations, saving the effort of coding complex DSP papers from scratch. Its key advantage is providing multiple, tested methods in one package with a simple CLI, enabling direct comparison and practical use in music analysis projects.
DSP algorithms for chord detection + key estimation
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements several DSP algorithms like ESACF and Harmonic Energy from published papers, allowing users to choose or compare different approaches for chord detection, as detailed in the README with references.
Designed specifically for polyphonic instruments like piano, handling multiple simultaneous pitches, evidenced by the examples analyzing C major chords in the README.
Provides musical key detection alongside chord analysis, giving broader context, as shown in the method outputs where keys like 'Cmaj' or 'Cmin' are reported.
Includes a command-line tool for direct audio file analysis and generates chromagram plots for visual inspection, demonstrated with images like '.github/piano_c_1.png' in the README.
The computed chroma vectors often don't perfectly match expected references (e.g., '900003001000' vs 'C000E00G0000'), indicating limitations in precision for complex or noisy audio.
Prioritizes replication of academic papers over production readiness, which may mean lack of optimizations, user-friendly APIs, or handling for diverse audio formats beyond WAV.
README provides basic installation and usage but lacks detailed API references, tuning guides, or examples for integration into larger projects, requiring deeper DSP knowledge.