Krotos Modules 3
Loading...
Searching...
No Matches
HarmonicRepresentation.h
Go to the documentation of this file.
1//=====================================================================================
7//=====================================================================================
8
9#pragma once
10namespace krotos
11{
21 {
22 public:
23 /* Constructor
24 * @param sampleRate sampling rate in Hz
25 */
26 HarmonicRepresentation(float sampleRate);
27
36 Eigen::MatrixXf processSignal(std::vector<float>& inputSignal);
37
38 private:
43 {
44 const float threshold = 0.3f;
45 const int nHarms = 20;
46
48
53 {
54 const int hopSize = 1103;
55 const int winSize = 4410;
56 const int fftSize = 32768;
58
63 {
64 const float ERBStep = 0.1f;
65 const float normOverlap = 0.2f;
66 const float strenThresh = std::numeric_limits<float>::lowest();
67 const float log2PitchStep = 0.0208f;
68
70
76 void replaceNanWithMedian(Eigen::VectorXf& inputVector);
77
88 Eigen::VectorXf fevalbp(const Eigen::MatrixXf& bp, const Eigen::VectorXf& x_v);
89
90 Eigen::VectorXi findIndices(const Eigen::VectorXf& x_v,
91 float threshMin = -std::numeric_limits<float>::infinity(),
92 float threshMax = std::numeric_limits<float>::infinity());
93
116 std::vector<Eigen::MatrixXf> calculateReshaped2D(const Eigen::MatrixXf& multiplied, int tSize, int nFreqCorrs,
117 int nInharmCoeffs);
118 std::vector<Eigen::MatrixXi> applyTransformation(const std::vector<Eigen::MatrixXf>& reshapedMultiplied2_d,
119 float binSize, int fSize);
120 std::vector<Eigen::MatrixXi> calculateDistrIdcs(int tSize, int nFreqCorrs, int nInharmCoeffs, int fSize,
121 std::vector<Eigen::MatrixXi>& fSupIdcsTFHI2_d);
122 std::vector<Eigen::MatrixXf> extractSubmatrices(const Eigen::MatrixXf& distr,
123 const std::vector<Eigen::MatrixXi>& distrIdcsTFHI2_d);
124 std::vector<Eigen::MatrixXf> computeTotalErgTFI(const std::vector<Eigen::MatrixXf>& submatrices_cell, int tSize,
125 int nFreqCorrs, int nInharmCoeffs);
126 std::pair<Eigen::VectorXf, Eigen::VectorXi> maxRowValues(const Eigen::MatrixXf& matrix);
127
128 std::pair<Eigen::VectorXf, Eigen::VectorXf> m_pitchStrengthPair;
129 Eigen::VectorXf m_times;
130
131 const float m_sampleRate;
133 };
134} // namespace krotos
Definition HarmonicRepresentation.h:21
Eigen::MatrixXf processSignal(std::vector< float > &inputSignal)
Processes the input signal and returns the matrix of partial frequencies and partial amplitudes.
Definition HarmonicRepresentation.cpp:21
std::pair< Eigen::VectorXf, Eigen::VectorXi > maxRowValues(const Eigen::MatrixXf &matrix)
Definition HarmonicRepresentation.cpp:681
struct krotos::HarmonicRepresentation::HarmRepParams harmRep
HarmonicRepresentation(float sampleRate)
Definition HarmonicRepresentation.cpp:14
std::vector< Eigen::MatrixXi > calculateDistrIdcs(int tSize, int nFreqCorrs, int nInharmCoeffs, int fSize, std::vector< Eigen::MatrixXi > &fSupIdcsTFHI2_d)
Definition HarmonicRepresentation.cpp:588
Eigen::VectorXf fevalbp(const Eigen::MatrixXf &bp, const Eigen::VectorXf &x_v)
Estimates pitches by linear interpolation.
Definition HarmonicRepresentation.cpp:410
std::pair< Eigen::VectorXf, Eigen::VectorXf > m_pitchStrengthPair
Definition HarmonicRepresentation.h:128
const float m_sampleRate
Definition HarmonicRepresentation.h:131
std::vector< Eigen::MatrixXi > applyTransformation(const std::vector< Eigen::MatrixXf > &reshapedMultiplied2_d, float binSize, int fSize)
Definition HarmonicRepresentation.cpp:566
Eigen::VectorXf m_times
Definition HarmonicRepresentation.h:129
struct krotos::HarmonicRepresentation::SwipeParams swipe
std::vector< Eigen::MatrixXf > computeTotalErgTFI(const std::vector< Eigen::MatrixXf > &submatrices_cell, int tSize, int nFreqCorrs, int nInharmCoeffs)
Definition HarmonicRepresentation.cpp:658
std::vector< Eigen::MatrixXf > extractSubmatrices(const Eigen::MatrixXf &distr, const std::vector< Eigen::MatrixXi > &distrIdcsTFHI2_d)
Definition HarmonicRepresentation.cpp:628
struct krotos::HarmonicRepresentation::ConfigParams config
float m_maxSwipepWinSize
Definition HarmonicRepresentation.h:132
std::vector< Eigen::MatrixXf > calculateReshaped2D(const Eigen::MatrixXf &multiplied, int tSize, int nFreqCorrs, int nInharmCoeffs)
Reshapes a flat Eigen matrix into a vector of 2D matrices, intended for handling multidimensional mat...
Definition HarmonicRepresentation.cpp:537
Eigen::VectorXi findIndices(const Eigen::VectorXf &x_v, float threshMin=-std::numeric_limits< float >::infinity(), float threshMax=std::numeric_limits< float >::infinity())
Definition HarmonicRepresentation.cpp:513
void replaceNanWithMedian(Eigen::VectorXf &inputVector)
Replaces NaN values in the input vector with the median value.
Definition HarmonicRepresentation.cpp:375
Definition AirAbsorptionFilter.cpp:2
Configuration parameters.
Definition HarmonicRepresentation.h:53
const int fftSize
Definition HarmonicRepresentation.h:56
const int winSize
Definition HarmonicRepresentation.h:55
const int hopSize
Definition HarmonicRepresentation.h:54
Parameters related to harmonic representation.
Definition HarmonicRepresentation.h:43
const int nHarms
Definition HarmonicRepresentation.h:45
const float threshold
Definition HarmonicRepresentation.h:44
Parameters related to pitch estimation.
Definition HarmonicRepresentation.h:63
const float ERBStep
Definition HarmonicRepresentation.h:64
const float normOverlap
Definition HarmonicRepresentation.h:65
const float strenThresh
Definition HarmonicRepresentation.h:66
const float log2PitchStep
Definition HarmonicRepresentation.h:67