AUBIO LIBRARY Aubio is a library for real time audio labelling. 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. The name aubio comes from 'audio' with a typo: several transcription errors are likely to be found in the results too. A few examples of applications are provided in examples/ and python/: - aubioonset output the onset detected, - aubionotes emits midi-like notes, - aubiocut is a python script that takes an input sound and creates one new sample at each detected onset or beat, - aubiopitch is a python script to extract pitch tracks from sound files. aubioonset and aubionotes can work either off-line or online, outputting the results on the console or playing a wood-block sound at each detected onset. Both Python scripts can plot the results with Gnuplot. Aubio is now being used in various projects: - Audacity (http://audacity.sourceforge.net/ , see plugins/audacity) - Wavesurfer (http://www.speech.kth.se/wavesurfer/ , see plugins/wavesurfer) - Puredata (http://puredata.info/ , see plugins/puredata) - Freecycle (http://www.redsteamrecords.com/freecycle/) - Sonic Visualiser (http://www.sonicvisualiser.org) - CLAM (http://clam.iua.upf.edu/) BUILDING AUBIO This package depends on the following libraries and utilities: - automake 1.8 - libsndfile1 - fftw3 - libsamplerate - libjack (optional) - libasound2 (optional) - swig (>= 1.3, optional, for the python interface) - python, python-gnuplot, python-numarray (optional) The usual invocation `./configure && make' should do the job. Read on the generic INSTALL file for more information. On a Debian based system, you will need the following packages to compile aubio: automake libsndfile1-dev libjack-dev fftw3-dev libsamplerate0-dev python python-dev python-numarray swig. Alternatively, you could try the debian package (see http://piem.org/debian/). Aubio has been successfully compiled on Mac OS X and can compile on Windows using mingw, although cross compiling it from Linux was found much simpler. Note that this code was developed and tested on a Linux box. STATUS The shared library libaubio provides the following tools: - various math utilities - phase vocoder - up/down-sampling - filtering (n pole/zero pairs) - onset detection functions - onset peak picking - pitch detection functions - beat tracking function - transient/steady-state separation - alsa midi and jack input outputs A swig wrapper is provided in swig/. For now, I have only been playing with the python interface, but swig should make it easy to obtain a wrapper for any other supported language, such as Perl or Ruby. `Make it run, make it right, make it fast.'[1] Aubio is currently in the "Make it right" process. Almost no optimisation has been done to the code, and its speed could probably be improved. [1] see http://c2.com/cgi/wiki?MakeItWorkMakeItRightMakeItFast EXTEND The C API is designed in the following old school way: void del_aubio_thing(aubio_thing_t * t); aubio_thing_t * new_aubio_thing(void * args); audio_thing_methods(aubio_thing_t * t, void * args); Memory allocation or freeing should never take place in execution function (aubio_thing_methods), and should all be bound to the new_ and del_ methods. Also, note that most GCC warning flags are turned on, so functions must be prototyped, and variables must be used. CREDITS This library gathers music signal processing algorithms designed at the Centre for Digital Music and elsewhere. This software project was developed along the research I did at the Centre for Digital Music, Queen Mary, University of London. Most of this C code was written by myself, starting from published papers and existing code. The header files of each algorithm contains brief descriptions and references to the corresponding papers. Results obtained with aubio were discussed in the following papers: P. M. Brossier and J. P. Bello and M. D. Plumbley, Real-time temporal segmentation of note objects in music signals, Proceedings of the International Computer Music Conference, 2004, Miami, Florida, ICMA P. M. Brossier and J. P. Bello and M. D. Plumbley, Fast labelling of note objects in music signals, Proceedings of the International Symposium on Music Information Retrieval, 2004, Barcelona, Spain Substantial informations about the algorithms developed in aubio and their evaluation are gathered in: Paul Brossier, ``Automatic annotation of musical audio for interactive systems'', PhD thesis, Centre for Digital music, Queen Mary University of London, London, UK, 2006. CONTACT The home page of this project can be found at http://aubio.org/. Feel free to drop me a comment (piem@altern.org) or on the mailing list, aubio@piem.org. Suggestions and feedback are most welcome.