annotate sinks/@sinkfun/sinkfun.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents 3f77126f7b5f
children
rev   line source
samer@0 1 % sinkfun - sink that calls given function with samples.
samer@3 2 classdef sinkfun < sinkbase
samer@0 3 properties (GetAccess=private,SetAccess=immutable)
samer@0 4 fun % [[C,N]]->void
samer@0 5 end
samer@0 6 methods
samer@0 7 function s=sinkfun(fun,channels,rate)
samer@0 8 s.fun=fun;
samer@3 9 s=s@sinkbase(channels,rate);
samer@0 10 end
samer@0 11
samer@0 12 function s=tostring(sig)
samer@0 13 s=sprintf('sinkfun(%s)',tostring(sig.fun));
samer@0 14 end
samer@0 15
samer@0 16 function s=construct(sig)
samer@0 17 fun=sig.fun;
samer@0 18 t=0;
samer@0 19
samer@0 20 s.start = @nop;
samer@0 21 s.stop = @nop;
samer@0 22 s.dispose = @nop;
samer@0 23 s.writer = @writer;
samer@0 24
samer@0 25 function w=writer(n)
samer@0 26 w = @next;
samer@0 27 T=(0:n-1)/rate(sig);
samer@0 28 dt=1/rate(sig);
samer@0 29 function rem=next(x),
samer@0 30 m=size(x,2);
samer@0 31 fun(t+T(1:m),x); rem=0;
samer@0 32 t=t+n*dt;
samer@0 33 end
samer@0 34 end
samer@0 35 end
samer@0 36 end
samer@0 37 end