image thumbnail

Simple DTMF Encoder & Decoder

version 1.0.1.3 (12.5 KB) by DGM
Simple tools for demonstrating encoding and decoding a sequence of DTMF tones.

38 Downloads

Updated 20 May 2021

View License

This is a relatively simple implementation intended mainly to help deal with questions asked by students. These should not require any special toolboxes and should be more clearly understandable to new users. Tested in R2019b, R2015b, and R2009b.
I make no assurance of the robustness of this implementation in practical applications.
% %%%%%%%%%%%%%%%%%%%%%%%%%%
SIGNAL = dtmfencode(KEYS,{OPTIONS})
Encode a sequence of DTMF tones in an audio signal.
Each tone in the sequence is separated by a period of silence.
The minimum typical tone and space duration used by equipment
is 40 ms.
KEYS is a character vector made from the keys on a 4x4 keypad:
 123A
 456B
 789C
 *0#D
OPTIONS are key value pairs:
 'toneduration' specifies the length of the tones (default 0.2s)
 'spaceduration' specifies the intertone silence (default 0.1s)
 'fs' specifies sampling frequency (default 8000 Hz)
Output SIGNAL is a vector describing a time-domain audio signal
% %%%%%%%%%%%%%%%%%%%%%%%%%%
KEYS = dtmfdecode(SIGNAL,{SAMPLEFREQ})
Decode a sequence of DTMF tones in an audio signal.
If called without any output arguments, a figure window
will be opened, displaying the tone spectra and frequency
bins associated with the DTMF source tones.
Each tone in the sequence should be separated by a period of
silence. For normalized signals, the minimum tone duration
and spacing are both well below 40ms.
SIGNAL is a vector describing a time-domain audio signal.
SAMPLEFREQ is the sampling frequency used by SIGNAL (Hz)
 This is expected to be at least 3300. (default 8000)
Output KEYS is a character vector
Example:
mysignal = dtmfencode('8675309');
themdigits = dtmfdecode(mysignal);

Cite As

DGM (2021). Simple DTMF Encoder & Decoder (https://www.mathworks.com/matlabcentral/fileexchange/91500-simple-dtmf-encoder-decoder), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2019b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

dtmf_tools

dtmf_tools/FEX_dependencies/ifversion_fex

dtmf_tools/FEX_dependencies/subplot_tight