aubio  0.4.1
spectral/specdesc.h
Go to the documentation of this file.
00001 /*
00002   Copyright (C) 2003-2013 Paul Brossier <piem@aubio.org>
00003 
00004   This file is part of aubio.
00005 
00006   aubio is free software: you can redistribute it and/or modify
00007   it under the terms of the GNU General Public License as published by
00008   the Free Software Foundation, either version 3 of the License, or
00009   (at your option) any later version.
00010 
00011   aubio is distributed in the hope that it will be useful,
00012   but WITHOUT ANY WARRANTY; without even the implied warranty of
00013   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014   GNU General Public License for more details.
00015 
00016   You should have received a copy of the GNU General Public License
00017   along with aubio.  If not, see <http://www.gnu.org/licenses/>.
00018 
00019 */
00020 
00021 /** \file
00022 
00023   Spectral description functions
00024 
00025   All of the following spectral description functions take as arguments the FFT
00026   of a windowed signal (as created with aubio_pvoc). They output one smpl_t per
00027   buffer (stored in a vector of size [1]).
00028 
00029   \section specdesc Spectral description functions
00030 
00031   A list of the spectral description methods currently available follows.
00032 
00033   \subsection onsetdesc Onset detection functions
00034 
00035   These functions are designed to raise at notes attacks in music signals.
00036 
00037   \b \p energy : Energy based onset detection function
00038 
00039   This function calculates the local energy of the input spectral frame.
00040 
00041   \b \p hfc : High Frequency Content onset detection function
00042 
00043   This method computes the High Frequency Content (HFC) of the input spectral
00044   frame. The resulting function is efficient at detecting percussive onsets.
00045 
00046   Paul Masri. Computer modeling of Sound for Transformation and Synthesis of
00047   Musical Signal. PhD dissertation, University of Bristol, UK, 1996.
00048 
00049   \b \p complex : Complex Domain Method onset detection function
00050 
00051   Christopher Duxbury, Mike E. Davies, and Mark B. Sandler. Complex domain
00052   onset detection for musical signals. In Proceedings of the Digital Audio
00053   Effects Conference, DAFx-03, pages 90-93, London, UK, 2003.
00054 
00055   \b \p phase : Phase Based Method onset detection function
00056 
00057   Juan-Pablo Bello, Mike P. Davies, and Mark B. Sandler. Phase-based note onset
00058   detection for music signals. In Proceedings of the IEEE International
00059   Conference on Acoustics Speech and Signal Processing, pages 441­444,
00060   Hong-Kong, 2003.
00061 
00062   \b \p specdiff : Spectral difference method onset detection function
00063 
00064   Jonhatan Foote and Shingo Uchihashi. The beat spectrum: a new approach to
00065   rhythm analysis. In IEEE International Conference on Multimedia and Expo
00066   (ICME 2001), pages 881­884, Tokyo, Japan, August 2001.
00067 
00068   \b \p kl : Kullback-Liebler onset detection function
00069 
00070   Stephen Hainsworth and Malcom Macleod. Onset detection in music audio
00071   signals. In Proceedings of the International Computer Music Conference
00072   (ICMC), Singapore, 2003.
00073 
00074   \b \p mkl : Modified Kullback-Liebler onset detection function
00075 
00076   Paul Brossier, ``Automatic annotation of musical audio for interactive
00077   systems'', Chapter 2, Temporal segmentation, PhD thesis, Centre for Digital
00078   music, Queen Mary University of London, London, UK, 2006.
00079 
00080   \b \p specflux : Spectral Flux
00081 
00082   Simon Dixon, Onset Detection Revisited, in ``Proceedings of the 9th
00083   International Conference on Digital Audio Effects'' (DAFx-06), Montreal,
00084   Canada, 2006.
00085 
00086   \subsection shapedesc Spectral shape descriptors
00087 
00088   The following descriptors are described in:
00089 
00090   Geoffroy Peeters, <i>A large set of audio features for sound description
00091   (similarity and classification) in the CUIDADO project</i>, CUIDADO I.S.T.
00092   Project Report 2004 (<a
00093   href="http://www.ircam.fr/anasyn/peeters/ARTICLES/Peeters_2003_cuidadoaudiofeatures.pdf">pdf</a>)
00094 
00095   \b \p centroid : Spectral centroid
00096 
00097   The spectral centroid represents the barycenter of the spectrum.
00098 
00099   \e Note: This function returns the result in bin. To get the spectral
00100   centroid in Hz, aubio_bintofreq() should be used.
00101 
00102   \b \p spread : Spectral spread
00103 
00104   The spectral spread is the variance of the spectral distribution around its
00105   centroid.
00106 
00107   See also <a href="http://en.wikipedia.org/wiki/Standard_deviation">Standard
00108   deviation</a> on Wikipedia.
00109 
00110   \b \p skewness : Spectral skewness
00111 
00112   Similarly, the skewness is computed from the third order moment of the
00113   spectrum. A negative skewness indicates more energy on the lower part of the
00114   spectrum. A positive skewness indicates more energy on the high frequency of
00115   the spectrum.
00116 
00117   See also <a href="http://en.wikipedia.org/wiki/Skewness">Skewness</a> on
00118   Wikipedia.
00119 
00120   \b \p kurtosis : Spectral kurtosis
00121 
00122   The kurtosis is a measure of the flatness of the spectrum, computed from the
00123   fourth order moment.
00124 
00125   See also <a href="http://en.wikipedia.org/wiki/Kurtosis">Kurtosis</a> on
00126   Wikipedia.
00127 
00128   \b \p slope : Spectral slope
00129 
00130   The spectral slope represents decreasing rate of the spectral amplitude,
00131   computed using a linear regression.
00132 
00133   \b \p decrease : Spectral decrease
00134 
00135   The spectral decrease is another representation of the decreasing rate,
00136   based on perceptual criteria.
00137 
00138   \b \p rolloff : Spectral roll-off
00139 
00140   This function returns the bin number below which 95% of the spectrum energy
00141   is found.
00142 
00143   \example spectral/test-specdesc.c
00144 
00145 */
00146 
00147 
00148 #ifndef _AUBIO_SPECDESC_H
00149 #define _AUBIO_SPECDESC_H
00150 
00151 #ifdef __cplusplus
00152 extern "C" {
00153 #endif
00154 
00155 /** spectral description structure */
00156 typedef struct _aubio_specdesc_t aubio_specdesc_t;
00157 
00158 /** execute spectral description function on a spectral frame
00159 
00160   Generic function to compute spectral detescription.
00161 
00162   \param o spectral description object as returned by new_aubio_specdesc()
00163   \param fftgrain input signal spectrum as computed by aubio_pvoc_do
00164   \param desc output vector (one sample long, to send to the peak picking)
00165 
00166 */
00167 void aubio_specdesc_do (aubio_specdesc_t * o, cvec_t * fftgrain,
00168     fvec_t * desc);
00169 
00170 /** creation of a spectral description object
00171 
00172   \param method spectral description method
00173   \param buf_size length of the input spectrum frame
00174 
00175   The parameter \p method is a string that can be any of:
00176 
00177     - `energy`, `hfc`, `complex`, `phase`, `specdiff`, `kl`, `mkl`, `specflux`
00178     - `centroid`, `spread`, `skewness`, `kurtosis`, `slope`, `decrease`, `rolloff`
00179 
00180 */
00181 aubio_specdesc_t *new_aubio_specdesc (char_t * method, uint_t buf_size);
00182 
00183 /** deletion of a spectral descriptor
00184 
00185   \param o spectral descriptor object as returned by new_aubio_specdesc()
00186 
00187 */
00188 void del_aubio_specdesc (aubio_specdesc_t * o);
00189 
00190 #ifdef __cplusplus
00191 }
00192 #endif
00193 
00194 #endif /* _AUBIO_SPECDESC_H */
 All Data Structures Files Functions Variables Typedefs Defines