src/types.h: add some documentation, use HAVE_AUBIO_DOUBLE, not AUBIO_SINGLE_PRECISION
[aubio.git] / README
1 AUBIO LIBRARY 
2
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.
8
9 A few examples of applications are provided in examples/ and python/: 
10
11  - aubioonset output the onset detected, 
12  - aubionotes emits midi-like notes,
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.
20
21 Aubio is now being used in various projects:
22
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
31
32 This package depends on the following libraries and utilities: 
33
34   - automake 1.8
35   - libsndfile1
36   - fftw3
37   - libsamplerate
38   - libjack (optional)
39   - libasound2 (optional)
40   - swig (>= 1.3, optional, for the python interface)
41   - python, python-gnuplot, python-numarray (optional)
42
43 The usual invocation `./configure && make' should do the job. Read on the
44 generic INSTALL file for more information.
45
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/).
50
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.
54
55 STATUS
56
57 The shared library libaubio provides the following tools:
58
59   - various math utilities
60   - phase vocoder 
61   - up/down-sampling
62   - filtering (n pole/zero pairs)
63   - onset detection functions
64   - onset peak picking
65   - pitch detection functions 
66   - beat tracking function
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
71 python interface, but swig should make it easy to obtain a wrapper for any
72 other supported language, such as Perl or Ruby.
73
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.
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
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.
92
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.
101
102 Results obtained with aubio were discussed in the following papers:
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
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
117   London, London, UK, 2006.
118
119 CONTACT
120
121 The home page of this project can be found at http://aubio.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.