Simple DTMF Encoder & Decoder

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

186 Downloads

Updated 30 Sep 2022

From GitHub

View License on GitHub

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 (2022). Simple DTMF Encoder & Decoder (https://github.com/291ce4321ac/dgm-dtmf-example/releases/tag/v1.0.1.4), GitHub. 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!

FEX_dependencies/ifversion_fex

FEX_dependencies/subplot_tight

To view or report issues in this GitHub add-on, visit the GitHub Repository.
To view or report issues in this GitHub add-on, visit the GitHub Repository.