samer@32: function x=unbuffer(X,hop,H) samer@32: % unbuffer - overlap-and-add signal reconstruction (opposite of buffer) samer@32: % samer@32: % unbuffer :: samer@32: % [[N,T]] ~'overlapping frames', samer@32: % natural ~'hop size', samer@32: % ([[N]] | N:natural->[[N]]) ~'window or window function' samer@32: % -> [[T]]. samer@32: samer@32: samer@32: [N L]=size(X); samer@32: T=N+(L-1)*hop; samer@32: x=zeros(T,1); samer@32: K=1:N; samer@32: if (nargin<3), H=hanning(N); samer@32: elseif ~isnumeric(H) samer@32: % assume it's a window function handle samer@32: H=feval(H,N); samer@32: end samer@32: samer@32: for k=1:L samer@32: x(K)=x(K)+H.*X(:,k); samer@32: K=K+hop; samer@32: end samer@32: