Fs=44100;
dr=dir('*.wav');
if length(dr)>0
nm=[];
for fc=1:length(dr)
fln=dr(fc).name;
lfln=length(fln);
ns=fln(1:lfln-4);
nm=[nm str2num(ns)];
end
[nms ind]=sort(nm);
L=length(dr);
ca=cell(L);
for fc=1:length(dr)
[s1 Fs1]=wavread(dr(ind(fc)).name);
s=resample(s1,2,1);
ca{fc}=s;
end
%soundsc(ca,44100);
end
hp=semilogx(0,0,'b-');
xlim([10 10000]);
ym=1e5;
ylim([0 ym]);
a4n=49;
hold on;
hp1=semilogx([10],[0.3*ym],'rx');
ht=title(' ');
legend('spectum','fundamental frequency');
frr=10; % frames rate
t=0;
tfr=0; % times for frames;
clear F;
frc=1;
sa=[];
for Lc=1:L
ss=ca{Lc};
sound(ss,Fs);
fss=fft(ss);
L2=round(length(fss)/2);
i1=1:L2;
fss2=fss(i1);
f=(Fs/2)*i1/i1(end);
set(hp,'XData',f,'Ydata',abs(fss2).^2);
nc=Lc-a4n;
ftc=440*2^(nc/12);
set(hp1,'XData',[ftc]);
set(ht,'string',number2note(nc))
xlim([10 10000]);
ylim([0 ym]);
drawnow;
t=t+length(ss)*(1/Fs);
while 1
F(frc)=getframe(gcf);
frc=frc+1;
tfr=tfr+(1/frr);
if tfr>=t
break;
end
end
sa=[sa; ss];
pause(length(ss)*(1/Fs));
end
movie2avi(F,'piano','compression','none','fps',frr); % uncoment this to save the movie to avi file
wavwrite(sa,Fs,'../piano_st.wav');