Mercurial > hg > may
view yetilab/stream/syntheticstream.yeti @ 101:2bc6534248fe
Tidier comments
author | Chris Cannam |
---|---|
date | Thu, 21 Mar 2013 21:53:13 +0000 |
parents | d0abc9afe608 |
children | ed7e1fb91745 |
line wrap: on
line source
module yetilab.stream.syntheticstream; str = load yetilab.stream.stream; vec = load yetilab.block.fvector; block = load yetilab.block.block; generated rate generator seconds = str.monoStream { var position = 0, len = int(seconds * rate + 0.5), rate, read count = (rc = min count (len - position); result = vec.zeros rc; for [0..rc-1] do i: result[i] := generator ((position + i) / rate) done; position := position + rc; block.block result), close = \(), }; sinusoid rate freq seconds = generated rate (sin . (* (freq / (2*pi * rate)))) seconds; whiteNoise rate seconds = generated rate \((Math#random() * 2.0) - 1.0) seconds; precalculated rate data is number -> ~double[] -> 'a = (n = vec.length data; str.monoStream { var position = 0, len = n, rate, read count = (rc = min count (len - position); result = vec.rangeOf data position rc; position := position + rc; block.block result), close = \(), }); { generated, precalculated, sinusoid, whiteNoise, }