Skip to content

adamski/pitch_detector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

JUCE module for pitch estimation

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published