[comp.lang.pascal] Freq. of sampled waveform.

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