Playing sound one after another, according to number inputed
29 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
if I have multiple sounds that already have specific tones and they're named: y0,y1,y2,y3,y4,y5,y6,y7,y8,y9
how can I make them play one after another without overlapping? the input is random so if the user types in:1,2,3,4 then the sounds y1,y2,y3,and y4 should be played one after the other. Thank you!
[Merged from duplicate question]
prompt = 'Enter atleast 10 numbers: ';
str='0';
while length(regexp(str,'\d'))~=10
str = input(prompt,'s');
end
N=length(str);
count=1;
for k=1:N
m=str2double(str(k));
if isnan(m)==0
str(count)=k;
count=count+1;
numbers = cell2mat(sscanf((str),'k'))
disp(m)
end
end
%sound 1
fs=8192;
T=.5;
t=0:(1/fs):T;
y1=cos(2*pi*1209*t)+cos(2*pi*697*t);
sound(y1,fs);
pause(.5);
%sound 2
fs=8192;
T=.5;
t=0:(1/fs):T;
y2=cos(2*pi*1336*t)+cos(2*pi*697*t);
sound(y2,fs);
pause(.5);
%sound 3
fs=8192;
T=.5;
t=0:(1/fs):T;
y3=cos(2*pi*1477*t)+cos(2*pi*697*t);
sound(y3,fs);
pause(.5);
%sound 4
fs=8192;
T=.5;
t=0:(1/fs):T;
y4=cos(2*pi*1209*t)+cos(2*pi*770*t);
sound(y4,fs);
pause(.5);
%sound 5
fs=8192;
T=.5;
t=0:(1/fs):T;
y5=cos(2*pi*1336*t)+cos(2*pi*770*t);
sound(y5,fs);
pause(.5);
%sound 6
fs=8192;
T=.5;
t=0:(1/fs):T;
y6=cos(2*pi*1477*t)+cos(2*pi*770*t);
sound(y6,fs);
pause(.5);
%sound 7
fs=8192;
T=.5;
t=0:(1/fs):T;
y7=cos(2*pi*1209*t)+cos(2*pi*852*t);
sound(y7,fs);
pause(.5);
%sound 8
fs=8192;
T=.5;
t=0:(1/fs):T;
y8=cos(2*pi*1336*t)+cos(2*pi*852*t);
sound(y8,fs);
pause(.5);
%sound 9
fs=8192;
T=.5;
t=0:(1/fs):T;
y9=cos(2*pi*1477*t)+cos(2*pi*852*t);
sound(y9,fs);
pause(.5);
%sound 0
fs=8192;
T=.5;
t=0:(1/fs):T;
y0=cos(2*pi*1336*t)+cos(2*pi*941*t);
sound(y0,fs);
pause(.5);
this is my whole code and I'm having trouble figuring out how I can get one sound to play after the other depending on what the user inputs so if the user inputs: 4560987321 then I want it to play the sounds in order (y4,y5,y6,y0,y9,y8,y7,y3,y2,y1) thank you!
0 Kommentare
Antworten (2)
Star Strider
am 26 Okt. 2016
You need to use the playblocking function to prevent them from overlapping. This is part of the audioplayer functions, so you should have access to it. See the documentation for details.
0 Kommentare
Massimo Zanetti
am 26 Okt. 2016
Bearbeitet: Massimo Zanetti
am 26 Okt. 2016
Just compute the time T (secs) the file lasts by using sample rate information and number of samples. Then, pause the for loop for the number of seconds (plus 1 if you want delay time of 1 sec. in between). For randomness, arrange files in array and randomize on indeces:
s(1)=load('gong.mat','y','Fs');
s(2)=load('handel.mat','y','Fs');
randsel = randperm(numel(s));
for x=s(randsel)
sound(x.y,x.Fs);
T = numel(x.y)/x.Fs;
pause(T+1);
end
2 Kommentare
Massimo Zanetti
am 27 Okt. 2016
Are you asking how to transform number (say) 5910 into array [5,9,1,0]?
Siehe auch
Kategorien
Mehr zu Audio I/O and Waveform Generation finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!