Gutar Tuner

schematic
pcb

Outcomes

  • 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
  • Display Control
    • Wrote custom SPI display driver for TFT display
    • Designed custom images for TFT display