1 /* 2 Copyright (C) 2003-2013 Paul Brossier <piem@aubio.org> 3 4 This file is part of aubio. 5 6 aubio is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 aubio is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with aubio. If not, see <http://www.gnu.org/licenses/>. 18 19 */ 20 21 /** \file 22 23 Pitch detection using multiple-comb filter 24 25 This fundamental frequency estimation algorithm implements spectral 26 flattening, multi-comb filtering and peak histogramming. 27 28 This method was designed by Juan P. Bello and described in: 29 30 Juan-Pablo Bello. ``Towards the Automated Analysis of Simple Polyphonic 31 Music''. PhD thesis, Centre for Digital Music, Queen Mary University of 32 London, London, UK, 2003. 33 34 \example pitch/test-pitchmcomb.c 35 36 */ 37 38 #ifndef AUBIO_PITCHMCOMB_H 39 #define AUBIO_PITCHMCOMB_H 40 41 #ifdef __cplusplus 42 extern "C" { 43 #endif 44 45 /** pitch detection object */ 46 typedef struct _aubio_pitchmcomb_t aubio_pitchmcomb_t; 47 48 /** execute pitch detection on an input spectral frame 49 50 \param p pitch detection object as returned by new_aubio_pitchmcomb 51 \param in_fftgrain input signal spectrum as computed by aubio_pvoc_do 52 \param out_cands pitch candidate frequenciess, in bins 53 54 */ 55 void aubio_pitchmcomb_do (aubio_pitchmcomb_t * p, const cvec_t * in_fftgrain, 56 fvec_t * out_cands); 57 58 /** creation of the pitch detection object 59 60 \param buf_size size of the input buffer to analyse 61 \param hop_size step size between two consecutive analysis instant 62 63 */ 64 aubio_pitchmcomb_t *new_aubio_pitchmcomb (uint_t buf_size, uint_t hop_size); 65 66 /** deletion of the pitch detection object 67 68 \param p pitch detection object as returned by new_aubio_pitchfcomb 69 70 */ 71 void del_aubio_pitchmcomb (aubio_pitchmcomb_t * p); 72 73 #ifdef __cplusplus 74 } 75 #endif 76 77 #endif /* AUBIO_PITCHMCOMB_H */ 78