mk(n: number) → buffer
| arg | type | description |
|---|
| n | number | |
rd(b: buffer, i: number) → number
| arg | type | description |
|---|
| b | buffer | |
| i | number | |
wr(b: buffer, i: number, v: number) → void
| arg | type | description |
|---|
| b | buffer | |
| i | number | |
| v | number | |
ad(b: buffer, i: number, v: number) → void
| arg | type | description |
|---|
| b | buffer | |
| i | number | |
| v | number | |
mix(dst: buffer, src: buffer, n: number, g: number) → void
Fold one buffer into another at a gain, so layers built apart can be mixed.
| arg | type | description |
|---|
| dst | buffer | |
| src | buffer | |
| n | number | |
| g | number | |
mixAt(dst: buffer, dstFrames: number, src: buffer, srcFrames: number, offset: number, g: number) → void
Fold one buffer into another starting at a frame offset, for placed events.
| arg | type | description |
|---|
| dst | buffer | |
| dstFrames | number | |
| src | buffer | |
| srcFrames | number | |
| offset | number | |
| g | number | |
mixWrap(dst: buffer, dstFrames: number, src: buffer, srcFrames: number, offset: number, g: number) → void
Fold into a buffer that WRAPS, so an event straddling the loop seam is heard
on both sides of it instead of being cut. Used by the beds.
| arg | type | description |
|---|
| dst | buffer | |
| dstFrames | number | |
| src | buffer | |
| srcFrames | number | |
| offset | number | |
| g | number | |
reseed(s: number) → void
| arg | type | description |
|---|
| s | number | |
rnd01( ) → number
0..1 rather than -1..1, for choosing times and pitches.
at(c: Curve, t: number) → number
| arg | type | description |
|---|
| c | Curve | |
| t | number | |
env(peak: number, a: number, decay: number) → void
The common envelope: an attack in `a` seconds, then an exponential tail.
| arg | type | description |
|---|
| peak | number | |
| a | number | |
| decay | number | |
sine(b: buffer, n: number, sr: number, freq: Curve, amp: Curve, phase0: number?) → void
| arg | type | description |
|---|
| b | buffer | |
| n | number | |
| sr | number | |
| freq | Curve | |
| amp | Curve | |
| phase0 | number? | |
tri(b: buffer, n: number, sr: number, freq: Curve, amp: Curve) → void
Softer than a square, brighter than a sine: the body of most tuned things.
| arg | type | description |
|---|
| b | buffer | |
| n | number | |
| sr | number | |
| freq | Curve | |
| amp | Curve | |
saw(b: buffer, n: number, sr: number, freq: Curve, amp: Curve, partials: number?) → void
A reedy stack: what a horn and the alien throats are built from.
| arg | type | description |
|---|
| b | buffer | |
| n | number | |
| sr | number | |
| freq | Curve | |
| amp | Curve | |
| partials | number? | |
noise(b: buffer, n: number, sr: number, amp: Curve) → void
| arg | type | description |
|---|
| b | buffer | |
| n | number | |
| sr | number | |
| amp | Curve | |
lp1(b: buffer, n: number, sr: number, cut: Curve) → void
| arg | type | description |
|---|
| b | buffer | |
| n | number | |
| sr | number | |
| cut | Curve | |
hp1(b: buffer, n: number, sr: number, cut: Curve) → void
| arg | type | description |
|---|
| b | buffer | |
| n | number | |
| sr | number | |
| cut | Curve | |
svf(b: buffer, n: number, sr: number, cut: Curve, q: number, mode: string) → void
Chamberlin state-variable filter; the cutoff may move, which is a sweep.
| arg | type | description |
|---|
| b | buffer | |
| n | number | |
| sr | number | |
| cut | Curve | |
| q | number | |
| mode | string | |
softclip(b: buffer, n: number, drive: number) → void
| arg | type | description |
|---|
| b | buffer | |
| n | number | |
| drive | number | |
gain(b: buffer, n: number, g: number) → void
| arg | type | description |
|---|
| b | buffer | |
| n | number | |
| g | number | |
normalise(b: buffer, n: number, peak: number) → void
| arg | type | description |
|---|
| b | buffer | |
| n | number | |
| peak | number | |
ends(b: buffer, n: number, sr: number, ms: number) → void
A short fade at each end, so a one-shot never clicks on its own edges.
| arg | type | description |
|---|
| b | buffer | |
| n | number | |
| sr | number | |
| ms | number | |
comb(dst: buffer, src: buffer, n: number, d: number, g: number) → void
| arg | type | description |
|---|
| dst | buffer | |
| src | buffer | |
| n | number | |
| d | number | |
| g | number | |
allpass(b: buffer, n: number, d: number, g: number) → void
| arg | type | description |
|---|
| b | buffer | |
| n | number | |
| d | number | |
| g | number | |
reverb(b: buffer, n: number, sr: number, wet: number, decay: number) → void
| arg | type | description |
|---|
| b | buffer | |
| n | number | |
| sr | number | |
| wet | number | |
| decay | number | |
slap(b: buffer, n: number, sr: number, ms: number, g: number) → void
A single hard slapback off the canyon wall, cheaper than the room and the
thing that actually reads as "fired in a pass".
| arg | type | description |
|---|
| b | buffer | |
| n | number | |
| sr | number | |
| ms | number | |
| g | number | |
wrapFold(b: buffer, n: number, x: number) → buffer
A bed is rendered `n + x` samples long and folded back on itself: the last
`x` samples crossfade into the first `x`, so sample n-1 runs into sample 0
with no step. Tonal layers additionally use whole-cycles-per-loop
frequencies (`cyc`), already continuous across the seam by construction.
| arg | type | description |
|---|
| b | buffer | |
| n | number | |
| x | number | |
cyc(want: number, seconds: number) → number
The nearest frequency to `want` that completes a whole number of cycles in
`seconds`.
| arg | type | description |
|---|
| want | number | |
| seconds | number | |
bedBuffer(sr: number, seconds: number) → void
A bed's working buffer: `n` frames of loop plus `x` frames of overlap.
| arg | type | description |
|---|
| sr | number | |
| seconds | number | |
bake(name: string, folder: string, samples: buffer, frames: number, sampleRate: number, channels: number, loop: boolean) → BakeReport
Encode and file one clip. `loop` decides both the codec and whether the seam
is measured. Returns a report rather than raising, so a whole bank bakes and
reports what failed instead of stopping at the first one.
| arg | type | description |
|---|
| name | string | |
| folder | string | |
| samples | buffer | |
| frames | number | |
| sampleRate | number | |
| channels | number | |
| loop | boolean | |