Knit UI
GitHub

Playground

Loading playground…

Playground
<AudioMesh
  pattern="sine"
/>

Examples

Default

The default mesh: a cyan→indigo→pink field flowing to a travelling sine.

Loading example…

DefaultSourceStorybook

Beat

A kick beat — watch the low-band blob bloom on every hit.

Loading example…

BeatSourceStorybook

Calm

A warmer palette with more, softer points — a slow lava-lamp drift.

Loading example…

CalmSourceStorybook

Custom Palette

A custom two-stop palette over a dark background.

Loading example…

Custom PaletteSourceStorybook

Fft Driven

Loading example…

Fft DrivenSourceStorybook

Props

PropTypeDefaultDescription
attacknumber | undefinedRise smoothing `0..1` override — lower = snappier. Defaults to `smoothing`.
backgroundColorstring | undefinedCanvas background (shows through where the field is dark/translucent).
colorsstring[] | undefinedPalette spread across the control points — an array of hex colours (`#rgb`/`#rrggbb`). Interpolated so each blob gets a distinct colour even when the palette is short. Default cyan→indigo→pink.
countnumber | undefinedNumber of spectrum bands tracked. Default 48.
fftScaleSpectrumInput | undefinedHow `input="fft"` magnitudes are scaled. Default `"byte"`.
heightnumber | undefinedCanvas height in px. Default 160.
input"levels" | "fft" | undefinedWhat pushed data carries: final `"levels"` (default) or raw `"fft"` magnitudes.
labelstring | undefinedAccessible label.
levelsnumber[] | undefinedDeclarative fallback: pushed whenever the value changes (re-renders per tick).
maxBinnumber | undefined`input="fft"`: last magnitude bin to include. Default = pushed length.
maxDbnumber | undefined`input="fft"`: dB mapped to `1` (ceiling). Default `-10`.
minBinnumber | undefined`input="fft"`: first magnitude bin to include (skip DC). Default `1`.
minDbnumber | undefined`input="fft"`: dB mapped to `0` (floor). Default `-90`.
opacitynumber | undefinedOverall opacity `0..1`. Default 1.
pointsnumber | undefinedColour control points (blobs), `1..6`. Default 5.
releasenumber | undefinedFall smoothing `0..1` override — higher = a slower tail. Defaults to `smoothing`.
responseTimenumber | undefinedRise time constant (ms) override; makes a sparse/low-rate FFT feed smooth at 60fps.
smoothingnumber | undefinedAttack/release smoothing, `0..1`. `0` snaps to each target; higher values let the field glide and decay. Default 0.3. Forced to 0 under reduced motion.
softnessnumber | undefinedBase blob radius in normalized canvas units before audio swell. Default 0.45.
speednumber | undefinedIdle-drift rate multiplier. `0` freezes the orbit (blobs still pulse). Default 1.
targetSharedValue<number[]> | undefinedOptional external target SharedValue (continuous loop while mounted).
widthnumber | undefinedFixed width in px. Omit for a responsive `width: "100%"` canvas.
Accessibility & DOM props (2)
PropType
keyKey | null | undefined
refRef<AudioVisualizerHandle> | undefined