Mercurial > hg > may
view syntheticstream.yeti @ 57:08b2b9fce25c
Remove the complex constants; they're not very useful and pollute the namespace
author | Chris Cannam |
---|---|
date | Wed, 09 Jan 2013 21:35:37 +0000 |
parents | 0d03455c105b |
children |
line wrap: on
line source
module syntheticstream; str = load stream; vec = load fvector; block = load 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, }