% aspecsyn - Spectral synthesis arrow
%
% aspecsyn ::
%    N:natural,
%    M:natural,
%    (N:natural-> [[N]]) ~'window function'
% -> arrow( {[[N]]}, {[[M]]}, _).
function o=aspecsyn(N,M,windowfn)
	o = (arr(@spec2fir) + asampler(@randn,[N,1])) ...  % FIR filter coefficients  and white noise
	    * adynfir(N,N) * amult(spdiag(windowfn(N))) ... % windowed sample buffers
		 * aolapadd(N,M);
end
