# Create rapid beeping tone in matlab

5 views (last 30 days)
Michael Boyle on 27 Nov 2021
Edited: DGM on 27 Nov 2021
I am trying to use sound( ) or some other function to create a rapid beeping tone at a specified frequency. The sound( ) function only seems to let me create a continuous smooth tone, is there a way to create a discontinious tone that beeps rapidly?

DGM on 27 Nov 2021
Edited: DGM on 27 Nov 2021
Depends how you want to do it. I bet there's lots of ways.
I just made a piecewise signal and played it.
fs = 8192;
toneduration = 0.1;
spaceduration = 0.05;
tonefreq = 800;
nbeeps = 15;
t = linspace(0,toneduration,round(toneduration*fs));
y = 0.8*sin(2*pi*tonefreq*t); % tone
ys = zeros(1,round(spaceduration*fs)); % space
Y = [repmat([y ys],[1 nbeeps-1]) y]; % the whole signal
sound(Y,fs);
If you didn't want to have to generate the entire vector, maybe you could just use the y vector by itself and then play it in a loop, pausing afterwards each time. That would allow beeping indefinitely without needing a giant precalculated vector, but you'll have to wrangle the audio tools such that they behave as needed.
Something like this:
fs = 8192;
toneduration = 0.1;
spaceduration = 0.05;
tonefreq = 800;
nbeeps = 15;
t = linspace(0,toneduration,round(toneduration*fs));
y = 0.8*sin(2*pi*tonefreq*t);
a = audioplayer(y,fs);
for k = 1:nbeeps
play(a)
pause(spaceduration)
end
I couldn't get this to work using sound(). Audioplayer seems to work, but it's glitchy.

R2021a

### Community Treasure Hunt

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

Start Hunting!