mfb — Mel scale filterbank for spectral magnitudes.
ibands -- number of bands in the Mel filter bank. Determines the size of the output array.
kout[] -- output array containing the MFB with ibands bands. It will be created if it does not exist.
kin[] -- input array containing the input magnitude bins.
klow -- lowest frequency (rounded to the nearest bin centre frequency).
khigh -- highest lowest frequency (rounded to the nearest bin centre frequency).
Here is an example of the mfb opcode. Play mfb.csd
Example 587. Example of the mfb opcode.
See the sections Real-time Audio and Command Line Flags for more information on using command line flags.
<CsoundSynthesizer> <CsOptions> </CsOptions> <CsInstruments> ksmps = 64 instr 1 ifftsize init 1024 ibins init ifftsize/2 kIn[] init ifftsize kcnt init 0 p3 = filelen("fox.wav") asig diskin "fox.wav" kIn shiftin asig kcnt += ksmps if kcnt == ifftsize then kFFT[] = rfft(kIn) kPows[] = pows(kFFT) kMFB[] = log(mfb(kPows,300,8000,32)) kmfcc[] = dct(kMFB) kcnt = 0 kfb = 0 while kfb < 32 do printf("mfcc[%d] = %.3f \n", kfb+1, kfb, kmfcc[kfb]) kfb += 1 od endif endin </CsInstruments> <CsScore> i1 0 1 </CsScore> </CsoundSynthesizer>