samer@34: function X=fir2snd(A,u) samer@34: % fir2snd - Generate sound by applying FIR filters to a noise grain samer@34: % samer@34: % fir2snd :: samer@34: % [[N,L]] ~'array of M FIR filters of length N', samer@34: % ([[M]] | seq([[M]])) ~'noise grain or sequence of noise grains' samer@34: % -> [[abs(M-N)+1,L]] ~'columns of filtered noise'. samer@34: samer@34: n=size(A,1); samer@34: l=size(A,2); samer@34: m=size(u,1); samer@34: samer@34: % want to extract the valid portion of the convolution only samer@34: if m>n, seg=n:m; samer@34: else seg=m:n; end samer@34: samer@34: if ~isseq(u), u=repeat(u); end samer@34: samer@34: X=zeros(length(seg),l); samer@34: for k=1:l samer@34: x=conv(A(:,k),head(u)); samer@34: X(:,k)=x(seg); samer@34: u=next(u); samer@34: end samer@34: samer@34: