00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef PITCHSALIENCY_H
00020 #define PITCHSALIENCY_H
00021
00022 #include "Typedefs.h"
00023 #include "Debug.h"
00024
00025 class PitchSaliency {
00026 protected:
00027 int _fftSize;
00028 int _halfSize;
00029 Real _f0;
00030 Real _f1;
00031 Real _fPrec;
00032 int _numHarmonics;
00033
00034 Real _tMin;
00035 Real _tMax;
00036 Real _tPrec;
00037 Real _alpha;
00038 Real _beta;
00039
00040 Real _samplerate;
00041
00042 Real harmonicWeight(Real period, Real tLow, Real tUp, int harmonicIndex);
00043
00044 Real saliency(Real period, Real deltaPeriod, Real tLow, Real tUp, const MatrixXR& spectrum);
00045
00046
00047 public:
00048 PitchSaliency(int fftSize, Real f0, Real f1, Real samplerate = 1.0, Real fPrec = 0.01, int numHarmonics = 5);
00049
00050 ~PitchSaliency();
00051
00052 void setup();
00053
00054 void process(const MatrixXR& spectrum, MatrixXR* pitches, MatrixXR* saliencies);
00055
00056 void reset();
00057 };
00058
00059 #endif