Awesome
Pitch Detector
JUCE module for pitch estimation
PitchYIN class based on the YIN implementation found in the aubio library
PitchMPM class adapted from the McLeod Pitch Method implementation in https://github.com/sevagh/pitch-detection
The updated version of the PitchMPM class now uses FFT for the auto-correlation function using the AudioFFT library (via the module wrapper at https://github.com/adamski/audio_fft). The previous time-based version is now in the time-based
branch.
Usage
NOTE: bufferSize
should be a power of 2!
// Class members
PitchMPM pitchMPM;
AudioSampleBuffer sampleBuffer;
// Setup / prepare
pitchMPM.setBufferSize (bufferSize);
pitchMPM.setSampleRate (sampleRate);
// Process
float newPitch = pitchMPM.getPitch (sampleBuffer.getReadPointer (0));
TODO
- Seperate time-based method into another class that can be used as an alternative to the FFT based method
- Add FFT based YIN implementation (not a priority, MPM works well for my needs - PR's welcome)
- Create base (virtual)
Pitch
class and add implementations as subclasses. - Add other methods, e.g. Wavelet?
- Remove JUCE dependency from implementations so that they can be used on embedded platforms, e.g. Arduino/Teensy. Will also need 'pluggable' FFT methods for this to work.