function a=spectraldata(source,specfn,windowfn)
% SPECTRALDATA - Spectral data from buffered frames
%
% spectraldata :: (
% 	source:   seq[n,l],			~	source data 
%	specfn:   [n,l]->[m,l],		~ compute spectrum from frames
%  windowfn: (n:natural->[n])	~ function to compute window, eg hanning
% ) -> seq[m,l]

	H=spdiag(feval(windowfn,size(source,1)));
	a=map(@(x)specfn(H*x),source);
	%a=fnseq(fn,source,'charfn',@charfn);

%	function s=charfn(o)
%		s=sprintf('%s >> %s/%s',char(source(o)),tostring(specfn),tostring(windowfn));
%	end
end

