Need a circuit to determine if input audio is a single tone or multi-tone.

Thread Starter

Videosplicer

Joined Aug 4, 2025
14
Hi All, I'm looking for a circuit or example of one that can determine if an audio input is a single note or chord. It's for a guitar project, I need a circuit suggestion for a design that gets audio input from a guitar, and then outputs a logic signal that indicates if the input is a note or a chord. I don't need to know what the notes are; just if more than one note is being played simultaneously. After reading the internet, I think the best way to go about this is using multiple band pass filters and checking the peak out puts of them. If more than one shows high peaks, then most likely the input has multiple tones. If only one band has a high peak, that would most likely indicate one note has been played. An Arduino and FFT won't work as the reaction time is too long. I need something that is real-time and the band pass way is close to real time as possible. I've looked into the MSI MSGEQ7 / MSGEQ5 Graphic Display IC's, however their band pass filters are mostly out of the guitar range.

Anyone seen a circuit that can do this or has had to tackle this?
 

Ian0

Joined Aug 7, 2020
13,112
How do you propose to tell the difference between two tones and a single tone with lots of harmonics.
For instance, a guitar note at 100Hz will have harmonics at 200Hz, 300Hz, 400Hz and 500Hz.
What would be the difference between a 100Hz tone with its harmonics and 100Hz and 300Hz tones played simultaneously?
 

Siziff

Joined Aug 4, 2025
1
Multi-harmonic signal, like guitar sound, has stable amplitude (slow down in time).
Multi-tone signal has oscillating amplitude.

Use amplitude detector (or any other non-linear circuit, say, log amplifier), and analyze the presence of a beat frequency.
 

MrChips

Joined Oct 2, 2009
34,698
I am a musician, guitar player, electronics engineer and MCU programmer. I will explain why multiple band pass filters would not work and FFT is your best solution.

The guitar fret board covers over 72 notes. If we were to focus on just the notes around the open strings, you would need 24 highly tuned filters to cover two octaves from the low E on the 6th string (82 Hz) to E on the 1st string (330 Hz).

Let us look at a classic A major chord on the open string formation.
E 82
A 110
E 165
A 220
C# 278
E 330

A major triad chord has the root, third, and fifth notes. For A-major chord, these notes are A, C#, E.
If we wanted to detect these three notes on the top three strings, we would need to differentiate between the following notes:
A 220
C# 278
E 330

A power chord has the root and fifth notes:
A 220
E 330

Three adjacent notes are:
Ab 208
A 220
A# 233

Hence the band-pass filter for the note A at 220 Hz has to have a bandwidth of 12 Hz (±6 Hz or ±3%). And you would need 24 such filters.

Certainly, FFT on an Arduino is not fast enough. There are faster MCUs, such as STM32 ARM MCUs that are capable of performing FFTs in under 1 ms.

For your reference, here are the notes and frequencies on the guitar.

1754301628431.png

Reference: https://douglasniedt.com/frequency-chart-for-notes-on-the-guitar.html
 

BobTPH

Joined Jun 5, 2013
11,482
Agree completely with @MrChips. You best bet is a faster processor (Raspberry Pi, eg.) and FFT plus an algorithm.

I might also point out that if tuning is off by half a semitone, the data will be wrong. An algorithm could adjust for that, fixed filters could not.
 

MrChips

Joined Oct 2, 2009
34,698
When you strum a guitar, it is always a rolled chord.

@MrChips, rolled chord is a piano term, where you roll your hand(s) onto the keyboard so that that the notes of the chord start one after the other.
Of course. It depends on how fast one strums.

The ending two chords of Beethoven's Moonlight Sonata played in Am on the classical guitar is played exactly like that.

moonlight.jpg
 

wayneh

Joined Sep 9, 2010
18,096
Another vote for FFT. The exact tool for the job, it analyzes in the frequency domain instead of the time domain.

But I'm skeptical it (or any tool) can sort out guitar music the way you'd like. It's just too complicated. You might prefer to use something like The Amazing Slow Downer combined with your own hearing.

Maybe if you can elaborate on the big picture of what you want to accomplish?
 
Last edited:

MisterBill2

Joined Jan 23, 2018
27,312
To elaborate on post #6, which is certainly correct, you need a FAST A/D converter and a VERY FAST algorithm to determine if it is a sine wave or not. A combination of tones will not be a sine wave, single tone.
 

MisterBill2

Joined Jan 23, 2018
27,312
Certainly it is possible to pluck a single string on an electric guitar. Even I can do that!! Consider that there are no "single string " chords!!
 

MisterBill2

Joined Jan 23, 2018
27,312
Actually, what the TS needs is called a spectrum analyzer. Usually not a simple circuit.

WHAT is the intended purpose or application of such a circuit??? Detecting one specific frequency is entirely possible.
 
Top