2 Copyright (C) 2003 Paul Brossier
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 Second order Infinite Impulse Response filter
27 This file implements a normalised biquad filter (second order IIR):
29 \f$ y[n] = b_1 x[n] + b_2 x[n-1] + b_3 x[n-2] - a_2 y[n-1] - a_3 y[n-2] \f$
31 The filtfilt version runs the filter twice, forward and backward, to
32 compensate the phase shifting of the forward operation.
40 /** biquad filter object */
41 typedef struct _aubio_biquad_t aubio_biquad_t;
43 /** filter input vector
45 \param b biquad object as returned by new_aubio_biquad
46 \param in input vector to filter
49 void aubio_biquad_do(aubio_biquad_t * b, fvec_t * in);
50 /** filter input vector forward and backward
52 \param b biquad object as returned by new_aubio_biquad
53 \param in input vector to filter
54 \param tmp memory space to use for computation
57 void aubio_biquad_do_filtfilt(aubio_biquad_t * b, fvec_t * in, fvec_t * tmp);
58 /** create new biquad filter
60 \param b1 forward filter coefficient
61 \param b2 forward filter coefficient
62 \param b3 forward filter coefficient
63 \param a2 feedback filter coefficient
64 \param a3 feedback filter coefficient
67 aubio_biquad_t * new_aubio_biquad(lsmp_t b1, lsmp_t b2, lsmp_t b3, lsmp_t a2, lsmp_t a3);
69 /** delete biquad filter
71 \param b biquad object to delete
74 void del_aubio_biquad(aubio_biquad_t * b);