How never-looping generative music works.

Most ambient apps play recordings. Grain plays a small synthesizer that runs in your browser and writes the music as it goes.

Synthesis, not samples

Each theme is a recipe: a drone wave, a scale, a pair of home keys, a reverb hall, and a set of field events. The player builds the sound with Web Audio. A ladder filter runs in an AudioWorklet, and the halls are generated impulses sized to each theme, from a small room to a cathedral.

Why it never loops

Notes, textures, and events are chosen from the theme's rules with seeded randomness, so the next minute is new music that still sounds like the same place. There is no file with an end, so there is no loop point to hear. Remix starts a fresh generation. Evolve lets the piece drift, including a move to the theme's other home key.

It follows the hour

Grain reads your local time and leans toward one of seven moods: dawn, morning, midday, afternoon, evening, night, and late night. Mornings carry more arpeggio and faster change. Late night is mostly drone and atmosphere, and it evolves slowly. A change of mood eases in over about ten minutes.

Gentle on purpose

Soft highs are always on: a shelf at 3.8 kHz, minus 9 dB, and a low-pass at 9 kHz. Bright one-shots are trimmed, and nothing tuned on purpose sits above 5 kHz.

Lock screen playback

Live Web Audio stops when a phone browser suspends the page. With Grain Unlock, Background mode renders the session ahead in ten-minute files and joins them with a short equal-power crossfade. Each file is a new generation, so it still does not repeat.

Private by design

All of this runs on your device. The player makes no network requests while audio is playing.

Listen free About Grain

Grain · Privacy · [email protected]