Krotos Modules 3
Loading...
Searching...
No Matches
FrequencyDomainAnalysisFramework.h
Go to the documentation of this file.
1//=====================================================================================
7//=====================================================================================
8
9#pragma once
10
11#include <vector>
12#include <cmath>
13
14//=====================================================================================
15namespace krotos
16{
18 {
19 public:
20 //=====================================================================================
26 FrequencyDomainAnalysisFramework(int analysisFrameSize, int sampleRate);
27
28 //=====================================================================================
29 // Mutators
30
34 void setSamplingFrequency(int fs);
35
38 void setNumberOfMelFrequencyCoefficients(int numCoeffs);
39
42
44 void setFrequencyVector(const std::vector<float>& freqVector);
45
46 //=====================================================================================
47 // Accessors
48
51
54
55 //=====================================================================================
59 void setSpectralFrame(std::vector<float> spectralFrame);
60
61 //=====================================================================================
62 // Spectra
65
67 std::vector<float> getMelSpectrum();
68
70 std::vector<float> getMFCC();
71
72 //=====================================================================================
73 // Frequency-domain features
74
76 float getSpectralCentroid();
77
79 float getSpectralFlatness();
80
82 float getSpectralRolloff();
83
85 float getSpectralSpread();
86
88 float getSpectralSlope();
89
91 float getSpectralFlux();
92
94 float getSpectralKurtosis();
95
97 float getFrameEnergy();
98
101
103 /*Gonna be uncommented once we find a use for the complex fft.So far all
104 we are doing is using magnitude spectrum values so this would not work.Not
105 needed for now though*/
107
108 private:
112
113 float calculateSpectralMoment(int n);
114
116
117 std::vector<float> m_spectralFrame;
119 std::vector<float> m_freqVector;
120
121 std::vector<float> m_prevMagSpecSpectralFlux;
122
123 std::vector<float> m_prevMagSpecCSD;
124 std::vector<float> m_prevPhase1CSD;
125 std::vector<float> m_prevPhase2CSD;
126
129
132 std::vector<float> m_windowing;
133 };
134} // namespace krotos
Definition DiscreteCosineTransform.h:10
Definition FrequencyDomainAnalysisFramework.h:18
int m_samplingFrequency
Definition FrequencyDomainAnalysisFramework.h:115
int getNumberOfMelFrequencyCepstralCoefficients()
Definition FrequencyDomainAnalysisFramework.cpp:72
float getHighFreqencyContentOnsetDectionFunction()
Definition FrequencyDomainAnalysisFramework.cpp:351
float getSpectralFlux()
Definition FrequencyDomainAnalysisFramework.cpp:320
void setNumberOfMelFrequencyCepstralCoefficients(int numCoeffs)
Definition FrequencyDomainAnalysisFramework.cpp:42
DiscreteCosineTransform m_dct
Definition FrequencyDomainAnalysisFramework.h:128
void setSamplingFrequency(int fs)
Definition FrequencyDomainAnalysisFramework.cpp:22
std::vector< float > m_prevMagSpecCSD
Definition FrequencyDomainAnalysisFramework.h:123
float getSpectralFlatness()
Definition FrequencyDomainAnalysisFramework.cpp:186
std::vector< float > m_spectralFrame
Definition FrequencyDomainAnalysisFramework.h:117
std::vector< float > m_freqVector
Definition FrequencyDomainAnalysisFramework.h:119
int m_numMelCepstralCoefficients
Definition FrequencyDomainAnalysisFramework.h:131
float getSpectralKurtosis()
Definition FrequencyDomainAnalysisFramework.cpp:429
std::vector< float > getMelSpectrum()
Definition FrequencyDomainAnalysisFramework.cpp:140
void setNumberOfMelFrequencyCoefficients(int numCoeffs)
Definition FrequencyDomainAnalysisFramework.cpp:32
int getSamplingFrequency()
Definition FrequencyDomainAnalysisFramework.cpp:65
std::vector< float > m_windowing
Definition FrequencyDomainAnalysisFramework.h:132
float calculateSpectralMoment(int n)
Definition FrequencyDomainAnalysisFramework.cpp:405
float getSpectralRolloff()
Definition FrequencyDomainAnalysisFramework.cpp:279
MelFrequencySpectrum m_melFrequencySpectrum
Definition FrequencyDomainAnalysisFramework.h:127
std::vector< float > m_prevPhase2CSD
Definition FrequencyDomainAnalysisFramework.h:125
FrequencyDomainAnalysisFramework(int analysisFrameSize, int sampleRate)
Definition FrequencyDomainAnalysisFramework.cpp:13
void setFrequencyVector(const std::vector< float > &freqVector)
Definition FrequencyDomainAnalysisFramework.cpp:52
float getSpectralSlope()
Definition FrequencyDomainAnalysisFramework.cpp:250
int m_numMelCoefficients
Definition FrequencyDomainAnalysisFramework.h:130
int m_spectralFrameSize
Definition FrequencyDomainAnalysisFramework.h:118
std::vector< float > getMFCC()
Definition FrequencyDomainAnalysisFramework.cpp:146
void initialiseSpectralAnalysisAlgorithms()
Definition FrequencyDomainAnalysisFramework.cpp:78
float getSpectralCentroid()
Definition FrequencyDomainAnalysisFramework.cpp:159
float getFreqOfLoudestPartial()
Definition FrequencyDomainAnalysisFramework.cpp:121
std::vector< float > m_prevMagSpecSpectralFlux
Definition FrequencyDomainAnalysisFramework.h:121
void setSpectralFrame(std::vector< float > spectralFrame)
Definition FrequencyDomainAnalysisFramework.cpp:115
std::vector< float > m_prevPhase1CSD
Definition FrequencyDomainAnalysisFramework.h:124
float getFrameEnergy()
Definition FrequencyDomainAnalysisFramework.cpp:337
float getSpectralSpread()
Definition FrequencyDomainAnalysisFramework.cpp:218
Definition MelFrequencySpectrum.h:14
Definition AirAbsorptionFilter.cpp:2