Merge branch 'develop' into notes
[aubio.git] / src / aubio.h
index 269e88b..0d2b416 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2003-2009 Paul Brossier <piem@aubio.org>
+  Copyright (C) 2003-2015 Paul Brossier <piem@aubio.org>
 
   This file is part of aubio.
 
 
 */
 
-/** \mainpage 
+/** \mainpage
+
   \section introduction Introduction
+
   aubio is a library to extract annotations from audio signals: it provides a
   set of functions that take an input audio signal, and output pitch estimates,
   attack times (onset), beat location estimates, and other annotation tasks.
-  \section basics Basics 
+
+  \section basics Basics
+
   All object structures in aubio share the same function prefixes and suffixes:
-  
+
     - \p new_aubio_foo creates the object \p foo
     - \p aubio_foo_do executes the object \p foo
     - \p del_aubio_foo destroys the object \p foo
@@ -37,7 +37,7 @@
   All memory allocation and deallocation take place in the \p new_ and \p del_
   functions. Optionally, more than one \p _do methods are available.
   Additional parameters can be adjusted and observed using:
-  
+
     - \p aubio_foo_get_param, getter function, gets the value of a parameter
     - \p aubio_foo_set_param, setter function, changes the value of a parameter
 
   \subsection vectors Vectors
 
   Two basic structures are being used in aubio: ::fvec_t and ::cvec_t. The
-  ::fvec_t structures are used to store vectors of floating pointer number,
-  optionally on several channels. ::cvec_t are used to store complex number,
-  as two vectors of norm and phase elements, also on several channels.
+  ::fvec_t structures are used to store vectors of floating pointer number.
+  ::cvec_t are used to store complex number, as two vectors of norm and phase
+  elements.
+
   Additionally, the ::lvec_t structure can be used to store floating point
   numbers in double precision. They are mostly used to store filter
   coefficients, to avoid instability.
+
   \subsection objects Available objects
 
   Here is a list of some of the most common objects for aubio:
   \code
 
   // fast Fourier transform (FFT)
-  aubio_fft_t *fft = new_aubio_fft (winsize, channels);
+  aubio_fft_t *fft = new_aubio_fft (winsize);
   // phase vocoder
-  aubio_pvoc_t *pv = new_aubio_pvoc (winsize, stepsize, channels);
-  // onset detection 
-  aubio_onset_t *onset = new_aubio_onset (method, winsize, stepsize, channels, samplerate);
-  // pitch detection 
-  aubio_pitch_t *pitch = new_aubio_pitch (method, winsize, stepsize, channels, samplerate);
+  aubio_pvoc_t *pv = new_aubio_pvoc (winsize, stepsize);
+  // onset detection
+  aubio_onset_t *onset = new_aubio_onset (method, winsize, stepsize, samplerate);
+  // pitch detection
+  aubio_pitch_t *pitch = new_aubio_pitch (method, winsize, stepsize, samplerate);
   // beat tracking
-  aubio_tempo_t *tempo = new_aubio_tempo (method, winsize, stepsize, channels, samplerate);
+  aubio_tempo_t *tempo = new_aubio_tempo (method, winsize, stepsize, samplerate);
 
   \endcode
 
 
   Here is a simple example that creates an A-Weighting filter and applies it to a
   vector.
+
   \code
 
-  // set channels, window size, and sampling rate 
-  uint_t channels = 2, winsize = 1024, sr = 44100;
+  // set window size, and sampling rate
+  uint_t winsize = 1024, sr = 44100;
   // create a vector
-  fvec_t *this_buffer = new_fvec (winsize, channels);
+  fvec_t *this_buffer = new_fvec (winsize);
   // create the a-weighting filter
-  aubio_filter_t *this_filter = new_aubio_filter_a_weighting (channels, sr);
-  
+  aubio_filter_t *this_filter = new_aubio_filter_a_weighting (sr);
+
   while (running) {
     // here some code to put some data in this_buffer
     // ...
     // apply the filter, in place
     aubio_filter_do (this_filter, this_buffer);
 
-    // here some code to get some data from this_buffer 
+    // here some code to get some data from this_buffer
     // ...
   }
-  
+
   // and free the structures
   del_aubio_filter (this_filter);
   del_fvec (this_buffer);
   \endcode
 
   Several examples of C programs are available in the \p examples/ and \p tests/src
-  directory of the source tree.
+  directories of the source tree.
 
   \subsection unstable_api Unstable API
 
   your own.
 
   \section download Download
+
   Latest versions, further documentation, examples, wiki, and mailing lists can
   be found at http://aubio.org .
+
  */
 
 #ifndef AUBIO_H
 
 /** @file aubio.h Global aubio include file.
 
-  Programmers just need to include this file as:
+  You will want to include this file as:
+
+  @code
+    #include <aubio/aubio.h>
+  @endcode
+
+  To access headers with unstable prototypes, use:
+
   @code
+    #define AUBIO_UNSTABLE 1
     #include <aubio/aubio.h>
   @endcode
+
  */
 
 #ifdef __cplusplus
@@ -157,7 +164,9 @@ extern "C"
 #include "fvec.h"
 #include "cvec.h"
 #include "lvec.h"
+#include "fmat.h"
 #include "musicutils.h"
+#include "vecutils.h"
 #include "temporal/resampler.h"
 #include "temporal/filter.h"
 #include "temporal/biquad.h"
@@ -165,27 +174,41 @@ extern "C"
 #include "temporal/c_weighting.h"
 #include "spectral/fft.h"
 #include "spectral/phasevoc.h"
+#include "spectral/filterbank.h"
+#include "spectral/filterbank_mel.h"
 #include "spectral/mfcc.h"
 #include "spectral/specdesc.h"
+#include "spectral/tss.h"
 #include "pitch/pitch.h"
 #include "onset/onset.h"
-#include "onset/peakpicker.h"
 #include "tempo/tempo.h"
+#include "notes/notes.h"
+#include "io/source.h"
+#include "io/sink.h"
+#include "synth/sampler.h"
+#include "synth/wavetable.h"
+#include "utils/parameter.h"
 
 #if AUBIO_UNSTABLE
-#include "vecutils.h"
 #include "mathutils.h"
-#include "utils/scale.h"
-#include "utils/hist.h"
-#include "spectral/tss.h"
-#include "spectral/filterbank.h"
-#include "spectral/filterbank_mel.h"
+#include "io/source_sndfile.h"
+#include "io/source_apple_audio.h"
+#include "io/source_avcodec.h"
+#include "io/source_wavread.h"
+#include "io/sink_sndfile.h"
+#include "io/sink_apple_audio.h"
+#include "io/sink_wavwrite.h"
+#include "io/audio_unit.h"
+#include "onset/peakpicker.h"
 #include "pitch/pitchmcomb.h"
 #include "pitch/pitchyin.h"
 #include "pitch/pitchyinfft.h"
 #include "pitch/pitchschmitt.h"
 #include "pitch/pitchfcomb.h"
+#include "pitch/pitchspecacf.h"
 #include "tempo/beattracking.h"
+#include "utils/scale.h"
+#include "utils/hist.h"
 #endif
 
 #ifdef __cplusplus