view dsp/specgrm.m @ 34:c75bb62b90a9

Imported audio synthesis tools.
author samer
date Sun, 20 Jan 2013 19:05:05 +0000
parents c3b0cd708782
children beb8a3f4a345
line wrap: on
line source
%  specgrm - Time-Varying Spectrum
% 
%  specgrm ::
%     X:[[T]]   ~'signal of length T',
%     N:natural | H:[[N]] ~'window length or window', 
%     M:natural ~'hop size',
%     options {
%		   fs :: nonneg/1	~'sampling rate'
%     }
%  -> [[1+N/2,floor(T/M)]] ~'sequence of short term spectra'.  
%
%  Examples:
%     Y1=specgram(x,hanning(256),128,'fs',44100)
%
%  Side Effects
%    Image Plot of the spectrogram if no output

function y=specgrm(x,w,m,varargin)
	if length(w)==1,	H=ones(w,1); 
	else H=w; end
	if nargin<3 m=[]; end
	
	n = length(H); if isempty(m), m=n/2; end
	if n>m, bufargs={'nodelay'}; else bufargs={}; end
	y = powspec(diag(sparse(H))*buffer(zeropad(n-m,x),n,n-m,bufargs{:}));

	% Make Spectrogram Display if no arg out
	if nargout==0
		tfdimage(y,n,m,getparam(prefs(varargin{:}),'fs',1));
		clear y;
	end