source: src/temporal/biquad.h @ e5e693e

feature/autosinkfeature/cnnfeature/cnn_orgfeature/constantqfeature/crepefeature/crepe_orgfeature/pitchshiftfeature/pydocstringsfeature/timestretchfix/ffmpeg5pitchshiftsamplertimestretchyinfft+
Last change on this file since e5e693e was 32d6958, checked in by Paul Brossier <piem@piem.org>, 17 years ago

src/: more moving and splitting

  • Property mode set to 100644
File size: 2.1 KB
Line 
1/*
2         Copyright (C) 2003 Paul Brossier
3
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.
8
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.
13
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.
17
18*/
19
20#ifndef BIQUAD_H
21#define BIQUAD_H
22
23/** \file
24
25  Second order Infinite Impulse Response filter
26
27  This file implements a normalised biquad filter (second order IIR):
28 
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$
30
31  The filtfilt version runs the filter twice, forward and backward, to
32  compensate the phase shifting of the forward operation.
33
34*/
35
36#ifdef __cplusplus
37extern "C" {
38#endif
39
40/** biquad filter object */
41typedef struct _aubio_biquad_t aubio_biquad_t;
42
43/** filter input vector
44
45  \param b biquad object as returned by new_aubio_biquad
46  \param in input vector to filter
47
48*/
49void aubio_biquad_do(aubio_biquad_t * b, fvec_t * in);
50/** filter input vector forward and backward
51
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
55
56*/
57void aubio_biquad_do_filtfilt(aubio_biquad_t * b, fvec_t * in, fvec_t * tmp);
58/** create new biquad filter
59
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
65
66*/
67aubio_biquad_t * new_aubio_biquad(lsmp_t b1, lsmp_t b2, lsmp_t b3, lsmp_t a2, lsmp_t a3);
68
69/** delete biquad filter
70 
71  \param b biquad object to delete
72
73*/
74void del_aubio_biquad(aubio_biquad_t * b);
75
76#ifdef __cplusplus
77}
78#endif
79
80#endif /*BIQUAD_H*/
Note: See TracBrowser for help on using the repository browser.