Designed a standalone guitar tuner pedal that can detect pitch with one cent accuracy
Ensured latency is below 100ms for a responsive user expereince.
Allowed the user to choose between standard 9v DC power delivery or battery power.
Implemented a true bypass switch, muting the output signal when active.
Challenges & Solutions
Operating within the memory constraints of the STM32F411 microcontroller,
a frequency domain approach to pitch detection was not feasable due to FFT binning quantization.
A time domain implementation of the YIN pitch detection algorithm was a better fit,
trading off time complexity for memory efficiency.
Due to the limitations of the SPI interface, naively refreshing the entire screen every frame
induced a flickering effect.
Only the parts of the screen that change between frames need to be updated.
The flickering went away once I adjusted the display driver to take advantage of that fact.
When setting the sampling rate at double the highest possible guitar note frequency,
the pitch detection was not accurate across the upper range of the guitar.
The pitch detection needs to account for higher degree harmonics of each note, not just
the fundemental frequency. Raising the sampling rate to 32 kHz solved the problem.
Skills Developed
PCB Design
Designed prototype PCB in KICad
Met JLCPCB manufacturing requriements
Created custom footprint for microcontroller
Signal Processing
Designed amplifier circuit to bias and scale the instrument signal
Implemented custom YIN pitch detection algorithm
Configured ADC for double buffered direct memory access