aubio
0.4.1
|
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 441444, 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 881884, 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 */