warren@sniff.dec.com (warren sypteras) (03/22/88)
I'm trying to sole a problem for myself and maybe someone out there in net- land can help. I'm taking samples of a periodic waveform with an A/D converter. I know how often I sample (about 23,000 times/sec) and of course the output is a 12 code representitive of the voltage at the time the sample was taken. The waveform is one of 16 DTMF (touch tones). Each tone (for those who don't know) is made up of 2 sinewave frequencies. Now to the problem.... I'm having a difficult time trying to figure out how to determine which touch tone is being sent. To figure it out I need to take the A/D output and transform the sampled voltages into the 2 frequencies being sent. I can then go to a lookup table to determine the button being pressed on the touch tone pad. Frankly, it's been along time since I've had calculus, but looking through a book on fft's, I couldn't see where it would do the trick. Does anyone out there know a good technique to use for this type of problem? If some- one has an algorithm (Pascal I hope, though I'll translate anything) that would be nice. Now, to complicate the problem...I'm trying to decode touch-tones sent via radio. So, varying audio levels and varying amounts of noise will be present. Any hints????? Warren
martin@entropy.ms.washington.edu (Don Martin) (03/22/88)
Here are a few suggestions. An FFT based spectral analysis is probably overkill. If the tones frequecies are stable and accurate, a simple correlation of a half dozen or so cycles with a reference will do for sine waves. ( use sin/cosine pairs and correlate both ) This will depend on noise levels too. For digital filter software in FORTRAN ( ugh ) see the IEEE book on signal processing software. It has filter design programs. Don Martin