Package Exports
- @thi.ng/colored-noise
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@thi.ng/colored-noise) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
This project is part of the @thi.ng/umbrella monorepo.
About
Customizable O(1) ES6 generators for colored noise.
Colored noise is useful for a wide variety of use cases where a more controlled approach to random number generation is required, from DSP/synthesis to rendering, geometry generation, animation etc.
The following noise colors are available and illustrated via their power
spectrums / histograms (averaged 1000 runs @ 256 samples each). Each noise gen
is configurable in terms of number of internal RNG states, value range (default:
[-1..1)
interval, always centered around 0) and the actual backing PRNG
implementation (default: Math.random
, see
@thi.ng/random
for alternatives).
Code ported from Java, C & Clojure implementations and other references/literature (see links in doc strings). Furthermore, all generators have been refactored to be O(1).
In alphabetical order:
Blue noise
High-pass filtered noise (opposite of red) - Source
blue2
▁▁▁▂▂▂▃▄▄▄▅▅▅▅▅▆▆▆▆▇▇▇▇▇▇▇█▇▇███▇
▁▁▂▃▄▄▅▆▇▆████████████████████████████████████
▂▃▄▅▇███████████████████████████████████████████████
▃▆▇█████████████████████████████████████████████████████
▁▅▇█████████████████████████████████████████████████████████
▂▆████████████████████████████████████████████████████████████
▂▇██████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
blue4
▁▁▂▄▄▄▆▆▇█▇▆██▇
▁▃▄▇▇████████████████
▁▄▆██████████████████████
▁▄▅▆▇▇███████▇▇▆▄▃▁ ▄▇█████████████████████████
▃▅████████████████████▇▅ ▄████████████████████████████
▄██████████████████████████▄ ▁██████████████████████████████
▂██████████████████████████████▇███████████████████████████████
▃███████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
blue16
▃▅▇
▂████
▄█████
▂▅▅▃ ▂██████
▂▅▄▁ ▆████▅▁███████
▂ ▁▄▃ ▁▅▇▇▃ ▆████▂ ▅██████████████
▂▆█▆▂ ▂▆█▆▃ ▄███▅ ▆███▇ ▁█████▄ ▆██████▅███████████████
▃█████▄ ▃█████▄ ▅█████▆ ▇██████▁███████▇███████████████████████
███████▅███████▆███████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
blue32
▆
██
▅██
▅▃ ███
▃ ▆██████
▂ ▇▃ ▆██▃███████
▂ ▅ ▂▇▃ ▅█▆ ███▄███████████
▃ ▃ ▄ ▄ ▄ ▁▇▂ ▂█▃ ▄█▄ ▆█▇ ███▁███▄███▇███████████████
▇██ ▇██ ███ ███ ███▁███▂███▄███▅███▇███████████████████████████
███████▇███████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
Green noise
Band-pass filtered noise (interleaved blue noise, opposite of violet) - Source
green4
▂▃▅▆▇▇█▇▇▇▆▅▄▃▂
▃▅█████████████████▆▃
▄███████████████████████▄ ▁▁
▂▅▇█████▅▁ ▂███████████████████████████▁ ▂▅▇████▇▅▂
▁▆██████████▅ ▂█████████████████████████████▂ ▅██████████▆▁
▂██████████████▅███████████████████████████████▆██████████████▂
▁███████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
green16
▅▆▅
████▇
▅█████▆
▄▃ ███████ ▃▄
▄▁ ▆██████████▇██▆ ▁▄
▁ ▃ ▁▇▄ ▇██▄███████████████▄██▇ ▃█▁ ▄ ▁
▂▇▃ ▃█▄ ▅█▆ ▇██ ███▅███████████████████████▅███▁███ ▅█▅ ▄█▄ ▄▇▂
███▃███▄███▆███████████████████████████████████████▆███▄███▃███
▅███████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
green32
▆
███
███
▅▆███▆▄
▅ ███████ ▄
▂ ▇▂███████████▂▆ ▁
▁ ▄ ▇▁█▆███████████████▆█▂▇ ▄ ▂
▄ ▃ ▄ ▄ ▅ ▆ ▇▁█▃█▅█▇███████████████████████▇█▄█▃█▁▇ ▆ ▅ ▄ ▃ ▃ ▃
█▅█▅█▅█▆█▇███████████████████████████████████████████▇█▇█▅█▅█▄█
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
Pink noise
Exponential decay power curve (1/f) - Source
pink4
▅▄▂
▇████▇▅▃▂
████████████▇▆▄▃▁▁▁▁▂
████████████████████████▇▆▅▄▃▂▂ ▁
████████████████████████████████▇████████████▇▆▅▄▄▄▄▂▃▁▁
█████████████████████████████████████████████████████████▇▆▅▄▁
██████████████████████████████████████████████████████████████▇▃
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
pink16
█
█
██
███▆▁▁
██████▇▅▁▂▁
████████████▇▆▆▄▂▂▂▂▁▁
███████████████████████▇▇▆▅▅▄▃▂ ▁
████████████████████████████████▄███████████▇▆▅▄▃▃▄▃▂▂▁
████████████████████████████████████████████████████████▆▇▆▅▂▁
██████████████████████████████████████████████████████████████▆▁
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
pink32
▄
█
█
█▄
██▄▁
████▅▄▂
████████▆▇▆▄▂▁
████████████████▅▇▆▆▆▅▄▃▂▁▂
██████████████████████████████▆▅ ▄▄▅▃▅▄▄▂▃▄▃▂▂
████████████████████████████████████████████████▇▇▇▇▇▇▆▅▂▂▂
████████████████████████████████████████████████████████████▅▄▁
███████████████████████████████████████████████████████████████▅
Red / brown noise
Low-pass filtered noise (opposite of blue) - Source
red4
█▇▇▇▆▇▆▅▅▅▄▃▃▂▁
█████████████████▇▆▅▃▁
███████████████████████▆▃
███████████████████████████▄ ▁▃▄▆▇█████████▇▆▅▃▁
█████████████████████████████▄ ▁▄▇████████████████████▆▃
██████████████████████████████▇▁ ▄██████████████████████████▄
████████████████████████████████▇██████████████████████████████▁
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
red16
▇▅▃
█████▃
██████▃
███████▂ ▂▅▅▂
████████ ▅████▅ ▄▄▂
███████████████▅ ▂████▆ ▃▇█▆▁ ▃▃▂ ▁
████████████████▅██████▇ ▄█████▁ ▁▇███▆ ▄███▄ ▃▇█▇▂ ▂▆█▆▂
████████████████████████▇███████▂██████▆ ▆█████▅ ▄█████▃ ▃█████▃
████████████████████████████████████████████████▆███████▅███████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
red32
▅
██▇
███▅
████ ▃▅
████▇██▆ ▁▃
████████▂██▇ ▂▇▁ ▁
████████████▄███ ▆█▅ ▃▆▂ ▄ ▁
████████████████████▄███▁███ ▇█▅ ▄█▄ ▃▇▂ ▁▆▁ ▁▅ ▄ ▄ ▃ ▃
████████████████████████████▇███▄███▃███▁███ ███ ███ ███ ▇██ ▇█▇
████████████████████████████████████████████████▇███▇███▇███▇███
████████████████████████████████████████████████████████████████
Violet noise
Band-stop filtered noise (interleaved red noise, opposite of green) - Source
violet2
██▇▇█▆▇▆▆▅▅▃▃▃▂▁ ▁▂▃▄▄▅▆▆▇▆▆▇▇█▇█
███████████████████▇▅▄▂ ▁▂▄▅▇▇█████████████████
█████████████████████████▅▃ ▃▅████████████████████████
████████████████████████████▄ ▄███████████████████████████
██████████████████████████████▄ ▄█████████████████████████████
████████████████████████████████▆███████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
violet4
▂▇▇▇▆▄▂▂ ▂▂▄▆▇▇▇
█████████▆▃ ▃▆████████
████████████▄ ▁ ▄███████████
██████████████▁ ▂▅▇████▇▅▂ ▂▄▇████▇▅▁ ▁▇████████████
███████████████▂ ▅██████████▆▁ ▂▇██████████▅ ▁██████████████
████████████████▅██████████████▃ ▃██████████████▅███████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
violet16
▅ ▅
███ ██
███▆ ▅██
████ ▃▅ ▅▃ ███
███████▆ ▁▅ ▃▂ ▆██████
████████▃██▇ ▄▇▂ ▄ ▂ ▁ ▄ ▂█▄ ▇██▃███████
████████████▅███▁██▇ ▆█▅ ▄█▄ ▂▇▃ ▃█▂ ▄█▃ ▅█▆ ▇██ ███▅███████████
████████████████████▆███▅███▄███▃███▃███▄███▆███████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
violet32
██ █
██ █
██▄▄ ▄▆█
████ ▃ ▃ ███
██████▂▆ ▁ ▂ ▆▂█████
████████▅█▂▇ ▄ ▂ ▂ ▄ ▇▁█▅███████
████████████▇█▅█▂█▁▇ ▇ ▅ ▄ ▃ ▃ ▃ ▃ ▃ ▄ ▄ ▅ ▆ ▇▁█▃█▄█▇███████████
██████████████████████▇█▇█▆█▆█▅█▅█▅█▅█▆█▆███████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
White noise
Uniform distribution (unfiltered output from source PRNG) - Source
white
▁█████████▇█████████▇█████▇▇▇█▇██▇▇█▇████████▇█▇███▇▇█▇█████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████
Status
STABLE - used in production
Search or submit any issues for this package
Related packages
- @thi.ng/dsp - Composable signal generators, oscillators, filters, FFT, spectrum, windowing & related DSP utils
- @thi.ng/random - Pseudo-random number generators w/ unified API, distributions, weighted choices, ID generation
Installation
yarn add @thi.ng/colored-noise
// ES module
<script type="module" src="https://unpkg.com/@thi.ng/colored-noise?module" crossorigin></script>
// UMD
<script src="https://unpkg.com/@thi.ng/colored-noise/lib/index.umd.js" crossorigin></script>
Package sizes (gzipped, pre-treeshake): ESM: 496 bytes / CJS: 567 bytes / UMD: 681 bytes
Dependencies
API
TODO
See /tools for usage examples...
import { red } from "@thi.ng/colored-noise";
import { take } from "@thi.ng/transducers";
// default config
[...take(20, red())]
// [0.03108920908982049, 0.5411110045940151, 0.26064470417452945, ...]
// custom config
import { XsAdd } from "@thi.ng/random";
[...take(20, red(16, 1, new XsAdd(0xdecafbad)))]
// [ -0.17761799097704192, -0.10240132532836904, -0.1103387340810939, ...]
Use as IGen in @thi.ng/dsp
import { green } from "@thi.ng/colored-noise";
import { adsr, iterable, product } from "@thi.ng/dsp";
import { wavByteArray } from "@thi.ng/dsp-io-wav";
import { writeFileSync } from "fs";
const FS = 44100;
const signal = product(
// wrap green noise as IGen
iterable(green(16), 0),
// apply gain envelope
adsr({ a: 0.005 * FS, d: 0.2 * FS, s: 0 })
);
// output as 16bit mono WAV file
writeFileSync(
"export/hihat.wav",
wavByteArray(
{ bits: 16, channels: 1, length: 0.25 * FS, sampleRate: FS },
signal
)
);
Authors
Karsten Schmidt
If this project contributes to an academic publication, please cite it as:
@misc{thing-colored-noise,
title = "@thi.ng/colored-noise",
author = "Karsten Schmidt",
note = "https://thi.ng/colored-noise",
year = 2015
}
License
© 2015 - 2021 Karsten Schmidt // Apache Software License 2.0