aubio  0.4.9
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 */
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, const 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 */
91 
92 /** get hop size
93 
94  \param pv phase vocoder to get the hop size from
95 
96 */
98 
99 /** set window type
100 
101  \param pv phase vocoder to set the window type
102  \param window_type a string representing a window
103 
104  \return 0 if successful, non-zero otherwise
105 
106  */
107 uint_t aubio_pvoc_set_window(aubio_pvoc_t *pv, const char_t *window_type);
108 
109 #ifdef __cplusplus
110 }
111 #endif
112 
113 #endif /* AUBIO_PHASEVOC_H */
void aubio_pvoc_do(aubio_pvoc_t *pv, const fvec_t *in, cvec_t *fftgrain)
compute spectral frame
void del_aubio_pvoc(aubio_pvoc_t *pv)
delete phase vocoder object
uint_t aubio_pvoc_get_hop(aubio_pvoc_t *pv)
get hop size
uint_t aubio_pvoc_get_win(aubio_pvoc_t *pv)
get window size
aubio_pvoc_t * new_aubio_pvoc(uint_t win_s, uint_t hop_s)
create phase vocoder object
uint_t aubio_pvoc_set_window(aubio_pvoc_t *pv, const char_t *window_type)
set window type
Buffer for real data.
Definition: fvec.h:67
Vector of real-valued phase and spectrum data.
Definition: cvec.h:63
unsigned int uint_t
unsigned integer
Definition: types.h:60
struct _aubio_pvoc_t aubio_pvoc_t
phasevocoder object
Definition: phasevoc.h:42
char char_t
character
Definition: types.h:64
void aubio_pvoc_rdo(aubio_pvoc_t *pv, cvec_t *fftgrain, fvec_t *out)
compute signal from spectral frame