view arrows/delay.m @ 42:ae596261e75f

Various fixes and development to audio handling
author samer
date Tue, 02 Dec 2014 14:51:13 +0000
parents 672052bd81f8
children
line wrap: on
line source
% delay - arrow implementing a delay line
%
% delay ::
%    W:natural   ~'width of buffer',
%    A           ~'a value to pad delay line with'
% -> arrow({[[N,1]->A]}, {[[N,1]->A]}, {[W]->[[N]->A]}).

function a=delay(n,pad)
	a=loop(@delayfn,@(sz)repmat({repmat(pad,sz)},1,n));
	function [out,buf]=delayfn(in,buf)
		out=buf{1};
		buf=[buf(2:end),{in}];
	end
end