Krotos Modules 3
Loading...
Searching...
No Matches
SlopEnvelopeOnsetdetection.h
Go to the documentation of this file.
1namespace krotos
2{
3 //==============================================================================
13 {
14 public:
15 EnvelopeFollowerSPD(float sampleRate);
16
22 void setupEnvFol(float attackTimeMs, float releaseTimeMs);
23
28 void setAttackMs(float attackTimeMs);
29
34 void setReleaseMs(float releaseTimeMs);
35
40 std::vector<float> filterVector(std::vector<float> inputMonoVector);
41
46 std::vector<float> normaliseEnvelope(std::vector<float> inputMonoVector);
47
48 private:
52 float m_sampleRate{-1.0f};
53
54 // Coeffcients
55 float m_gAtt{0.0f};
56 float m_gRel{0.0f};
57
58 // var holding memory of last sample
59 float m_inputSamplePrev{0.0f};
60 };
61
62 //==============================================================================
72 {
73 public:
75
80 std::vector<float> createSlopeVectorFromEnvelope(std::vector<float> envelopeVector);
81
85 void setNumRegressionPoints(int numRegressionPoints) { m_numRegressionPoints = numRegressionPoints; };
86
87 private:
88 // sampleRate
90
91 // number of linear Regression points (4-19)
93 };
94
95 //==============================================================================
107 {
108 public:
109 OnsetDetector(float sampleRate);
110
119 std::vector<int> calculateOnsetsGlobal(std::vector<float> slopeVector,
120 std::vector<float> normalisedEnvelopeVector);
121
123 void setThresholdPercentage(float thresholdPercentage);
124 void setOnsetMiliSeconds(float onsetMiliSeconds);
125 void setDecayLengthMiliSeconds(float decayLengthMiliSeconds);
126
127 private:
131 std::pair<int, int> detectAttackSegment(const std::vector<float>& slopeFrame,
132 const std::vector<float>& normalisedEnvelopeFrame,
133 float thresholdValue);
134
136 // percentage of max slope to set as slope increase threshold
137 float m_threshold{0.0f};
138 // forbidden region after attack in ms
139 int m_onset{};
140 // decay length in ms
142 // number near 0
143 float m_epsilon = 1e-6f;
144 // sampleRate
146
147 bool m_finishFlag{false};
148 };
149} // namespace krotos
Definition SlopEnvelopeOnsetdetection.h:13
void setupEnvFol(float attackTimeMs, float releaseTimeMs)
Definition SlopEnvelopeOnsetdetection.cpp:11
float m_inputSamplePrev
Definition SlopEnvelopeOnsetdetection.h:59
std::vector< float > filterVector(std::vector< float > inputMonoVector)
Definition SlopEnvelopeOnsetdetection.cpp:34
std::vector< float > normaliseEnvelope(std::vector< float > inputMonoVector)
Definition SlopEnvelopeOnsetdetection.cpp:57
float m_sampleRate
Definition SlopEnvelopeOnsetdetection.h:52
float m_attackTimeSec
Definition SlopEnvelopeOnsetdetection.h:50
void setReleaseMs(float releaseTimeMs)
Definition SlopEnvelopeOnsetdetection.cpp:28
void setAttackMs(float attackTimeMs)
Definition SlopEnvelopeOnsetdetection.cpp:22
float m_releaseTimeSec
Definition SlopEnvelopeOnsetdetection.h:51
float m_gAtt
Definition SlopEnvelopeOnsetdetection.h:55
EnvelopeFollowerSPD(float sampleRate)
Definition SlopEnvelopeOnsetdetection.cpp:3
float m_gRel
Definition SlopEnvelopeOnsetdetection.h:56
A class calculating onset positions of signal based on a slope vector describing it's envelope.
Definition SlopEnvelopeOnsetdetection.h:107
std::vector< int > calculateOnsetsGlobal(std::vector< float > slopeVector, std::vector< float > normalisedEnvelopeVector)
Definition SlopEnvelopeOnsetdetection.cpp:146
int m_onset
Definition SlopEnvelopeOnsetdetection.h:139
float m_sampleRate
Definition SlopEnvelopeOnsetdetection.h:145
float m_epsilon
Definition SlopEnvelopeOnsetdetection.h:143
bool m_finishFlag
Definition SlopEnvelopeOnsetdetection.h:147
float m_threshold
Definition SlopEnvelopeOnsetdetection.h:137
std::pair< int, int > detectAttackSegment(const std::vector< float > &slopeFrame, const std::vector< float > &normalisedEnvelopeFrame, float thresholdValue)
Definition SlopEnvelopeOnsetdetection.cpp:194
void setDecayLengthMiliSeconds(float decayLengthMiliSeconds)
Definition SlopEnvelopeOnsetdetection.cpp:140
int m_decayLength
Definition SlopEnvelopeOnsetdetection.h:141
void setOnsetMiliSeconds(float onsetMiliSeconds)
Definition SlopEnvelopeOnsetdetection.cpp:134
void setThresholdPercentage(float thresholdPercentage)
Definition SlopEnvelopeOnsetdetection.cpp:132
OnsetDetector(float sampleRate)
Definition SlopEnvelopeOnsetdetection.cpp:130
Calculates the slope of the Envelope Follower.
Definition SlopEnvelopeOnsetdetection.h:72
float m_sampleRate
Definition SlopEnvelopeOnsetdetection.h:89
SlopeGenerator()
Definition SlopEnvelopeOnsetdetection.h:74
int m_numRegressionPoints
Definition SlopEnvelopeOnsetdetection.h:92
void setNumRegressionPoints(int numRegressionPoints)
Definition SlopEnvelopeOnsetdetection.h:85
std::vector< float > createSlopeVectorFromEnvelope(std::vector< float > envelopeVector)
Definition SlopEnvelopeOnsetdetection.cpp:76
Definition AirAbsorptionFilter.cpp:2