Mercurial > hg > may
changeset 29:3b237a05e785
Simplify framer
author | Chris Cannam |
---|---|
date | Thu, 20 Dec 2012 23:17:08 +0000 |
parents | 7c1f0996b1f7 |
children | 45a57e2fb4ae |
files | framer.yeti |
diffstat | 1 files changed, 8 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/framer.yeti Thu Dec 20 23:11:13 2012 +0000 +++ b/framer.yeti Thu Dec 20 23:17:08 2012 +0000 @@ -20,16 +20,16 @@ overlappingBlockList bs hop stream valid buffer is number -> number -> 'a -> number -> ~double[] -> 'b = - (b = stream.readMono hop; + ( + b = stream.readMono hop; obtained = block.length b; samples = block.unblock b; - // Shift existing buffer down by hop - for [hop..bs-1] do i: buffer[i-hop] := buffer[i] done; - - // Copy hop new elements in from samples (and extra zeros if needed) - for [0..obtained-1] do i: buffer[bs-hop+i] := samples[i] done; - for [obtained..hop-1] do i: buffer[bs-hop+i] := 0.0 done; + // Retain blocksize - hop samples from old buffer, add hop samples + // (zero-padded if necessary) just read + buffer = vec.concat + (vec.rangeOf buffer hop (bs-hop)) + (vec.resizedTo hop samples); // Number of "valid" elements (not tail-end zero-padding) left in buffer remaining = valid - (hop - obtained); @@ -38,8 +38,7 @@ stream.close (); []; else - // Copy buffer to return - v = block.block (vec.copyOf buffer); + v = block.block buffer; v :. \(overlappingBlockList bs hop stream remaining buffer); fi);