# DTMF Signaling

The telephone network is designed to carry voice signals. Nonetheless, it is frequently asked to carry other types of signals. A simple and ubiquitous example is telephone numbers. Your telephone has to communicate with the phone company central office the phone number you are intending to call. It has to do that over circuits designed to carry voice signals. Moreover, you may connect to a long-distance carrier distinct from your local service provider before supplying the phone number you want to call. Or you may connect to some service that asks you to enter your credit card number or account number, or asks you to respond to certain questions by pressing buttons on your telephone keypad.

A system is needed that has the following structure:

It converts sequences of numerical digits into signals that will easily traverse circuits designed for voice. The internationally standardized way to do that is *DTMF signaling*, or dual-tone, multi-frequency. DTMF signaling converts decimal digits (and the symbols '*' and '#') into sounds that share enough essential characteristics with voice to easily traverse circuits designed for voice.

Here is an illustration of DTMF. Enter a phone number in the entry box, and then type return.

The sound you hear is the DTMF signal for the number you entered. The number can include any of the digits {0,1, ... ,9} plus the symbols '*' and '#'. The above applet also understands the special symbol ',' (a comma), which will produce a pause of approximately one second. All other symbols are ignored.

The DTMF coder is thus a function that maps a phone number into a voice-like signal. Let *Digits* = {0, 1, ..., 9, '*', '#'} be the set of digits that a telephone keypad can produce. Let *Indices* = {1, ..., *N*}. An *N* digit phone number, therefore, is a function

*PhoneNumber*: *Indices* → *Digits*.

Of course, not all sequences of digits are valid phone numbers, so the set of all valid *N* digit phone numbers is a subset of the set of *N*-digit sequences,

*PhoneNumbers* ⊂
[*Indices* →
*Digits*].

Recall that sound is

*Sound* : *Time* →
*Pressure*.

The set of all sounds is the function space

*Sounds* = [*Time* →
*Pressure*].

Thus, the above system is a function that maps a function *PhoneNumber* into a function *Sound*. I.e., the DTMF signaling system is a function

*DTMF* : *PhoneNumbers* →
*Sounds*.

Both the domain and the range of this function are sets of functions.

Specifically, the way DTMF signaling works is that each digit is transformed into a pair of tones (hence the name, *dual tone, multi-frequency*). The tones are determined from the telephone keypad as follows:

There are four frequencies associated with the four rows, and three frequencies associated with the three columns. Each key then specifies two frequencies. The DTMF signal for that key is the sum of two sinusoidal waves, one at each frequency. So for example, the digit '4' translates into a sound with two tones, one at 770 Hz. and the other at 1209 Hz.