Ardour  9.0-pre0-582-g084a23a80d
MFCC.h
Go to the documentation of this file.
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2 
3 /*
4  QM DSP Library
5 
6  Centre for Digital Music, Queen Mary, University of London.
7  This file copyright 2005 Nicolas Chetry, copyright 2008 QMUL.
8 
9  This program is free software; you can redistribute it and/or
10  modify it under the terms of the GNU General Public License as
11  published by the Free Software Foundation; either version 2 of the
12  License, or (at your option) any later version. See the file
13  COPYING included with this distribution for more information.
14 */
15 
16 #ifndef MFCC_H
17 #define MFCC_H
18 
19 #include "base/Window.h"
20 
21 class FFTReal;
22 
23 struct MFCCConfig {
24  int FS;
25  int fftsize;
26  int nceps;
27  double logpower;
28  bool want_c0;
30  MFCCConfig(int _FS) :
31  FS(_FS), fftsize(2048), nceps(19),
32  logpower(1.0), want_c0(true), window(HammingWindow) { }
33 };
34 
35 class MFCC
36 {
37 public:
38  MFCC(MFCCConfig config);
39  virtual ~MFCC();
40 
46  int process(const double *inframe, double *outceps);
47 
54  int process(const double *real, const double *imag, double *outceps);
55 
56  int getfftlength() const { return fftSize; }
57 
58 private:
59  /* Filter bank parameters */
60  double lowestFrequency;
62  double linearSpacing;
64  double logSpacing;
65 
66  /* FFT length */
67  int fftSize;
68 
70  double logPower;
71 
72  /* Misc. */
74  int nceps;
75 
76  /* MFCC vector */
77  double *ceps;
78 
79  double **mfccDCTMatrix;
81 
82  /* The analysis window */
84 
85  /* For the FFT */
86  double *realOut;
87  double *imagOut;
88  double *fftMag;
89  double *earMag;
91 
92  /* Set if user want C0 */
93  int WANT_C0;
94 };
95 
96 
97 #endif
98 
WindowType
Definition: Window.h:23
@ HammingWindow
Definition: Window.h:26
Definition: FFT.h:53
Definition: MFCC.h:36
Window< double > * window
Definition: MFCC.h:83
int fftSize
Definition: MFCC.h:67
double linearSpacing
Definition: MFCC.h:62
double * ceps
Definition: MFCC.h:77
virtual ~MFCC()
int logFilters
Definition: MFCC.h:63
double ** mfccDCTMatrix
Definition: MFCC.h:79
int process(const double *real, const double *imag, double *outceps)
int nceps
Definition: MFCC.h:74
double ** mfccFilterWeights
Definition: MFCC.h:80
double * realOut
Definition: MFCC.h:86
double * fftMag
Definition: MFCC.h:88
double * earMag
Definition: MFCC.h:89
int linearFilters
Definition: MFCC.h:61
double logSpacing
Definition: MFCC.h:64
FFTReal * fft
Definition: MFCC.h:90
int WANT_C0
Definition: MFCC.h:93
double * imagOut
Definition: MFCC.h:87
double lowestFrequency
Definition: MFCC.h:60
double logPower
Definition: MFCC.h:70
MFCC(MFCCConfig config)
int totalFilters
Definition: MFCC.h:69
int samplingRate
Definition: MFCC.h:73
int getfftlength() const
Definition: MFCC.h:56
int process(const double *inframe, double *outceps)
double logpower
Definition: MFCC.h:27
bool want_c0
Definition: MFCC.h:28
int nceps
Definition: MFCC.h:26
int fftsize
Definition: MFCC.h:25
WindowType window
Definition: MFCC.h:29
MFCCConfig(int _FS)
Definition: MFCC.h:30
int FS
Definition: MFCC.h:24