aubio is a library to label music and sounds. It listens to audio signals and attempts to detect events. For instance, when a drum is hit, at which frequency is a note, or at what tempo is a rhythmic melody.
Its features include segmenting a sound file before each of its attacks, performing pitch detection, tapping the beat and producing midi streams from live audio.
aubio provide several algorithms and routines, including:
- several onset detection methods
- different pitch detection methods
- tempo tracking and beat detection
- MFCC (mel-frequency cepstrum coefficients)
- FFT and phase vocoder
- digital filters (low pass, high pass, and more)
- spectral filtering
- transient/steady-state separation
- sound file read and write access
- various mathematics utilities for music applications
The name aubio comes from audio with a typo: some errors are likely to be found in the results.
The python module comes with the following command line tools:
aubioextracts informations from sound files
aubiocutslices sound files at onset or beat timestamps
Additional command line tools are included along with the library:
aubioonsetoutputs the time stamp of detected note onsets
aubiopitchattempts to identify a fundamental frequency, or pitch, for each frame of the input sound
aubiomfcccomputes Mel-frequency Cepstrum Coefficients
aubiotrackoutputs the time stamp of detected beats
aubionotesemits midi-like notes, with an onset, a pitch, and a duration
aubioquietextracts quiet and loud regions
The latest version of the documentation can be found at:
aubio compiles on Linux, Mac OS X, Windows, Cygwin, and iOS.
To compile aubio, you should be able to simply run:
To compile the python module:
The home page of this project can be found at: https://aubio.org/
aubio is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Patches are welcome: please fork the latest git repository and create a feature branch. Submitted requests should pass all continuous integration tests.