@thi.ng/colored-noise
Version:
Customizable O(1) ES6 generators for colored noise
19 lines (18 loc) • 520 B
JavaScript
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
};