Skip to content

Instructions – Tuning Fork

Part One: Identifying a Note

It is not straight forward to decode wave/signal data into a musical note. Rather than a simple measure of frequency, a more complex algorithm is required that takes into account the changing nature of sound data across a sample (e.g. harmonics), a process called autocorrection.

Components

Controller Board: Arduino MKR 1010 – https://store.arduino.cc/products/arduino-mkr-wifi-1010

Description

Implement and expand example found on Arduino & Instructables site. Original code and project by http://www.akellyirl.com/. Adapting this base code to run on Arduino MKR1010.

Arduino forum (https://forum.arduino.cc/t/arduino-pitch-detection-in-realtime-using-autocorrelation-and-peak-detection/519783), Instructables (https://www.instructables.com/Reliable-Frequency-Detection-Using-DSP-Techniques/), Reference GitHub Code (https://github.com/akellyirl/AutoCorr_Freq_detect).

Process

  • Download the code from GitHub.
  • Insert into sketch files (remember headers which contains example data).
  • Add additional code to give a lettered output – e.g. ‘C4’.

Problems?

Serial Baud-rate was not compatible with different hardware. Set to 19200 instead.

Result

Input test file correctly identified.

Part 2: Getting audio from a sensor (microphone)

Sampling audio data requires a microphone component. In this case I used the MAX9814, a common basic microphone component.

Components

Description

The microphone component needs to be wired to 0v and 5 v for power, and uses a single anologue pin for output: https://electropeak.com/learn/interfacing-max9814-electret-microphone-amplifier-module-with-arduino/

Process

Wire and code as in above exmaple and audio it output into the serial monitor.

Part 3: Analysing input audio data (live) – combining part 1 & 2

Part 4: Changing Vision – Harmony

Part 5: Modelling and building tuning fork housing.

Part 6: Harmony Board