annotate audio/@linein/linein.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents 63cefb01cbab
children
rev   line source
samer@0 1 % linein - Live input signal
samer@0 2 %
samer@0 3 % linein ::
samer@0 4 % C:natural ~'desired no. of channels',
samer@0 5 % R:nonneg ~'desired sample rate',
samer@0 6 % options {
samer@0 7 % bufsize :: natural/0 ~'desired buffer size, 0 is auto'
samer@0 8 % }
samer@0 9 % -> signal(C,R).
samer@0 10 classdef linein < sigbase
samer@0 11 properties (GetAccess=private, SetAccess=immutable)
samer@0 12 opts
samer@0 13 end
samer@0 14 methods
samer@0 15 function s=linein(channels,rate,varargin)
samer@0 16 s=s@sigbase(channels,rate);
samer@42 17 s.opts = options('bufsize',0,'bits',16,'quiet',0,varargin{:});
samer@0 18 end
samer@0 19 function c=tostring(sig), c='linein'; end
samer@0 20
samer@0 21 function s=construct(sig)
samer@0 22 import javax.sound.sampled.*;
samer@46 23 import ishara.audio.*;
samer@0 24
samer@0 25 src=LineSource(audio_format(sig.channels,sig.rate,sig.opts.bits),sig.opts.bufsize);
samer@0 26 ref=disposables('reg',src);
samer@42 27 if ~sig.opts.quiet
samer@42 28 fprintf('\nOpened audio input device:\n %s\n',char(src.toString));
samer@42 29 fprintf(' Actual buffer size is %d.\n',src.getLine.getBufferSize);
samer@42 30 end
samer@0 31
samer@0 32 s.stop = @stop;
samer@0 33 s.start = @start;
samer@0 34 s.dispose = @dispose;
samer@0 35 s.reader = @reader;
samer@0 36
samer@0 37 s.getLine = @()src.getLine();
samer@0 38
samer@0 39 function start, src.start(); src.check(); end
samer@0 40 function stop, src.check(); src.stop(); end
samer@0 41 function r=reader(n)
samer@0 42 ch=sig.channels;
samer@0 43 rdr=src.reader(ch*n);
samer@0 44 r=@next;
samer@0 45 function [x,rem]=next
samer@0 46 x=reshape(rdr.next(),ch,n); rem=0;
samer@0 47 end
samer@0 48 end
samer@0 49
samer@0 50 function dispose
samer@0 51 disposables('dereg',ref);
samer@0 52 src.dispose();
samer@0 53 end
samer@0 54 end
samer@0 55 end
samer@0 56 end