Krotos Modules 3
Loading...
Searching...
No Matches
MusicScaleFilterBank.h
Go to the documentation of this file.
1//=====================================================================================
7//=====================================================================================
8#pragma once
9namespace krotos
10{
12 {
13 public:
15 MusicScaleFilterBank(float sampleRate);
16
20 void setSamplingRate(float fs);
21
29 void setParameters(float fMin, float fMax, int numBandsPerOctave, int numFFTBins);
30
35 std::vector<std::vector<float>> filterSpectrum(const std::vector<std::vector<float>>& spectrum);
36
37 private:
45 void musicScaleFilterUnrolled(std::vector<std::vector<float>>& filteredLogSpec,
46 std::vector<std::vector<float>>& spectrum, int frame);
47 void musicScaleFilterUnrolled96000(std::vector<std::vector<float>>& filteredLogSpec,
48 const std::vector<std::vector<float>>& spectrum, int frame);
49 void musicScaleFilterUnrolled48000(std::vector<std::vector<float>>& filteredLogSpec,
50 const std::vector<std::vector<float>>& spectrum, int frame);
51 void musicScaleFilterUnrolled44100(std::vector<std::vector<float>>& filteredLogSpec,
52 const std::vector<std::vector<float>>& spectrum, int frame);
53 void musicScaleFilterUnrolled22050(std::vector<std::vector<float>>& filteredLogSpec,
54 const std::vector<std::vector<float>>& spectrum, int frame);
55
57 void buildLogFreqAxis();
58
60 std::vector<float> mapNotesToFFTBins();
61
63 std::vector<std::vector<float>> buildFilterBank();
64
66 std::vector<float> triangularFilterCoeff(float start, float mid, float stop);
67
68 float m_maxFreq;
69 float m_minFreq;
71 int m_numFFTBins{-1};
72 int m_numBands{0};
73
74 // Filerbank
75 std::vector<std::vector<float>> m_filterBank;
76
77 const float m_A4 = 440.0f;
78 std::vector<float> m_freqLogAxis;
79 float m_samplingRate{-1.0f};
80 const float sr_441k = 44100.0f;
81 const float sr_48k = 48000.0f;
82 const float sr_96k = 96000.0f;
83 const float sr_225k = 22050.0f;
84 };
85} // namespace krotos
Definition MusicScaleFilterBank.h:12
std::vector< float > m_freqLogAxis
Definition MusicScaleFilterBank.h:78
std::vector< std::vector< float > > filterSpectrum(const std::vector< std::vector< float > > &spectrum)
Definition MusicScaleFilterBank.cpp:152
int m_bandsPerOct
Definition MusicScaleFilterBank.h:70
void setParameters(float fMin, float fMax, int numBandsPerOctave, int numFFTBins)
Definition MusicScaleFilterBank.cpp:21
void musicScaleFilterUnrolled48000(std::vector< std::vector< float > > &filteredLogSpec, const std::vector< std::vector< float > > &spectrum, int frame)
Definition MusicScaleFilterUnrolled48000.cpp:1
std::vector< std::vector< float > > m_filterBank
Definition MusicScaleFilterBank.h:75
std::vector< float > mapNotesToFFTBins()
Definition MusicScaleFilterBank.cpp:68
std::vector< std::vector< float > > buildFilterBank()
Definition MusicScaleFilterBank.cpp:92
MusicScaleFilterBank(float sampleRate)
Definition MusicScaleFilterBank.cpp:11
void musicScaleFilterUnrolled22050(std::vector< std::vector< float > > &filteredLogSpec, const std::vector< std::vector< float > > &spectrum, int frame)
Definition MusicScaleFilterUnrolled22050.cpp:1
void buildLogFreqAxis()
Definition MusicScaleFilterBank.cpp:42
int m_numBands
Definition MusicScaleFilterBank.h:72
float m_minFreq
Definition MusicScaleFilterBank.h:69
const float sr_441k
Definition MusicScaleFilterBank.h:80
std::vector< float > triangularFilterCoeff(float start, float mid, float stop)
Definition MusicScaleFilterBank.cpp:115
float m_samplingRate
Definition MusicScaleFilterBank.h:79
const float sr_225k
Definition MusicScaleFilterBank.h:83
void musicScaleFilterUnrolled96000(std::vector< std::vector< float > > &filteredLogSpec, const std::vector< std::vector< float > > &spectrum, int frame)
Definition MusicScaleFilterUnrolled96000.cpp:1
const float sr_96k
Definition MusicScaleFilterBank.h:82
const float sr_48k
Definition MusicScaleFilterBank.h:81
void musicScaleFilterUnrolled(std::vector< std::vector< float > > &filteredLogSpec, std::vector< std::vector< float > > &spectrum, int frame)
A sparse unrolled version of the nested matrix multiply loops used in the filterSpectrum() method.
Definition MusicScaleFilterUnrolled.cpp:9
int m_numFFTBins
Definition MusicScaleFilterBank.h:71
const float m_A4
Definition MusicScaleFilterBank.h:77
void musicScaleFilterUnrolled44100(std::vector< std::vector< float > > &filteredLogSpec, const std::vector< std::vector< float > > &spectrum, int frame)
Definition MusicScaleFilterUnrolled44100.cpp:1
void setSamplingRate(float fs)
Definition MusicScaleFilterBank.cpp:18
float m_maxFreq
Definition MusicScaleFilterBank.h:68
Definition AirAbsorptionFilter.cpp:2