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
|