I had an idea for a project that consists on finding the notes that are being played on a classical guitar using an Arduino. Now, I've never used an Arduino before, so I'm not sure if this is doable or if there is a better way.

I need to detect the frequency of each string, and then try to match that frequency to the correct note. I can't just use 1 single sensor for all the strings, because each note can be on several positions on the fretboard. The information would then be transmitted wirelessly to a computer. It could be the raw information (to be processed by the computer) or the board could do the hard work itself, but maybe that would increase latency.

Do you have any suggestions on how to do this? Is there an optical sensor that can detect the frequency at which a string vibrates and that could be placed beneath each string?

  • \$\begingroup\$ For tips, have a look at guitar tuner projects for Arduino/AVR like this one myplace.nu/avr/gtuner \$\endgroup\$ – Toby Jaffey Sep 19 '11 at 11:38
  • \$\begingroup\$ Optical sensor would just be taking the place of a pickup. A separate sensor for each string would make it easier \$\endgroup\$ – endolith Sep 19 '11 at 20:07

What you need to do is sample the sound into a waveform and then run a Fast Fourier transform on it.

I very much doubt that the Arduino is powerful enough to do this. I would suggest instead using something more in tune with digital signal processing, such as a dsPIC or other DSP based microcontroller.

  • \$\begingroup\$ Will you please suggest a particular dsPIC that you think is suitable for the job. Thanks. \$\endgroup\$ – lyassa Jun 12 '12 at 22:10

Calculating the notes from the sound is a huge task. In fact, it was solved the first time just a few years ago. Sorry, I seem to be unable to find the reference to the scientific article. As far as I am aware, there is not yet a commercial product that solves this task.

For instruments that can only produce one note at a time, the FFT approach can work.

For polyphonic instruments like a guitar, it is quite a bit more difficult.

On an electrical guitar it is comparatively easy because sensors exist for each string.

A classical guitar does not offer the way of detecting strings made of metal.

Maybe optical detection for each string might work: http://www.crackajack.de/2011/07/15/inside-a-guitar-pov-video/

I think the bigger task is to have a sensor setup that actually detects what is going on with the strings, regardless of how the data is going to be processed.

  • 1
    \$\begingroup\$ Electric guitars don't usually have separate sensors for each string, but yes, that would help by dividing it up so you only need to detect one fundamental frequency for each, instead of polyphonic. \$\endgroup\$ – endolith Sep 19 '11 at 20:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.