0

I cant seem to find some algorithms to distinguish whether a sound produced is a chord or a single note. I am working on Guitar instrument.

Currently, what I am experimenting on is trying to get the Top 5 frequencies with the highest amplitudes, and then determining if they are harmonics of the fundamental (the one with the highest amplitude) or not. I am working on the theory that single notes contain more harmonics than chords, but I am unsure as to if this is the case.

Another thing I am considering is trying to add in the various amplitude values of the harmonics as well as comparing notes comprising the 'supposed chord' to the result from the FFT.

Can you help me out here? Currently, I am only working on Major and Minor chords first.

desertnaut
  • 57,590
  • 26
  • 140
  • 166
user488792
  • 1,943
  • 7
  • 31
  • 38
  • 5
    This is difficult, in general. And highly dependent on the instrument. Dont be ver optimistic. There are tons of related material, see eg http://stackoverflow.com/questions/4337487/chord-detection-algorithms – leonbloy May 06 '11 at 12:07

2 Answers2

4

Chord recognition is still a research topic. A good solution might require some fairly sophisticated AI pattern matching techniques. The International Society for Music Information Retrieval seems to run an annual contest on automatic transcription type problems. You can look up the conference and research papers on what has been tried, and how well it works.

Also note that the fundamental pitch is not necessarily the frequency with the highest FFT amplitude result. With a guitar, it very often is not.

hotpaw2
  • 70,107
  • 14
  • 90
  • 153
2

You need to think about it in terms of the way we hear sound. Looking for the top 5 frequencies isn't going to do you any good.

You need to look for all frequencies within (Max Frequency Amplitude)/sqrt(2) to determine the chord/not chord aspect of the signal.

Adrian Mole
  • 49,934
  • 160
  • 51
  • 83
Adam
  • 593
  • 7
  • 13