Mercurial > hg > ishara
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 |