Madmom: A New Python Audio and Music Signal Processing Library
Madmom: A New Python Audio and Music Signal Processing Library
Madmom: A New Python Audio and Music Signal Processing Library
Processing Library
∗
Sebastian Böck† , Filip Korzeniowski†, Jan Schlüter‡, Florian Krebs†, Gerhard Widmer†‡
† Department of Computational Perception, Johannes Kepler University Linz, Austria
‡ Austrian Research Institute for Artificial Intelligence (OFAI), Vienna, Austria
arXiv:1605.07008v1 [cs.SD] 23 May 2016
ABSTRACT feature extraction such as onset and beat detection as for ex-
In this paper, we present madmom, an open-source audio ample in the MIRtoolbox [13], Essentia [6] and librosa [15].
processing and music information retrieval (MIR) library However, to our knowledge, there exist no library that also
written in Python. madmom features a concise, NumPy- includes machine learning components (except Marsyas [18],
compatible, object oriented design with simple calling con- which contains two classifiers), although machine learning
ventions and sensible default values for all parameters, which components are crucial in current MIR applications.
facilitates fast prototyping of MIR applications. Prototypes Therefore, we propose madmom, a library that incorpo-
can be seamlessly converted into callable processing pipelines rates low-level feature extraction and high-level feature anal-
through madmom’s concept of Processors, callable objects ysis based on machine learning methods. This allows the
that run transparently on multiple cores. Processors can construction of the full processing chain within a single soft-
also be serialised, saved, and re-run to allow results to be ware framework, making it possible to build standalone pro-
easily reproduced anywhere. grams without any dependency on other machine learning
Apart from low-level audio processing, madmom puts em- frameworks. Moreover, madmom comes with several state-
phasis on musically meaningful high-level features. Many of of-the-art systems including their trained models, for exam-
these incorporate machine learning techniques and madmom ple for onset detection [17, 8], tempo estimation [3], beat
provides a module that implements some in MIR commonly estimation [2, 11], downbeat estimation [4], and piano tran-
used methods such as hidden Markov models and neural scription.
networks. Additionally, madmom comes with several state- madmom is written in Python, which has become the lan-
of-the-art MIR algorithms for onset detection, beat, down- guage of choice for scientific computing for many people due
beat and meter tracking, tempo estimation, and piano tran- to its free availability and its simplicity to use. The code
scription. These can easily be incorporated into bigger MIR is released under BSD license and pre-trained models are
systems or run as stand-alone programs. released under the CC BY-NC-SA 4.0 license.