Does anyone have experience with the Goertzel Algorithm for frequency
detection?
I've been tinkering with doing DTMF decoding on an atmel for a few
evenings, and it's been great fun, but not quite come to fruition.
Right now, I'm trying to get the basic idea working in C code on my
Big Computer, using PCM and AU files as input.
Here's what I've found thus far:
I got the list of frequencies to decode at:
http://en.wikipedia.org/wiki/Dual-tone_multi-frequency
And am trying to use the Goertzel Algorithm (
http://en.wikipedia.org/
wiki/Goertzel_algorithm) for frequency decoding. In this, I'm not
quite getting something right, but I'm not entirely sure what.
My input files are all unsigned ints (8 and 16 bits) at 11.025kHz or
8.0kHz. I normalize the sample points down to the range [0.0, 1.0].
I take my normalized frequency (omega) as 697/11025, with a window of
105 samples. This sort of works, but not really. I'm wondering if
I'm losing state somewhere or something.
I found a handy paper on DTMF decoding at
http://ptolemy.eecs.berkeley.edu/papers/96/dtmf_ict/www/node3.html ;
it leads me to believe that I'm doing this all correctly.
http://www.embedded.com/story/OEG20020819S0057 also looks promising,
but I'm still missing some detail.
I hope to have this working soonish, but figured I should post it to
get the list started on a fun note.
Happy hacking,
--
/jbm