Krotos Modules 3
Loading...
Searching...
No Matches
McLeod.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 McLeod.h
5 Created: 4 Nov 2016 4:02:43pm
6 Author: KrotosMacMini
7
8 ==============================================================================
9*/
10
11#pragma once
12
13namespace krotos
14{
23 class McLeod
24 {
25 public:
26 McLeod();
27 McLeod(double sampleRate, int bufferSize);
28 ~McLeod();
29
30 void initialise(double newSampleRate, int newBufferSize);
31
32 float getPitch(std::vector<float> InputBuffer);
33 float getPitch(const float* InputBuffer, int numSamples);
34
35 private:
36 float getPitchInternal();
37
38 const float DEFAULT_SAMPLE_RATE{44100};
39 const int MAX_BUFFER_SIZE{1024};
40 const float SMALL_CUTOFF{0.5};
41 const double CUTOFF{0.97}; // 0.97 is default
42 const float LOWER_PITCH_CUTOFF{40}; // Lowest pitch estimation [Hz]
43 const double PI{3.14159265358979323846};
44 const double TWO_PI{2 * PI};
45
50
52
53 double sampleRate;
54
55 std::vector<int> peakPositions;
56 std::vector<float> mcLeodBuffer;
57 std::vector<float> periodEstimates;
58 std::vector<float> amplitudeEstimates;
59 std::vector<float> window;
60
61 void calculateNormalisedSquareDifferenceFunction(std::vector<float> buffer);
62 void peakPicking();
63 void parabolicInterpolation(int tauEstimation);
64 };
65} // namespace krotos
An implementation of the 'McLeod Pitch Method': http://miracle.otago.ac.nz/tartini/papers/A_Smarter_W...
Definition McLeod.h:24
std::vector< float > window
Definition McLeod.h:59
float interpolatedX
Definition McLeod.h:51
~McLeod()
Definition McLeod.cpp:17
std::vector< float > mcLeodBuffer
Definition McLeod.h:56
std::vector< int > peakPositions
Definition McLeod.h:55
std::vector< float > periodEstimates
Definition McLeod.h:57
float getPitch(std::vector< float > InputBuffer)
Definition McLeod.cpp:41
void initialise(double newSampleRate, int newBufferSize)
Definition McLeod.cpp:20
void peakPicking()
Definition McLeod.cpp:132
const float DEFAULT_SAMPLE_RATE
Definition McLeod.h:38
const float LOWER_PITCH_CUTOFF
Definition McLeod.h:42
int amplitudeEstimatesIndex
Definition McLeod.h:49
int periodEstimatesIndex
Definition McLeod.h:48
McLeod()
Definition McLeod.cpp:13
void parabolicInterpolation(int tauEstimation)
Definition McLeod.cpp:190
float getPitchInternal()
Definition McLeod.cpp:61
const int MAX_BUFFER_SIZE
Definition McLeod.h:39
const double TWO_PI
Definition McLeod.h:44
double sampleRate
Definition McLeod.h:53
int peakPositionsIndex
Definition McLeod.h:47
const double CUTOFF
Definition McLeod.h:41
float interpolatedY
Definition McLeod.h:51
const float SMALL_CUTOFF
Definition McLeod.h:40
int bufferSize
Definition McLeod.h:46
std::vector< float > amplitudeEstimates
Definition McLeod.h:58
const double PI
Definition McLeod.h:43
void calculateNormalisedSquareDifferenceFunction(std::vector< float > buffer)
Definition McLeod.cpp:115
Definition AirAbsorptionFilter.cpp:2