samer@0: % sinkfun - sink that calls given function with samples. samer@3: classdef sinkfun < sinkbase samer@0: properties (GetAccess=private,SetAccess=immutable) samer@0: fun % [[C,N]]->void samer@0: end samer@0: methods samer@0: function s=sinkfun(fun,channels,rate) samer@0: s.fun=fun; samer@3: s=s@sinkbase(channels,rate); samer@0: end samer@0: samer@0: function s=tostring(sig) samer@0: s=sprintf('sinkfun(%s)',tostring(sig.fun)); samer@0: end samer@0: samer@0: function s=construct(sig) samer@0: fun=sig.fun; samer@0: t=0; samer@0: samer@0: s.start = @nop; samer@0: s.stop = @nop; samer@0: s.dispose = @nop; samer@0: s.writer = @writer; samer@0: samer@0: function w=writer(n) samer@0: w = @next; samer@0: T=(0:n-1)/rate(sig); samer@0: dt=1/rate(sig); samer@0: function rem=next(x), samer@0: m=size(x,2); samer@0: fun(t+T(1:m),x); rem=0; samer@0: t=t+n*dt; samer@0: end samer@0: end samer@0: end samer@0: end samer@0: end