madmom: a new Python Audio and Music Signal Processing Library
This library addresses the need for efficient and reproducible MIR tools for researchers and developers, though it is incremental as it builds on existing methods and frameworks.
The paper introduces madmom, an open-source Python library for audio and music signal processing, designed to facilitate fast prototyping and deployment of music information retrieval (MIR) applications with features like multi-core processing and state-of-the-art algorithms for tasks such as onset detection and piano transcription.
In this paper, we present madmom, an open-source audio processing and music information retrieval (MIR) library written in Python. madmom features a concise, NumPy-compatible, object oriented design with simple calling conventions and sensible default values for all parameters, which facilitates fast prototyping of MIR applications. Prototypes can be seamlessly converted into callable processing pipelines through madmom's concept of Processors, callable objects that run transparently on multiple cores. Processors can also be serialised, saved, and re-run to allow results to be easily reproduced anywhere. Apart from low-level audio processing, madmom puts emphasis on musically meaningful high-level features. Many of these incorporate machine learning techniques and madmom provides a module that implements some in MIR commonly used methods such as hidden Markov models and neural networks. Additionally, madmom comes with several state-of-the-art MIR algorithms for onset detection, beat, downbeat and meter tracking, tempo estimation, and piano transcription. These can easily be incorporated into bigger MIR systems or run as stand-alone programs.