Software DTMF /tone detection

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From English to

Threaded View
Hi

Is  it possible to do some software DTMF /Tone detection on an ARM (LPC21xx)
?

I need some links to existing code to implement this kind of DSP techniques.
(i am no expert in DSP techniques ) if this type of controller can handle
this.

Johan



Re: Software DTMF /tone detection
Hello Johan,

Quoted text here. Click to load it


With ease. But that would be like going to the grocery store in a
Ferrari Testarossa.

Quoted text here. Click to load it

Go to TI's site and check the app notes for the MSP430. The one at the
bottom of the list is from 1997 and shows how it's done. Includes
generation as well. With an ARM you have a lot more horsepower so you
could forego the coefficient stinginess the author was forced to do.

Regards, Joerg

http://www.analogconsultants.com

Re: Software DTMF /tone detection
snipped-for-privacy@removethispacbell.net says...
Quoted text here. Click to load it

..but it's a Ferrari for less than 5 bucks.

--Gene


Re: Software DTMF /tone detection
On Sat, 7 Jan 2006 01:48:46 +0100, "Sagaert Johan" <sagaert.j  AT
belgacom.net> wrote:

Quoted text here. Click to load it

Here ya go ... http://www.embedded.com/story/OEG20020819S0057

--
Rich Webb   Norfolk, VA

Re: Software DTMF /tone detection
Quoted text here. Click to load it

It is certainly possible.  35 years ago I developed a DTMF
detection system, with the intent of cramming it all into a single
chip of the densities feasible in 1970.  I did the development with
a few cmos small scale chips (gates, 4 bit counters, etc) and a
processor with about a 2 to 5 microsec execution time.

The analog section was a band-splitting filter and two Schmidt
triggers, with their hysteresis levels controlled by the peak
amplitude in the other channel (i.e. a single diode into a
capacitor).  This enforced the 20db? maximum level difference.

After that the processing was measuring periods in the two channels
and accumulating a moving average.  From this I could detect all
tones, insert guard bands between tones, etc.  The system was very
reliable, in that it was extremely hard to induce false signal
detection.

I described it at a meeting of the IEEE about 1971, and shortly
after that had a violent disagreement with the firm.  About two
years later they wanted me to sign a patent application, which was
illegal because over one year had passed since the publication, and
I refused to sign.

As a result I have very little detailed memory of the system, and
there are certainly no handy references.  However, I can be hired
to reinvent it :-)

--
"If you want to post a followup via groups.google.com, don't use
  the broken "Reply" link at the bottom of the article.  Click on
We've slightly trimmed the long signature. Click to see the full one.
Re: Software DTMF /tone detection
Quoted text here. Click to load it

Well I've never tried this, but I've heard from people who seem pretty
knowledgeable about this that you can just count the zero crossings for
a fixed period of time and get a pretty good idea of what button was
being pressed. You may want to do a bit of analog filtering. Current
standards require recognizing the tone within about 50 mSec. The trick
I'm told is to require longer tone duration than that. If you are
trying to decode machine generated dtmf signals this might not be a
good technique, but if there's a human on the other end it might work
fine. If there is some feedback to the user that the keypress was
recognized, you could take a fairly long time to recognize it.

I've heard of folks implementing this technique on a pretty small PIC
and getting it to work, so doing it on an ARM should be a breeze. And
the math should be pretty simple :-)

Mark


Re: Software DTMF /tone detection
Quoted text here. Click to load it

Well I've never tried this, but I've heard from people who seem pretty
knowledgeable about this that you can just count the zero crossings for
a fixed period of time and get a pretty good idea of what button was
being pressed. You may want to do a bit of analog filtering. Current
standards require recognizing the tone within about 50 mSec. The trick
I'm told is to require longer tone duration than that. If you are
trying to decode machine generated dtmf signals this might not be a
good technique, but if there's a human on the other end it might work
fine. If there is some feedback to the user that the keypress was
recognized, you could take a fairly long time to recognize it.

I've heard of folks implementing this technique on a pretty small PIC
and getting it to work, so doing it on an ARM should be a breeze. And
the math should be pretty simple :-)

Mark


Re: Software DTMF /tone detection
On Sat, 7 Jan 2006 01:48:46 +0100, "Sagaert Johan" <sagaert.j  AT
belgacom.net> wrote:

Quoted text here. Click to load it

The ARM is probably fast enough to do a FFT on a number of analog
samples of the DTMF signal. It should then be easy to check at which
frequencies the peak energy of the signal are.

Regards
  Anton Erasmus



Re: Software DTMF /tone detection
On Mon, 09 Jan 2006 13:59:09 +0200, Anton Erasmus

Quoted text here. Click to load it

Is that really computationally efficient ?

I would simply generate the I and Q waveforms for the eight (4+4)
tones, multiply with the input waveform, square the result for each
frequency, add them together (to get the magnitude) and perform some
comparisons.

Paul


Re: Software DTMF /tone detection

Quoted text here. Click to load it

No, it is probably one of the most computationally inefficent
algorithms, but the ARM is so fast that it is a viable algorithm.
The advantage is,  that one can probably decode a DTMF signal within
a random audio signal. Or where the noise level is greater than the
signal level. AFAICR a 1024 point 32-bit integer FFT takes a few 100
microseconds on a 60MHz ARM7.

Regards
  Anton Erasmus


Re: Software DTMF /tone detection
Quoted text here. Click to load it
... snip ...
Quoted text here. Click to load it

That may not be a good thing.  There are specifications for the
ratio of high to low tone level, and for the maximum noise level.
Exceeding these can result in false positives, which may be even
more disastrous than failure to decode.

--
"If you want to post a followup via groups.google.com, don't use
  the broken "Reply" link at the bottom of the article.  Click on
We've slightly trimmed the long signature. Click to see the full one.
Re: Software DTMF /tone detection
Quoted text here. Click to load it

You mean that version ( sorry text is in german, but
pictures should be obvious ):
http://www.embeddedFORTH.de/dtmf.pdf
It was said to run on a 4MHz Z80 decades
ago. But getting it up on a 8MHz 68HC908 again
has proven difficult.

As picture 5 shows during the integration
phase there are only additions. Only
on dumping ( every 20msec ) the contents
of the partial accumulators are mulitplied
and added to the main accumulator.
That approach works only for coarse
approximations of sin/cos but is suited
to CPUs without MUL-opcode. Needs sufficient
RAM.

The wellknown approximation for the
magnitudes are also used:
http://www.embeddedFORTH.de/quad.pdf

MfG  JRD

Re: Software DTMF /tone detection
Quoted text here. Click to load it

This question is from a real beginner, so bear with me if it's a dumb
question, but how does that method account for differences in phase
between the sampled signal and the reference signal?  Obviously, being
out of phase will not cancel out the signal completely when you
multiply, but is it easy to show that you won't in some cases guess
the wrong frequency?  In other words, is it easy to show that the
worst case (phase that results in something that looks least like a
match) for the right signal is still better than the best case for
the wrong signals?

   - Logan

Re: Software DTMF /tone detection
Quoted text here. Click to load it

Multiplying with I and Q separately takes the sine
and cosine components of the incoming wave separately.
The relative values of the sine and cosine components
contain the phase information. When the components are
squared and then added, the phase components cancel out
due to the well-known trigonometric equality, where
sine squared + cosine squared = 1, independent of the
angle for the sine and cosine (of course the same angle
for both). This is essentially the aeons-old Pythagoras'
equation.

--

Tauno Voipio
tauno voipio (at) iki fi

Re: Software DTMF /tone detection
Quoted text here. Click to load it

look up the Goertzel Algorithm.

regards,
DR

Site Timeline