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