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. In this implementation, a
26 Fourier transform is used to compute a tapered square difference function,
27 which allows spectral weighting. Because the difference function is tapered,
28 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 samplerate samplerate of the input signal
59 \param buf_size size of the input buffer to analyse
62 aubio_pitchyinfft_t *new_aubio_pitchyinfft (uint_t samplerate, uint_t buf_size);
63 /** deletion of the pitch detection object
65 \param o pitch detection object as returned by new_aubio_pitchyinfft()
68 void del_aubio_pitchyinfft (aubio_pitchyinfft_t * o);
70 /** get tolerance parameter for YIN algorithm
72 \param o YIN pitch detection object
74 \return tolerance parameter for minima selection [default 0.15]
77 smpl_t aubio_pitchyinfft_get_tolerance (aubio_pitchyinfft_t * o);
79 /** set tolerance parameter for YIN algorithm
81 \param o YIN pitch detection object
82 \param tol tolerance parameter for minima selection [default 0.15]
85 uint_t aubio_pitchyinfft_set_tolerance (aubio_pitchyinfft_t * o, smpl_t tol);
87 /** get current confidence of YIN algorithm
89 \param o YIN pitch detection object
90 \return confidence parameter
93 smpl_t aubio_pitchyinfft_get_confidence (aubio_pitchyinfft_t * o);
99 #endif /*PITCHYINFFT_H*/