2 Copyright (C) 2003-2009 Paul Brossier <piem@aubio.org>
4 This file is part of aubio.
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.
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.
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/>.
23 Pitch detection using a spectral implementation of the YIN algorithm
25 This algorithm was derived from the YIN algorithm (see pitchyin.c). In this
26 implementation, a Fourier transform is used to compute a tapered square
27 difference function, which allows spectral weighting. Because the difference
28 function is tapered, the selection of the period is simplified.
30 Paul Brossier, [Automatic annotation of musical audio for interactive
31 systems](http://aubio.org/phd/), Chapter 3, Pitch Analysis, PhD thesis,
32 Centre for Digital music, Queen Mary University of London, London, UK, 2006.
34 \example pitch/test-pitchyinfft.c
45 /** pitch detection object */
46 typedef struct _aubio_pitchyinfft_t aubio_pitchyinfft_t;
48 /** execute pitch detection on an input buffer
50 \param o pitch detection object as returned by new_aubio_pitchyinfft
51 \param samples_in input signal vector (length as specified at creation time)
52 \param cands_out pitch period candidates, in samples
55 void aubio_pitchyinfft_do (aubio_pitchyinfft_t * o, fvec_t * samples_in, fvec_t * cands_out);
56 /** creation of the pitch detection object
58 \param buf_size size of the input buffer to analyse
61 aubio_pitchyinfft_t *new_aubio_pitchyinfft (uint_t samplerate, uint_t buf_size);
62 /** deletion of the pitch detection object
64 \param o pitch detection object as returned by new_aubio_pitchyinfft()
67 void del_aubio_pitchyinfft (aubio_pitchyinfft_t * o);
69 /** get tolerance parameter for YIN algorithm
71 \param o YIN pitch detection object
73 \return tolerance parameter for minima selection [default 0.15]
76 smpl_t aubio_pitchyinfft_get_tolerance (aubio_pitchyinfft_t * o);
78 /** set tolerance parameter for YIN algorithm
80 \param o YIN pitch detection object
81 \param tol tolerance parameter for minima selection [default 0.15]
84 uint_t aubio_pitchyinfft_set_tolerance (aubio_pitchyinfft_t * o, smpl_t tol);
86 /** get current confidence of YIN algorithm
88 \param o YIN pitch detection object
89 \return confidence parameter
92 smpl_t aubio_pitchyinfft_get_confidence (aubio_pitchyinfft_t * o);
98 #endif /*PITCHYINFFT_H*/