bumping to 0.1.8
[aubio.git] / README
1 AUBIO LIBRARY 
2
3 Aubio is a library for real time audio labelling. It can segment a sound at
4 each of its attacks, perform pitch detection and produce midi streams from live
5 audio. 
6
7 Aubio is still in an alpha state. More to come soon, suggestions and feedback
8 welcome.
9
10 A few examples of applications are provided in examples/ and python/: 
11  - aubioonset output the onset detected, 
12  - aubionotes emits midi-like notes,
13  - aubiocuts is a python script that takes an input sound and creates one new
14    sample at each new onsettimes
15
16 The first two can work either offline or online, outputing the results on the
17 console or playing a woodblock sound at each detected onset.
18
19 The name Aubio comes from 'audio' with a typo. It is likely to have many
20 transcription errors in the results too!
21
22 DEPENDANCIES 
23
24 This package depends on the following libraries and utils: 
25   - automake1.7
26   - libsndfile1
27   - fftw3
28   - libsamplerate
29   - libjack (optional)
30   - libasound2 (optional)
31   - python, python-numarray (optional)
32   - swig (optional, for the python interface)
33
34 BUILDING AUBIO
35
36 The usual invocation `$ ./configure && make' should do the job. Read on the 
37 generic INSTALL file for more information.
38
39 DEBIAN
40
41 You could try the debian package (see http://piem.homeip.net/~piem/debian/)
42
43 On Debian you need the following packages to compile aubio: automake
44 libsndfile1-dev libjack-dev fftw3-dev libsamplerate0-dev python python-dev
45 python-numarray swig
46
47 OTHER PLATFORMS
48
49 Support has never been tested for Windows or MacOsX. It _could_ work with
50 $ ./configure --enable-alsa=no --enable-jack=no
51 Again, untested. Feedback and patches welcome.
52
53 STATUS
54
55 The shared library libaubio provides the following tools:
56   - various maths tools
57   - phase vocoder 
58   - up/downsampling
59   - filtering (n pole/zero pairs)
60   - onset detection functions
61   - onset peak picking
62   - multicomb-filtering pitchdetection
63   - transient/steady-state separation
64   - alsa midi and jack input outputs
65
66 A swig wrapper is provided in swig/. For now, I have only been playing with the
67 python interface. But there is much overlap with projects such as pyjack and
68 numeric. To be continued...
69
70 `Make it run, make it right, make it fast.' [1] Aubio is in the "Make it right"
71 process: almost no optimisation has been done to the code, and its speed could
72 be much improved. The pitch detection is especially slow.
73
74 [1] see http://c2.com/cgi/wiki?MakeItWorkMakeItRightMakeItFast
75
76 EXTEND
77
78 The C API is designed in the following old school way:
79
80     void del_aubio_thing(aubio_thing_t * t);
81     aubio_thing_t * new_aubio_thing(void * args);
82     audio_thing_methods(aubio_thing_t * t, void * args);
83
84 Memory allocation or freeing should never take place in these _methods, and
85 should all be bound to the new_ and del_ methods. Also most gcc warning flags
86 are turned on, so functions must be prototyped and variables used.
87
88 CONTACT
89
90 This project is a demo program for my research project. It can be found online
91 at http://piem.homeip.net/~piem/aubio/. I have been writting about the results
92 obtained with aubio in the following papers (that are about to be published!):
93   
94   P. M. Brossier and J. P. Bello and M. D. Plumbley, Real-time temporal
95   segmentation of note objects in music signals, Proceedings of the
96   International Computer Music Conference, 2004, Miami, Florida, ICMA
97
98   P. M. Brossier and J. P. Bello and M. D. Plumbley, Fast labelling of note
99   objects in music signals, Proceedings of the International Symposium on Music
100   Information Retrieval, 2004, Barcelona, Spain
101
102 Feel free to drop me a comment at piem@altern.org.