annotate dsp/mfcc/MFCC.h @ 26:d096a79fa772

* Add timbral (MFCC) feature option to segmenter
author cannam
date Thu, 10 Jan 2008 16:41:33 +0000
parents 54a962727271
children a251fb0de594
rev   line source
cannam@26 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
cannam@25 2
cannam@26 3 /*
cannam@26 4 QM DSP Library
cannam@25 5
cannam@26 6 Centre for Digital Music, Queen Mary, University of London.
cannam@26 7 This file copyright 2005 Nicolas Chetry, copyright 2008 QMUL.
cannam@26 8 All rights reserved.
cannam@26 9 */
cannam@25 10
cannam@26 11 #ifndef MFCC_H
cannam@26 12 #define MFCC_H
cannam@26 13
cannam@26 14 #include "base/Window.h"
cannam@26 15
cannam@26 16 struct MFCCConfig {
cannam@26 17 int FS;
cannam@26 18 int fftsize;
cannam@26 19 int nceps;
cannam@26 20 bool want_c0;
cannam@26 21 };
cannam@26 22
cannam@26 23 class MFCC
cannam@26 24 {
cannam@26 25 public:
cannam@26 26 MFCC(MFCCConfig config);
cannam@26 27 virtual ~MFCC();
cannam@26 28
cannam@26 29 int process(int length, double *inframe, double *outceps);
cannam@26 30
cannam@26 31 int getfftlength() const { return fftSize; }
cannam@26 32
cannam@26 33 private:
cannam@26 34 /* Filter bank parameters */
cannam@26 35 double lowestFrequency;
cannam@26 36 int linearFilters;
cannam@26 37 double linearSpacing;
cannam@26 38 int logFilters;
cannam@26 39 double logSpacing;
cannam@26 40
cannam@26 41 /* FFT length */
cannam@26 42 int fftSize;
cannam@26 43
cannam@26 44 int totalFilters;
cannam@26 45
cannam@26 46 /* Misc. */
cannam@26 47 int samplingRate;
cannam@26 48 int nceps;
cannam@26 49
cannam@26 50 /* MFCC vector */
cannam@26 51 double *ceps;
cannam@26 52
cannam@26 53 double **mfccDCTMatrix;
cannam@26 54 double **mfccFilterWeights;
cannam@26 55
cannam@26 56 /* The analysis window */
cannam@26 57 Window<double> *window;
cannam@26 58
cannam@26 59 /* For the FFT */
cannam@26 60 double* imagIn; // always zero
cannam@26 61 double* realOut;
cannam@26 62 double* imagOut;
cannam@26 63
cannam@26 64 /* Set if user want C0 */
cannam@26 65 int WANT_C0;
cannam@26 66 };
cannam@26 67
cannam@25 68
cannam@25 69 #endif
cannam@25 70