shithub: aubio

ref: 50791b39057e00de66c38a1856e703f8182b4843
dir: /README/

View raw version
AUBIO LIBRARY 

Aubio is a library for real time audio labelling. It can segment a sound at
each of its attacks, perform pitch detection and produce midi streams from live
audio. 

Aubio is still in an alpha state. More to come soon, suggestions and feedback
welcome.

A few examples of applications are provided in examples/ and python/: 
 - aubioonset output the onset detected, 
 - aubionotes emits midi-like notes,
 - aubiocuts is a python script that takes an input sound and creates one new
   sample at each new onsettimes

The first two can work either offline or online, outputing the results on the
console or playing a woodblock sound at each detected onset.

The name Aubio comes from 'audio' with a typo. It is likely to have many
transcription errors in the results too!

DEPENDANCIES 

This package depends on the following libraries and utils: 
  - automake1.7
  - libsndfile1
  - fftw3
  - libsamplerate
  - libjack (optional)
  - libasound2 (optional)
  - python, python-numarray (optional)
  - swig (>= 1.3, optional, for the python interface)

BUILDING AUBIO

The usual invocation `$ ./configure && make' should do the job. Read on the 
generic INSTALL file for more information.

DEBIAN

You could try the debian package (see http://piem.homeip.net/~piem/debian/)

On Debian you need the following packages to compile aubio: automake
libsndfile1-dev libjack-dev fftw3-dev libsamplerate0-dev python python-dev
python-numarray swig

OTHER PLATFORMS

Support has never been tested for Windows or MacOsX. It _could_ work with
$ ./configure --enable-alsa=no --enable-jack=no
Again, untested. Feedback and patches welcome.

STATUS

The shared library libaubio provides the following tools:
  - various maths tools
  - phase vocoder 
  - up/downsampling
  - filtering (n pole/zero pairs)
  - onset detection functions
  - onset peak picking
  - multicomb-filtering pitchdetection
  - 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 there is much overlap with projects such as pyjack and
numeric. To be continued...

`Make it run, make it right, make it fast.' [1] Aubio is in the "Make it right"
process: almost no optimisation has been done to the code, and its speed could
be much improved. The pitch detection is especially slow.

[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 these _methods, and
should all be bound to the new_ and del_ methods. Also most gcc warning flags
are turned on, so functions must be prototyped and variables used.

CONTACT

This project is a demo program for my research project. It can be found online
at http://piem.homeip.net/~piem/aubio/. I have been writting about the results
obtained with aubio in the following papers (that are about to be published!):
  
  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

Feel free to drop me a comment at piem@altern.org.