aubio
0.4.1
Main Page
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Macros
spectral
phasevoc.h
Go to the documentation of this file.
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
Phase vocoder object
24
25
This object implements a phase vocoder. The spectral frames are computed
26
using a HanningZ window and a swapped version of the signal to simplify the
27
phase relationships across frames. The window sizes and overlap are specified
28
at creation time.
29
30
\example spectral/test-phasevoc.c
31
32
*/
33
34
#ifndef _AUBIO_PHASEVOC_H
35
#define _AUBIO_PHASEVOC_H
36
37
#ifdef __cplusplus
38
extern
"C"
{
39
#endif
40
41
/** phasevocoder object */
42
typedef
struct
_aubio_pvoc_t
aubio_pvoc_t
;
43
44
/** create phase vocoder object
45
46
\param win_s size of analysis buffer (and length the FFT transform)
47
\param hop_s step size between two consecutive analysis
48
49
*/
50
aubio_pvoc_t
*
new_aubio_pvoc
(
uint_t
win_s,
uint_t
hop_s);
51
/** delete phase vocoder object
52
53
\param pv phase vocoder object as returned by new_aubio_pvoc
54
55
*/
56
void
del_aubio_pvoc
(
aubio_pvoc_t
*pv);
57
58
/** compute spectral frame
59
60
This function accepts an input vector of size [hop_s]. The
61
analysis buffer is rotated and filled with the new data. After windowing of
62
this signal window, the Fourier transform is computed and returned in
63
fftgrain as two vectors, magnitude and phase.
64
65
\param pv phase vocoder object as returned by new_aubio_pvoc
66
\param in new input signal (hop_s long)
67
\param fftgrain output spectral frame
68
69
*/
70
void
aubio_pvoc_do
(
aubio_pvoc_t
*pv,
fvec_t
*in,
cvec_t
* fftgrain);
71
/** compute signal from spectral frame
72
73
This function takes an input spectral frame fftgrain of size
74
[buf_s] and computes its inverse Fourier transform. Overlap-add
75
synthesis is then computed using the previously synthetised frames, and the
76
output stored in out.
77
78
\param pv phase vocoder object as returned by new_aubio_pvoc
79
\param fftgrain input spectral frame
80
\param out output signal (hop_s long)
81
82
*/
83
void
aubio_pvoc_rdo
(
aubio_pvoc_t
*pv,
cvec_t
* fftgrain,
fvec_t
*out);
84
85
/** get window size
86
87
\param pv phase vocoder to get the window size from
88
89
*/
90
uint_t
aubio_pvoc_get_win
(
aubio_pvoc_t
* pv);
91
/** get hop size
92
93
\param pv phase vocoder to get the hop size from
94
95
*/
96
uint_t
aubio_pvoc_get_hop
(
aubio_pvoc_t
* pv);
97
98
#ifdef __cplusplus
99
}
100
#endif
101
102
#endif
/* _AUBIO_PHASEVOC_H */
Generated on Wed Mar 12 2014 15:43:22 for aubio by
1.8.3.1