annotate signals/@sigarray/sigarray.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 sigarray < signal
samer@1 2 properties (GetAccess=private, SetAccess=immutable)
samer@1 3 fs
samer@1 4 array
samer@1 5 end
samer@1 6 methods
samer@1 7 function s=sigarray(array,rate)
samer@1 8 if nargin<2, rate=nan; end
samer@1 9 s.array=array;
samer@1 10 s.fs=rate;
samer@1 11 end
samer@1 12
samer@1 13 function s=tostring(sig)
samer@1 14 s=sprintf('sigarray(<%dx%d>)',size(sig.array,1),size(sig.array,2));
samer@1 15 end
samer@1 16
samer@1 17 function c=channels(s), c=size(s.array,1); end
samer@1 18 function c=rate(s), c=s.fs; end
samer@1 19 function s=construct(sig)
samer@1 20 array=sig.array;
samer@1 21 ch=size(array,1);
samer@1 22 length=size(array,2);
samer@1 23 pos=0;
samer@1 24
samer@1 25 s.start = @nop;
samer@1 26 s.stop = @nop;
samer@1 27 s.dispose = @nop;
samer@1 28 s.reader = @reader;
samer@1 29
samer@1 30 function r=reader(n)
samer@1 31 r = @next;
samer@1 32 CHUNK = 1:uint32(n);
samer@1 33 function [x,rem]=next
samer@1 34 if pos+n<=length
samer@1 35 x=array(:,pos+CHUNK); rem=0;
samer@1 36 pos=pos+n;
samer@1 37 else
samer@1 38 rem=n-(length-pos);
samer@1 39 x=[array(:,pos+1:end),zeros(ch,rem)];
samer@1 40 pos=length;
samer@1 41 end
samer@1 42 end
samer@1 43 end
samer@1 44 end
samer@1 45 end
samer@1 46 end