Changeset 466dff3 for examples/aubiomfcc.c
- Timestamp:
- Dec 7, 2013, 4:09:00 AM (10 years ago)
- Branches:
- feature/autosink, feature/cnn, feature/cnn_org, feature/constantq, feature/crepe, feature/crepe_org, feature/pitchshift, feature/pydocstrings, feature/timestretch, fix/ffmpeg5, master, pitchshift, sampler, timestretch, yinfft+
- Children:
- 3da8187
- Parents:
- 44e94f3c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
examples/aubiomfcc.c
r44e94f3c r466dff3 1 1 /* 2 Copyright (C) 2007-20 09Paul Brossier <piem@aubio.org>2 Copyright (C) 2007-2013 Paul Brossier <piem@aubio.org> 3 3 4 4 This file is part of aubio. … … 22 22 #include "parse_args.h" 23 23 24 /* mfcc objects */ 25 fvec_t * mfcc_out; 26 aubio_mfcc_t * mfcc; 27 aubio_pvoc_t *pv; 28 cvec_t *fftgrain; 24 aubio_pvoc_t *pv; // a phase vocoder 25 cvec_t *fftgrain; // outputs a spectrum 26 aubio_mfcc_t * mfcc; // which the mfcc will process 27 fvec_t * mfcc_out; // to get the output coefficients 29 28 30 29 uint_t n_filters = 40; 31 30 uint_t n_coefs = 13; 32 31 33 unsigned int pos = 0; /*frames%dspblocksize*/ 34 35 static int aubio_process(smpl_t **input, smpl_t **output, int nframes) { 36 unsigned int j; /*frames*/ 37 38 for (j=0;j<(unsigned)nframes;j++) { 39 if(usejack) { 40 /* write input to datanew */ 41 fvec_write_sample(ibuf, input[0][j], pos); 42 /* put synthnew in output */ 43 output[0][j] = fvec_read_sample(obuf, pos); 44 } 45 /*time for fft*/ 46 if (pos == overlap_size-1) { 47 /* block loop */ 48 49 //compute mag spectrum 50 aubio_pvoc_do (pv, ibuf, fftgrain); 51 52 //compute mfccs 53 aubio_mfcc_do(mfcc, fftgrain, mfcc_out); 54 55 /* end of block loop */ 56 pos = -1; /* so it will be zero next j loop */ 57 } 58 pos++; 59 } 60 return 1; 32 static void 33 process_block(fvec_t *ibuf, fvec_t *obuf) { 34 fvec_zeros(obuf); 35 //compute mag spectrum 36 aubio_pvoc_do (pv, ibuf, fftgrain); 37 //compute mfccs 38 aubio_mfcc_do(mfcc, fftgrain, mfcc_out); 61 39 } 62 40 63 41 static void process_print (void) { 64 42 /* output times in seconds and extracted mfccs */ 65 if (sink_uri == NULL) { 66 outmsg("%f\t",frames*overlap_size/(float)samplerate); 67 fvec_print(mfcc_out); 68 } 43 outmsg("%f\t",blocks*hop_size/(float)samplerate); 44 fvec_print(mfcc_out); 69 45 } 70 46 71 47 int main(int argc, char **argv) { 72 // params48 // change some default params 73 49 buffer_size = 512; 74 overlap_size = 256;75 50 hop_size = 256; 51 76 52 examples_common_init(argc,argv); 77 53 78 /* phase vocoder */ 79 pv = new_aubio_pvoc (buffer_size, overlap_size); 54 verbmsg ("using source: %s at %dHz\n", source_uri, samplerate); 55 verbmsg ("buffer_size: %d, ", buffer_size); 56 verbmsg ("hop_size: %d\n", hop_size); 80 57 58 pv = new_aubio_pvoc (buffer_size, hop_size); 81 59 fftgrain = new_cvec (buffer_size); 60 mfcc = new_aubio_mfcc(buffer_size, n_filters, n_coefs, samplerate); 61 mfcc_out = new_fvec(n_coefs); 82 62 83 //populating the filter 84 mfcc = new_aubio_mfcc(buffer_size, n_filters, n_coefs, samplerate); 85 86 mfcc_out = new_fvec(n_coefs); 87 88 //process 89 examples_common_process(aubio_process,process_print); 90 91 //destroying mfcc 63 examples_common_process((aubio_process_func_t)process_block, process_print); 64 92 65 del_aubio_pvoc (pv); 93 66 del_cvec (fftgrain); … … 96 69 97 70 examples_common_del(); 98 debug("End of program.\n");99 fflush(stderr);100 101 71 return 0; 102 72 }
Note: See TracChangeset
for help on using the changeset viewer.