Mercurial > hg > may
changeset 13:5da01c5a5e1f
Fixes to naming and indexing in framer
author | Chris Cannam |
---|---|
date | Fri, 14 Dec 2012 09:29:29 +0000 |
parents | 2afcb56f57b1 |
children | ff66f7df30bf |
files | framer.yeti |
diffstat | 1 files changed, 20 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/framer.yeti Thu Dec 13 16:21:07 2012 +0000 +++ b/framer.yeti Fri Dec 14 09:29:29 2012 +0000 @@ -4,29 +4,33 @@ vec = load fvector; af = load audiofile; -flist2 blocksize hopsize file saved is number -> number -> 'a -> ~double[] -> 'b = +blockList blocksize file = + if af.finished? file then + (af.close file; [] ); + else + af.readMono file blocksize :. \(blockList blocksize file); + fi; + +overlappingBlockList blocksize hopsize file buffer + is number -> number -> 'a -> ~double[] -> 'b = if af.finished? file then (af.close file; [] ); //!!! wrong! need unit tests! need to read from any stream, not only a file, to facilitate that else - block = af.readMono file blocksize; + block = af.readMono file hopsize; blen = vec.vectorLength block; - for [0..blen-1] do i: saved[hopsize + i] := block[i] done; - for [blen..blocksize-1] do i: saved[hopsize + i] := 0.0 done; - v = vec.subVector saved 0 blocksize; - for [0..blocksize-1] do i: saved[i] := saved[i + hopsize] done; - v :. \(flist2 blocksize hopsize file saved); + for [0..blen-1] do i: buffer[blocksize - hopsize + i] := block[i] done; + for [blen..hopsize-1] do i: buffer[blocksize - hopsize + i] := 0.0 done; + v = vec.subVector buffer 0 blocksize; + for [hopsize..blocksize-1] do i: buffer[i - hopsize] := buffer[i] done; + v :. \(overlappingBlockList blocksize hopsize file buffer); fi; -flist blocksize file = - if af.finished? file then - (af.close file; [] ); - else - af.readMono file blocksize :. \(flist blocksize file); - fi; +overlappingFrames blocksize hopsize filename = + overlappingBlockList blocksize hopsize (af.open filename) + (new double[blocksize]); -overlappingFrames blocksize hopsize filename = flist2 blocksize hopsize (af.open filename) (new double[blocksize + hopsize]); - -frames blocksize filename = flist blocksize (af.open filename); +frames blocksize filename = + blockList blocksize (af.open filename); { frames, overlappingFrames