UNPKG

@thi.ng/colored-noise

Version:

Customizable O(1) ES6 generators for colored noise

19 lines (18 loc) 494 B
import { ctz32 } from "@thi.ng/binary/count"; import { DEFAULT_OPTS } from "./api.js"; import { preseed, sum } from "./utils.js"; function* pink(opts) { const { bins = 8, scale, rnd } = { ...DEFAULT_OPTS, ...opts }; const state = preseed(bins, scale, rnd); const invN = 1 / bins; let acc = sum(state); for (let i = 0; true; i = i + 1 >>> 0) { const id = ctz32(i) % bins; acc -= state[id]; acc += state[id] = rnd.norm(scale); yield acc * invN; } } export { pink };