-#include <stdlib.h>
-#include <math.h>
-#include <complex.h>
-#include <aubio.h>
-
-#define NEW_ARRAY(_t,_n) (_t*)malloc((_n)*sizeof(_t))
+#include <aubio.h>
int main(){
- uint_t i,j;
- uint_t win_s = 1024; // window size
- uint_t channels = 1; // number of channel
- fvec_t * in = new_fvec (win_s, channels); // input buffer
- cvec_t * fftgrain = new_cvec (win_s, channels); // fft norm and phase
- fvec_t * out = new_fvec (win_s, channels); // output buffer
-
- // allocate fft and other memory space
- aubio_fft_t * fft = new_aubio_fft(win_s); // fft interface
- smpl_t * w = NEW_ARRAY(smpl_t,win_s); // window
- // complex spectral data
- fft_data_t ** spec = NEW_ARRAY(fft_data_t*,channels);
- for (i=0; i < channels; i++)
- spec[i] = NEW_ARRAY(fft_data_t,win_s);
- // initialize the window (see mathutils.c)
- aubio_window(w,win_s,aubio_win_hanningz);
-
- // fill input with some data
- in->data[0][win_s/2] = 1;
-
- // execute stft
- for (i=0; i < channels; i++) {
- aubio_fft_do (fft,in->data[i],spec[i],win_s);
- // put norm and phase into fftgrain
- aubio_fft_getnorm(fftgrain->norm[i], spec[i], win_s/2+1);
- aubio_fft_getphas(fftgrain->phas[i], spec[i], win_s/2+1);
- }
-
- // execute inverse fourier transform
- for (i=0; i < channels; i++) {
- for (j=0; j<win_s/2+1; j++) {
- spec[i][j] = cexp(I*aubio_unwrap2pi(fftgrain->phas[i][j]));
- spec[i][j] *= fftgrain->norm[i][j];
- }
- aubio_fft_rdo(fft,spec[i],out->data[i],win_s);
- }
-
+ /* allocate some memory */
+ uint_t win_s = 4096; /* window size */
+ uint_t channels = 100; /* number of channels */
+ fvec_t * in = new_fvec (win_s, channels); /* input buffer */
+ cvec_t * fftgrain = new_cvec (win_s, channels); /* fft norm and phase */
+ fvec_t * out = new_fvec (win_s, channels); /* output buffer */
+ /* allocate fft and other memory space */
+ aubio_fft_t * fft = new_aubio_fft(win_s,channels);
+ /* fill input with some data */
+ //printf("initialised\n");
+ /* execute stft */
+ aubio_fft_do (fft,in,fftgrain);
+ //printf("computed forward\n");
+ /* execute inverse fourier transform */
+ aubio_fft_rdo(fft,fftgrain,out);
+ //printf("computed backard\n");
+ del_aubio_fft(fft);
del_fvec(in);
- del_fvec(out);
del_cvec(fftgrain);
- free(w);
- del_aubio_fft(fft);
- for (i=0; i < channels; i++)
- free(spec[i]);
- free(spec);
+ del_fvec(out);
+ //printf("memory freed\n");
aubio_cleanup();
return 0;
}
+++ /dev/null
-
-#include <aubio.h>
-
-int main(){
- /* allocate some memory */
- uint_t win_s = 4096; /* window size */
- uint_t channels = 100; /* number of channels */
- fvec_t * in = new_fvec (win_s, channels); /* input buffer */
- cvec_t * fftgrain = new_cvec (win_s, channels); /* fft norm and phase */
- fvec_t * out = new_fvec (win_s, channels); /* output buffer */
- /* allocate fft and other memory space */
- aubio_mfft_t * fft = new_aubio_mfft(win_s,channels);
- /* fill input with some data */
- //printf("initialised\n");
- /* execute stft */
- aubio_mfft_do (fft,in,fftgrain);
- //printf("computed forward\n");
- /* execute inverse fourier transform */
- aubio_mfft_rdo(fft,fftgrain,out);
- //printf("computed backard\n");
- del_aubio_mfft(fft);
- del_fvec(in);
- del_cvec(fftgrain);
- del_fvec(out);
- //printf("memory freed\n");
- aubio_cleanup();
- return 0;
-}