Speaker as Phone Dialer
The Goal
To program a telephone dialer that makes phone calls using computer synthesized sounds (Dual-Tone Multi-Frequency (DTMF) tones).
Procedure
Pick up the handset of an ordinary DTMF telephone.
Play the synthesized sounds.
Done!
(Note: It might not support phones with digital interface.)
|
Examples of synthesized DTMF tones,
dial('13800138000');
[The ChinaMobile SIM card recharging service ->]
dial('8884737267');
[The US number of GRE Scores by Phone Service ->] |
The Code
To have a try, please save the following Matlab script to dial.m, and call it as dial('123-456-7789').
%DIAL.M synthesizes sound to make a phone-call.
% Example Usage:
% dial('123-456-7789');
function dial(number_str)
[tmp len] = size(number_str);
for i=1:len
c = number_str(i);
if c>='1' && c<='9'
idx = c-'0';
elseif c=='*'
idx = 10;
elseif c=='0'
idx = 11;
elseif c=='#'
idx = 12;
else
idx = 0; % Nop
end
SoundOne(idx);
end
end
function SoundOne(idx)
% Buttons 1 2 3 4 5 6 7 8 9 * 0 #
Frequency_L = [697 697 697 770 770 770 852 852 852 941 941 941];
Frequency_H = [1209 1336 1477 1209 1336 1477 1209 1336 1477 1209 1336 1477];
Fs = 8192; % Sample Rate
TimeLen = 1/3; % TimeLength
if idx~=0
x = 1:Fs*TimeLen/2; % Sound for TimeLength/2
y_L = sin(2*3.14159265/(1/Frequency_L(idx)*Fs)*x);
y_H = sin(2*3.14159265/(1/Frequency_H(idx)*Fs)*x);
y = (y_L+y_H)/2;
sound(y, Fs);
end
pause(TimeLen);
end |
[Go to my Homepage]
Page last updated:
December 30, 2007 8:21 PM
|