I am starting a new open source project for music information retrieval in Python called PyMIR. The project is located on Github: https://github.com/jsawruk/pymir.
I started PyMIR after taking a summer workshop on MIR at CCRMA at Stanford. During that workshop, we used algorithms that were coded in Matlab. Over the years I had translated some of these algorithms to other languages and platforms for various research I was doing, but they were not consolidated into a single place. The primary goal is to take these algorithms and have them all available in a centralized location so that I may access them easily. I am open sourcing it so that others may benefit from this as well.
I chose Python for its syntax as well as cross-platform capability. Speed is always a concern, and PyMIR will strive to be optimized. I am not considering a C-extension at this time, though this may be necessary in the future.
PyMIR is essentially broken down into two sections: pymir.audio for audio signal processing, and pymir.music for representational processing (MIDI, music theory etc). Additionally, I plan on having a pymir.api package for interfacing with relevant 3rd party APIs (e.g. Peachnote).
- pymir.audio.features – extraction algorithms for common MIR-related features
- pymir.audio.effects – standard DSP audio effects
- pymir.audio.pitch – F0 and chord estimation
- pymir.audio.timing – Timing and rhythm features (onsets, tempo)
Algorithms by themselves are not very useful; they only become useful with the right data. Initially, I plan to integrate with open-source data sets (such as Peachnote). Longer term, I may consider open-sourcing my own data sets. Regardless, this is a low priority at the moment, but something to consider for the future as PyMIR evolves.