Category Archives: Pitch Detection

Fast and Efficient Pitch Detection: Bliss!

      DSP, Electronics, Pitch Detection, Software

In my previous post, I introduced my invention, Bitstream Autocorrelation: an accurate, extremely fast and efficient, time-domain pitch detection scheme. I argued that it can be as accurate as standard Autocorrelation based pitch detection schemes, especially, or at least, for very specific source inputs, such as the guitar.

As far as I can tell, this is a new invention and has not been done like this before. And so, the past few weeks, I investigated deeper and studied its performance and characteristics on real world guitar samples. For analysis, I recorded single-note samples for all strings (6 strings for now) at various fret positions. Additionally, I also recorded various guitar audio samples incorporating techniques such as hammer-ons and pull-offs and fast right hand arpeggios. I am impressed!

Here are my findings and some direction changes and updates along the way…

Continue reading

Fast and Efficient Pitch Detection: Bitstream Autocorrelation

      DSP, Electronics, Pitch Detection, Software

So, since last year, I’ve been mulling over a unique, and extremely fast(!) Autocorrelation scheme for monophonic pitch detection. Last weekend, I finally got myself to write the proof of concept. It’s not like any autocorrelation scheme I’ve seen before. I am still wondering why no one has thought about doing it this way. As far as I can tell, this is my invention, but please tell me if there’s something I am missing and if I’m not the first to actually do it this way. I dubbed the technique Bitstream Autocorrelation.

Unlike standard Autocorrelation, my scheme works on single bit binary data streams instead of floating point (or fixed point) real numbers. Compared to standard Autocorrelation, Bitstream Autocorrelation is wicked fast. As I’ve been working on multiple channels of audio on small Microcontrollers, I’ve consistently shied away from Autocorrelation schemes for pitch detection (see my original article: Fast and Efficient Pitch Detection). Popular time-domain Autocorrelation (ACF)  based pitch detection, including variants such as AMDF (Average Magnitude Difference Function), ASDF (Average Squared Difference Function),  YIN, and MPM,  are quite expensive in terms of CPU cycles required (ACF is basically an N² operation for N samples).

Continue reading

Fast and Efficient Pitch Detection: Double Trouble

      DSP, Electronics, Infinity, Pitch Detection, Software

This D string was driving my pitch detector nuts. It’s jumping from fundamental to octave and back all over the place. Can’t make up its mind! The effect is like a wacko version of Satch with a whammy pedal gone haywire.

What the hell am I talking about? Last month, I wrote about a fast and efficient software multichannel pitch detection scheme using dual peak-detectors. I needed it to be as efficient as possible, so I can run multiple detectors simultaneously using a small 32 bit microcontroller (MCU). Most of the time, it works really well, except in some cases, like that troublesome D string.

Continue reading

Fast and Efficient Pitch Detection

      DSP, Electronics, Infinity, Pitch Detection, Software

Phase Accurate Synthesizer (blue) Tracking Guitar (yellow)

I needed to implement real-time, multichannel pitch detection in software using a small ARM Cortex-M4 microcontroller (MCU). My all-time favorite is the STM32F4 family from STMicroelectronics. It has DSP and single precision FPU instructions and can reach up to 225 DMIPS/608 CoreMark at up to 180 MHz operating frequency. Not too bad, actually, especially for this class of MCUs, but it can easily get overwhelmed with complex DSP code we normally take for granted in a desktop or laptop machine with multi-cores running in the GHz range.

I’ve been working on this for quite some time now and I am quite pleased with the results. I now have a fast, accurate, low-latency, phase-correct and efficient multichannel pitch detection. I thought I’d like to share. In case you are wondering, no, it is not for note to MIDI conversion, although that is obviously one application.

Continue reading