minor changes
authorAmaury Hazan <mahmoudax@gmail.com>
Thu, 6 Sep 2007 13:45:23 +0000 (15:45 +0200)
committerAmaury Hazan <mahmoudax@gmail.com>
Thu, 6 Sep 2007 13:45:23 +0000 (15:45 +0200)
examples/aubiomfcc.c
src/mfcc.c

index 7366b3cc9365f9a148bf859d61129bb99a8f6771..44381ad384a1d70b2f4fc5fdc1a74ef53ebad8cc 100644 (file)
@@ -49,7 +49,7 @@ int aubio_process(float **input, float **output, int nframes) {
         outbuf[coef_cnt]=0.f;
        
       //compute mfccs
-      aubio_mffc_do(fftgrain->norm, nframes, filterbank, outbuf);
+      aubio_mffc_do(fftgrain->norm, nframes, mf, outbuf);
       
       for (coef_cnt=0; coef_cnt<n_filters ; coef_cnt++)
         outmsg("%f ",outbuf[coef_cnt]);
@@ -92,8 +92,8 @@ int main(int argc, char **argv) {
   uint_t banksize = (uint) ( sizeof(aubio_mel_filter));
   aubio_mel_filter * mf = (aubio_mel_filter *)getbytes(banksize);
 
-  mfilterbank->n_filters = 20;
-  mfilterbank->filters = (smpl_t **)getbytes(mf->n_filters * sizeof(smpl_t *));
+  mf->n_filters = 20;
+  mf->filters = (smpl_t **)getbytes(mf->n_filters * sizeof(smpl_t *));
   for(n = 0; n < mf->n_filters; n++)
     mf->filters[n] = (smpl_t *)getbytes((buffer_size/2+1) * sizeof(smpl_t));
   
index 305125b0800d24327fd4778cdd4e60fa8d7b6161..1d94a0d0bcca78000f83ac7cffd7e4f70efa6ba1 100644 (file)
@@ -40,6 +40,7 @@ int aubio_mfcc_do(const float *data, const int N, const void *argv, float *resul
         result[filter] = log(result[filter] < XTRACT_LOG_LIMIT ? XTRACT_LOG_LIMIT : result[filter]);
     }
 
+    //TODO: check that zero padding
     for(n = filter + 1; n < N; n++) result[n] = 0; 
     
     aubio_dct_do(result, f->n_filters, NULL, result);
@@ -49,13 +50,28 @@ int aubio_mfcc_do(const float *data, const int N, const void *argv, float *resul
 
 int aubio_dct_do(const float *data, const int N, const void *argv, float *result){
     
+    
+    //call aubio p_voc in dct setting
+
+    //TODO: fvec as input? Remove data length, N?
+
+    //compute mag spectrum
+    aubio_pvoc_do (pv,data, fftgrain);
+
+    int i;
+    //extract real part of fft grain
+    for(i=0; i<N ;i++){
+      result[i]= fftgrain->norm[i]*cos(fftgrain->phase[i]);
+    }
+    
+    /*
     fftwf_plan plan;
     
     plan = 
         fftwf_plan_r2r_1d(N, (float *) data, result, FFTW_REDFT00, FFTW_ESTIMATE);
     
     fftwf_execute(plan);
-    fftwf_destroy_plan(plan);
+    fftwf_destroy_plan(plan);*/
 
     return XTRACT_SUCCESS;
 }