6 #define NEW_ARRAY(_t,_n) (_t*)malloc((_n)*sizeof(_t))
11 /* allocate some memory */
12 uint_t win_s = 1024; /* window size */
13 uint_t channels = 1; /* number of channel */
14 fvec_t * in = new_fvec (win_s, channels); /* input buffer */
15 cvec_t * fftgrain = new_cvec (win_s, channels); /* fft norm and phase */
16 fvec_t * out = new_fvec (win_s, channels); /* output buffer */
18 /* allocate fft and other memory space */
19 aubio_fft_t * fft = new_aubio_fft(win_s); /* fft interface */
20 smpl_t * w = NEW_ARRAY(smpl_t,win_s); /* window */
21 /* complex spectral data */
22 fft_data_t ** spec = NEW_ARRAY(fft_data_t*,channels);
23 for (i=0; i < channels; i++)
24 spec[i] = NEW_ARRAY(fft_data_t,win_s);
25 /* initialize the window (see mathutils.c) */
26 aubio_window(w,win_s,aubio_win_hanningz);
28 /* fill input with some data */
31 for (i=0; i < channels; i++) {
32 aubio_fft_do (fft,in->data[i],spec[i],win_s);
33 /* put norm and phase into fftgrain */
34 aubio_fft_getnorm(fftgrain->norm[i], spec[i], win_s/2+1);
35 aubio_fft_getphas(fftgrain->phas[i], spec[i], win_s/2+1);
38 /* execute inverse fourier transform */
39 for (i=0; i < channels; i++) {
40 for (j=0; j<win_s/2+1; j++) {
41 spec[i][j] = cexp(I*aubio_unwrap2pi(fftgrain->phas[i][j]));
42 spec[i][j] *= fftgrain->norm[i][j];
44 aubio_fft_rdo(fft,spec[i],out->data[i],win_s);
52 for (i=0; i < channels; i++)