annotate signals/@sigbinop/sigbinop.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents 289445d368a7
children
rev   line source
samer@1 1 classdef sigbinop < signal
samer@1 2 properties (GetAccess=private, SetAccess=immutable)
samer@1 3 op
samer@1 4 sig1
samer@1 5 sig2
samer@1 6 chans
samer@1 7 end
samer@1 8 methods
samer@1 9 function s=sigbinop(f,sig1,sig2,chf)
samer@1 10 if isinf(unify_rates(rate(sig1),rate(sig2))),
samer@1 11 error('Sample rate mismatch');
samer@1 12 end
samer@1 13 if nargin<4,
samer@1 14 chf=@(c1,c2)size(f(zeros(c1,1),zeros(c2,1)),1);
samer@1 15 end
samer@1 16 s.op=f;
samer@1 17 s.sig1=sig1;
samer@1 18 s.sig2=sig2;
samer@1 19 s.chans=chf(channels(sig1),channels(sig2));
samer@1 20 end
samer@1 21
samer@1 22 function c=channels(s), c=s.chans; end
samer@1 23 function r=rate(s), r=rate(s.sig1); end
samer@1 24 function s=construct(sig)
samer@1 25
samer@1 26 s1=construct(sig.sig1);
samer@1 27 s2=construct(sig.sig2);
samer@1 28 op=sig.op;
samer@1 29
samer@1 30 s.start = @start;
samer@1 31 s.stop = @stop;
samer@1 32 s.dispose = @dispose;
samer@1 33 s.reader = @reader;
samer@1 34
samer@1 35 function start, s1.start(); s2.start(); end
samer@1 36 function stop, s1.stop(); s2.stop(); end
samer@1 37 function dispose, s1.dispose(); s2.dispose(); end
samer@1 38 function r=reader(n)
samer@1 39 r1=s1.reader(n);
samer@1 40 r2=s2.reader(n);
samer@1 41 r =@next;
samer@1 42 function [x,rem]=next
samer@1 43 [x1,rem1]=r1();
samer@1 44 [x2,rem2]=r2();
samer@1 45 x=op(x1,x2);
samer@1 46 rem=max(rem1,rem2);
samer@1 47 end
samer@1 48 end
samer@1 49 end
samer@1 50 function s=tostring(sig)
samer@1 51 s=sprintf('(%s <%s> %s)',tostring(sig.sig1),tostring(sig.op),tostring(sig.sig2));
samer@1 52 end
samer@1 53 end
samer@1 54 end