samer@44: % jsndfile - audio signal from audio file using JavaSound only samer@44: % jsndfile :: path, options(sndstream) -> signal(C,R). samer@44: % samer@44: % NB: Javazoom MP3 decoder does not get the length of the signal right. samer@44: function s=jsndfile(file,varargin) samer@44: string=sprintf('jsndfile(''%s'')',file); samer@44: if strncmp(file,'http://',7) samer@44: mkstream = @(q)urlstream(file,q); samer@44: else samer@44: mkstream = @(q)filestream(file,q); samer@44: end samer@44: s=sndstream(mkstream,'stringfn',@()string,varargin{:}); samer@44: end samer@44: samer@44: function [str,cleanup]=filestream(file,q) samer@44: jf=jfile(file); samer@44: if ~jf.exists(), error(sprintf('File %s does not exist',file)); end samer@44: if ~q, fprintf('Opening sound file: %s\n',file); end samer@44: str=austream(java.io.FileInputStream(jf)); samer@44: cleanup=@nop; samer@44: end samer@44: samer@44: function [str,cleanup]=urlstream(url,q) samer@44: jurl=java.net.URL(url); samer@44: % if ~jf.exists(), error(sprintf('File %s does not exist',file)); end samer@44: if ~q, fprintf('Opening URL: %s\n',url); end samer@44: str=austream(jurl.openStream()); samer@44: cleanup=@nop; samer@44: end samer@44: