function E = lpcBHdec(P,H); % E = lpcBHdec(P,H) Decode LPC residual encoded as pitch periods % P is a vector pitch periods from lpcresenc. Reconstruct a % stylized excitation vector E with a hop size H. % 2001-03-19 dpwe@ee.columbia.edu if nargin < 2 H = 128; end nhops = length(P); npts = H*nhops; E = zeros(1,npts); phs = 0; % Current phase as proportion of a cyle (new pulse at 1.0) for hop = 1:nhops pd = P(hop); base = H*(hop-1); if (pd == 0) E(base+[1:H]) = randn(1,H); else pt = 0; % Steps to next pulse remsteps = round((1-phs) * pd); while (pt + remsteps) < H pt = pt + remsteps; E(base+1+pt) = sqrt(pd); % so rms is 1 remsteps = pd; end % Store residual phase phs = (H - pt)/pd; end end