UNPKG

@thi.ng/colored-noise

Version:

Customizable O(1) ES6 generators for colored noise

19 lines (18 loc) 520 B
import { DEFAULT_OPTS } from "./api.js"; import { preseed, sum } from "./utils.js"; function* blue(opts) { const { bins, scale, rnd } = { ...DEFAULT_OPTS, ...opts }; const state = preseed(bins, scale, rnd); state.forEach((x, i) => state[i] = i & 1 ? x : -x); const invN = 1 / bins; let acc = sum(state); for (let i = 0, sign = -1; true; ++i >= bins && (i = 0)) { acc -= state[i]; acc += state[i] = sign * rnd.norm(scale); sign ^= 4294967294; yield sign * acc * invN; } } export { blue };