Create rapid beeping tone in matlab
41 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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?
0 comentarios
Respuestas (1)
DGM
el 27 de Nov. de 2021
Editada: DGM
el 27 de Nov. de 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.
0 comentarios
Ver también
Categorías
Más información sobre Audio and Video Data en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!