[96fb8ad] | 1 | AUBIO LIBRARY |
---|
| 2 | |
---|
[e604630] | 3 | Aubio is a library for real time audio labelling. Its features include |
---|
| 4 | segmenting a sound file before each of its attacks, performing pitch detection, |
---|
| 5 | tapping the beat and producing midi streams from live audio. The name aubio |
---|
| 6 | comes from 'audio' with a typo: several transcription errors are likely to be |
---|
| 7 | found in the results too. |
---|
[96fb8ad] | 8 | |
---|
| 9 | A few examples of applications are provided in examples/ and python/: |
---|
[e604630] | 10 | |
---|
[96fb8ad] | 11 | - aubioonset output the onset detected, |
---|
| 12 | - aubionotes emits midi-like notes, |
---|
[e604630] | 13 | - aubiocut is a python script that takes an input sound and creates one new |
---|
| 14 | sample at each detected onset or beat, |
---|
| 15 | - aubiopitch is a python script to extract pitch tracks from sound files. |
---|
| 16 | |
---|
| 17 | aubioonset and aubionotes can work either off-line or online, outputting the |
---|
| 18 | results on the console or playing a wood-block sound at each detected onset. |
---|
| 19 | Both Python scripts can plot the results with Gnuplot. |
---|
[96fb8ad] | 20 | |
---|
[e604630] | 21 | Aubio is now being used in various projects: |
---|
[96fb8ad] | 22 | |
---|
[e604630] | 23 | - Audacity (http://audacity.sourceforge.net/ , see plugins/audacity) |
---|
| 24 | - Wavesurfer (http://www.speech.kth.se/wavesurfer/ , see plugins/wavesurfer) |
---|
| 25 | - Puredata (http://puredata.info/ , see plugins/puredata) |
---|
| 26 | - Freecycle (http://www.redsteamrecords.com/freecycle/) |
---|
| 27 | - Sonic Visualiser (http://www.sonicvisualiser.org) |
---|
| 28 | - CLAM (http://clam.iua.upf.edu/) |
---|
| 29 | |
---|
| 30 | BUILDING AUBIO |
---|
[96fb8ad] | 31 | |
---|
[e604630] | 32 | This package depends on the following libraries and utilities: |
---|
[96fb8ad] | 33 | |
---|
[e604630] | 34 | - automake 1.8 |
---|
[96fb8ad] | 35 | - libsndfile1 |
---|
| 36 | - fftw3 |
---|
| 37 | - libsamplerate |
---|
| 38 | - libjack (optional) |
---|
| 39 | - libasound2 (optional) |
---|
[45345ee] | 40 | - swig (>= 1.3, optional, for the python interface) |
---|
[e604630] | 41 | - python, python-gnuplot, python-numarray (optional) |
---|
[96fb8ad] | 42 | |
---|
[e604630] | 43 | The usual invocation `./configure && make' should do the job. Read on the |
---|
[96fb8ad] | 44 | generic INSTALL file for more information. |
---|
| 45 | |
---|
[e604630] | 46 | On a Debian based system, you will need the following packages to compile |
---|
| 47 | aubio: automake libsndfile1-dev libjack-dev fftw3-dev libsamplerate0-dev python |
---|
| 48 | python-dev python-numarray swig. Alternatively, you could try the debian |
---|
| 49 | package (see http://piem.org/debian/). |
---|
[96fb8ad] | 50 | |
---|
[e604630] | 51 | Aubio has been successfully compiled on Mac OS X and can compile on Windows |
---|
| 52 | using mingw, although cross compiling it from Linux was found much simpler. |
---|
| 53 | Note that this code was developed and tested on a Linux box. |
---|
[96fb8ad] | 54 | |
---|
| 55 | STATUS |
---|
| 56 | |
---|
| 57 | The shared library libaubio provides the following tools: |
---|
[e604630] | 58 | |
---|
| 59 | - various math utilities |
---|
[96fb8ad] | 60 | - phase vocoder |
---|
[e604630] | 61 | - up/down-sampling |
---|
[96fb8ad] | 62 | - filtering (n pole/zero pairs) |
---|
| 63 | - onset detection functions |
---|
| 64 | - onset peak picking |
---|
[e604630] | 65 | - pitch detection functions |
---|
| 66 | - beat tracking function |
---|
[96fb8ad] | 67 | - transient/steady-state separation |
---|
| 68 | - alsa midi and jack input outputs |
---|
| 69 | |
---|
| 70 | A swig wrapper is provided in swig/. For now, I have only been playing with the |
---|
[e604630] | 71 | python interface, but swig should make it easy to obtain a wrapper for any |
---|
| 72 | other supported language, such as Perl or Ruby. |
---|
[96fb8ad] | 73 | |
---|
[e604630] | 74 | `Make it run, make it right, make it fast.'[1] Aubio is currently in the "Make |
---|
| 75 | it right" process. Almost no optimisation has been done to the code, and its |
---|
| 76 | speed could probably be improved. |
---|
[96fb8ad] | 77 | |
---|
| 78 | [1] see http://c2.com/cgi/wiki?MakeItWorkMakeItRightMakeItFast |
---|
| 79 | |
---|
| 80 | EXTEND |
---|
| 81 | |
---|
| 82 | The C API is designed in the following old school way: |
---|
| 83 | |
---|
| 84 | void del_aubio_thing(aubio_thing_t * t); |
---|
| 85 | aubio_thing_t * new_aubio_thing(void * args); |
---|
| 86 | audio_thing_methods(aubio_thing_t * t, void * args); |
---|
| 87 | |
---|
[e604630] | 88 | Memory allocation or freeing should never take place in execution function |
---|
| 89 | (aubio_thing_methods), and should all be bound to the new_ and del_ methods. |
---|
| 90 | Also, note that most GCC warning flags are turned on, so functions must be |
---|
| 91 | prototyped, and variables must be used. |
---|
[96fb8ad] | 92 | |
---|
[e604630] | 93 | CREDITS |
---|
| 94 | |
---|
| 95 | This library gathers music signal processing algorithms designed at the Centre |
---|
| 96 | for Digital Music and elsewhere. This software project was developed along the |
---|
| 97 | research I did at the Centre for Digital Music, Queen Mary, University of |
---|
| 98 | London. Most of this C code was written by myself, starting from published |
---|
| 99 | papers and existing code. The header files of each algorithm contains brief |
---|
| 100 | descriptions and references to the corresponding papers. |
---|
[96fb8ad] | 101 | |
---|
[e604630] | 102 | Results obtained with aubio were discussed in the following papers: |
---|
[96fb8ad] | 103 | |
---|
| 104 | P. M. Brossier and J. P. Bello and M. D. Plumbley, Real-time temporal |
---|
| 105 | segmentation of note objects in music signals, Proceedings of the |
---|
| 106 | International Computer Music Conference, 2004, Miami, Florida, ICMA |
---|
| 107 | |
---|
| 108 | P. M. Brossier and J. P. Bello and M. D. Plumbley, Fast labelling of note |
---|
| 109 | objects in music signals, Proceedings of the International Symposium on Music |
---|
| 110 | Information Retrieval, 2004, Barcelona, Spain |
---|
| 111 | |
---|
[e604630] | 112 | Substantial informations about the algorithms developed in aubio and their |
---|
| 113 | evaluation are gathered in: |
---|
| 114 | |
---|
| 115 | Paul Brossier, ``Automatic annotation of musical audio for interactive |
---|
| 116 | systems'', PhD thesis, Centre for Digital music, Queen Mary University of |
---|
[e8830c4] | 117 | London, London, UK, 2006. |
---|
[e604630] | 118 | |
---|
| 119 | CONTACT |
---|
| 120 | |
---|
| 121 | The home page of this project can be found at http://aubio.piem.org/. Feel free |
---|
| 122 | to drop me a comment (piem@altern.org) or on the mailing list, aubio@piem.org. |
---|
| 123 | Suggestions and feedback are most welcome. |
---|