VELVET STATIC GUIDE 

A GENERATIVE AMBIENT ROOM

Velvet Static

An instrument that plays itself — nine voices of warm
synthesis, and a shader that breathes with them.

headphones recommended · sound begins on entry

01

The score — four movements

Nothing here is recorded, but the piece still has a shape. A silent conductor cycles the room through four movements — each one a set of tendencies, not a tape — nudging how often bells land, how far the filter opens, how deep the velvet folds. Crossfades take about ten seconds; you will feel the weather change before you can name it.

AWAITING ENTRY — THE PIECE BEGINS WHEN YOU CROSS THE THRESHOLD
I1:10

Drift

The room settles. Bells arrive seldom and far apart, the filter keeps the drone under a blanket, and the sub only leans on the floor. The movement you are meant to breathe with.

BELLS SPARSEFILTER LOWWARP SOFT
II1:25

Bloom

The lid opens. Pads brighten and stack, bells cluster into almost-melodies, and the ring swells wide as the spectrum fills. As loud as this room ever allows itself to get.

BELLS DENSEFILTER OPENRING WIDE
III1:10

Undertow

The floor gives way. The sub doubles its weight, the folds of the velvet deepen and slow, and the light withdraws to the center. Listen with your ribs, not your ears.

SUB ×1.5WARP DEEPLIGHT LOW
IV0:55

Ash

What burning leaves behind. The voices thin to crackle and hiss, grain rises across the image, and a few last bells ring in the dark before the drift begins again.

VOICES THINGRAIN ×1.6EMBERS OUT
02

The engine — nine voices

Nine voices, zero samples. Every sound is synthesized the moment you hear it: oscillators for the warmth, shaped noise for the static, and a reverb whose impulse response is conjured from thin air at load. Nothing loops exactly, so nothing ever repeats.

01–03

Drone

Three sawtooth oscillators on the root, detuned −5, 0 and +4 cents, summed into one lowpass. The beating between them is the fabric’s weave — and a 0.038 Hz LFO sweeps the cutoff so the chord inhales on a 26-second cycle.

SAW ×3 → LOWPASS 320 HZ
04

Sub

A sine two octaves down, its gain swayed by a second slow LFO. Felt more than heard — it drives the glow at the center of the screen, and movement III leans on it hard.

SINE · f/4 · 0.07 HZ SWAY
05

Crackle

A looped two-second buffer of sparse random impulses through a warm lowpass. Vinyl dust, synthesized — the audible twin of the shader’s film grain.

IMPULSES → LP 6.8 KHZ
06

Hiss

White noise through a gentle bandpass, mixed at 0.006. The sound of tape at rest; the room’s noise floor, so silence never feels dead.

NOISE → BP 4.2 KHZ
07–08

Pads

Triangle swells over four-note minor-nine shapes, seven-second attacks, drifting to a new chord every 21–28 seconds. No two visits hear the same order.

TRI ×4 · ~24 S CYCLE
09

Bells

Paired sines at f and 2.01f — that one percent of inharmonicity is the whole bell — on a minor pentatonic, panned at random, fed into a feedback delay. Click the room to play one yourself.

SINE PAIR → DELAY 440 MS
+

The room itself

The reverb owns no samples either: its impulse response is 3.4 seconds of white noise with an exponential decay envelope, generated the moment the page loads. A plate reverb conjured from static — the name of the site, made literal.

CONVOLVER · IR 3.4 S · GENERATED
9 VOICES MASTER GAIN COMPRESSOR ANALYSER YOUR SPEAKERS

The analyser is the hinge of the whole site: 64 bands leave it for the frequency ring, three band-averages leave it for the shader’s uniforms. The picture listens.

03

The shader — velvet smoke

The entire background is one fragment shader on a single fullscreen triangle. Four instructions of light, executed once per pixel, sixty times a second.

  1. 01

    Warp

    Fractal noise is fed its own output as coordinates — twice. Flat static folds into fabric. The audio level deepens the folds; movement III pushes the warp to ×1.45.

  2. 02

    Layer

    Color is stacked like cloth: deep ink underneath, wine in the folds, ember light where the mids burn, cream sparks where the treble catches.

  3. 03

    Ring

    The 64-band spectrum is written into a one-pixel-tall texture and sampled by polar angle. The ring’s radius is literally the music, wrapped in a circle.

  4. 04

    Grain

    One hash per pixel, re-seeded every frame. Treble makes the image physically grainier — and movement IV turns it up on purpose.

Three moods, twelve uniforms

Each mood swaps the shader’s four palette uniforms and retunes the synth’s root. The palette is never switched — only lerped, three percent per frame. Click a row to hear and see it happen behind this page.

04

The console — how it is played

Every control the room answers to. There are no menus; the instrument is played like an instrument.

Pointer

CLICK / TOUCH
Plucks a pentatonic bell — pitch follows x — and sends a ripple through the fabric from the touch point.
MOVE
The smoke leans toward the cursor, four percent per frame. Slow on purpose; the room notices you late.
SCROLL
Down here, the anatomy. The room keeps playing underneath — listen for the movement changes while you read.

Keyboard

SPACEsound on / off
1 2 3 wine · ember · nocturne
intensity up / down

Keys light up here when you press them — try one now.

The intensity fader

One fader, in the bar at the bottom of the room, running from HUSH to SWELL. It scales bell density, pad bloom, filter brightness and the shader’s drive all at once — a master “how much room” control. The score keeps conducting either way; you are only deciding how much of it reaches you.

05

Colophon

No samples. No textures. No images.

The audio owns zero bytes of recordings; the visuals own zero bytes of bitmaps. Everything you hear and see is computed the moment you arrive — which is why no two visits are ever the same piece. One admission: the page around the room uses GSAP for its scroll choreography. The room itself is dependency-free.

SOUNDNine WebAudio voices · generated-IR reverb · four-movement generative score
LIGHTOne GLSL fragment shader · domain-warped fBm · spectrum ring
TYPEFraunces (opsz 144) · IBM Plex Mono
MOTIONGSAP ScrollTrigger · CSS entrance choreography · reduced-motion aware
IMAGERYNone. Every pixel is procedural — that is the point.