# (C)2005 Joachim Schueth. Comments have been left out to keep this file short. write.wav = function(u, fname = 'data.wav', rate=44100) { wpair = function(x) { x1 = x %% 65536 x2 = x / 65536 ret = c(x1, x2) ret - 65536 * (ret >= 32768) } head = c(18770, 17990, 0, 0, 16727, 17750, 28006, 8308, 16, 0, 1, 1, 0, 0, 0, 0, 2, 16, 24932, 24948, 0, 0) a = c(0,1) head[a+ 3] = wpair(2 * length(u) + 36) head[a+13] = wpair(rate) head[a+15] = wpair(2 * rate) head[a+21] = wpair(2 * length(u)) head = as.integer(head) writeBin(c(head, as.integer(round(u))), fname, size = 2, endian = "little") } rate = 44100 dt = 1 / rate t = seq(0, 10, dt) nu = 36 nois = nu / sqrt(2 * dt) * rnorm(t) f = 800 chop = (t %% 0.5) < 0.25 doit = function(bw) { fname = sprintf("bw%d.wav", bw) write.wav(nois + chop * nu * sqrt(bw * 2) * sin(2 * pi * f * t), fname, rate) }