%[y,Fs,nbits]=wavread('tp1_2.wav');
[y,Fs,nbits]=wavread('Juan_Carlos.wav');
y=y-mean(y);
%------------------------------------------------------------------------
% tM = duracion de un frame en seg
% nM = duracion de un frame en muestras
% M = numero de frames
% P = numero de coeficientes LPC por frame
% A = matriz de coeficientes LPC de todos los frames ordenados por fila
% E = vector columna con las energias de cada frame
% F = vector columna con las frecuencias de cada frame
% y = señal original
% ysintetica = señal sintetizada
%------------------------------------------------------------------------
P=10;
tM=30e-3;
nM=tM*Fs;
ny=length(y);
M=floor(ny/nM);
yframes=rowblock(y(1:nM*M),M,1);
[myframes,nyframes]=size(yframes);
yframesw=[];
for kk=1:nyframes
   yy=yframes(:,kk).*hamming(myframes);
   yframesw=[yframesw,yy];
end
%A=lpc(yframesw,P);
A=lpc(yframes,P);
A=real(A);
E=[];
X=[];
F=[];
N=1024;
w=[0:2*pi/N:2*pi];
for k=1:nyframes
   E=[E;norm(yframes(:,k))^2];
   %X=[X,fft(yframes(:,k).*hamming(length(yframes(:,k))),512)];
   X=[X,fft(yframes(:,k),N)];
   [XX,nn]=max(abs(X(1:N/2,k)));
   FF=Fs*nn/N;
   F=[F;FF];
end
numlpc=[1 zeros(1,P)];
denlpc=A;
a=0.75;
ysintetica=[];
for k=1:nyframes
      %[yglotis,t]=glottal_pulse(Fs,F(k),tM,a);
   [yglotis,t]=tren_impulsos(Fs,F(k),tM);
   [ylpc,xxx]=dlsim(numlpc,denlpc(k,:),(yglotis-mean(yglotis)));
   Eysintetica=norm(ylpc)^2;
   ysintetica=[ysintetica;ylpc*sqrt(E(k))/sqrt(Eysintetica)];
end
%ysintetica=filter([1 -1],[1 0],ysintetica);
%ysintetica=1.5*ysintetica;
