The kittwenty-four sounds, one key, one material — press any of them
The checkwhat the engine's own validator says about this table
Layers sum, and WebAudio hard-clips above 1.0 — a chord adding to 1.4 does not play forty
percent louder, it plays distorted, and differently distorted depending on what happens to
overlap it. This is the engine's own validateSounds, run against the exact table
below, so the answer arrives before you have played the sound rather than after somebody
complains about it. Nothing the sliders can do will fail it: a sound whose own worst instant
would cross the ceiling is scaled down as a whole before it ever reaches the engine. Edit a
layer by hand, though, and you are on your own — which is the point of leaving the check
here rather than hiding it once it goes green.
The recipepaste it into a project and it plays there too
Seven things that make a sound an interface soundand not a sound effect
- 01 Short. A tap is thirty to fifty milliseconds. Anything a user hears more than twice a minute has to be over before they have finished the gesture that caused it; two hundred milliseconds is a sound they are still hearing when they reach the next control, and that is what "the app feels slow" actually is.
- 02 Quiet. Every sound here peaks well under a quarter of full scale. An interface sound competes with music, a call, a room — and the one that wins that fight is the one that gets the whole app muted, alarms included.
- 03 Direction is pitch. Rising means forward, done, sent, on. Falling means back, closed, deleted, off. No user has ever been taught this and every user knows it.
- 04 Pairs are reversals. Open and close, on and off, send and receive: the same two notes in the other order. Half a kit teaches the other half, and a user who has heard one already knows what its opposite will sound like.
- 05 Everything in one key. This is the whole difference between a designed kit and a folder of downloads. Every sound on this page is an interval over one root, so two of them landing at once make a chord instead of a mess — and nobody notices it consciously, and everybody notices when it is missing.
- 06 Nothing bright. Every layer goes through a low-pass. Brightness is what cuts through, and cutting through is precisely what you do not want on the four hundredth press of the day.
- 07 The important ones are rare. Success and error have to stay expensive. A sound that fires on every action means nothing by lunchtime, which is why the biggest sound in this kit has the longest minimum gap.
How it is made
Jack Foley stood in a room with a box of gravel and a pair of shoes and made a footstep that was better than a footstep. Everything on this page is the opposite method and the same job: there is no gravel, no microphone and no file — every sound is a handful of numbers turned into oscillators in this tab, and the WAV you download is rendered here too.
A sound is ten numbers, not a node graph. One fixed chain per layer — source, high-pass, low-pass, gain envelope, pan — and the only things you can vary are which of five sources it is, one starting pitch, one sweep target, one peak gain, one decay, one delay, one attack, two filter corners and a pan. You cannot reorder the chain, add a second filter, or modulate anything with anything. That refusal is what makes the check above possible: the moment routing is up to the author, a feedback delay at 0.9 turns a quiet chord into a runaway and no static check can see it coming.
The five materials are not five presets. They differ in the one thing no slider can reach: which partials are there at all. Glass has harmonic partials at two and three times the fundamental, which is why the ear hears one pitch. Metal has them at 2.76 and 5.4 — the ratios of a real bell, belonging to no scale — and that inharmonicity, not brightness, is why a bell sounds struck. Wood is near-misses at 2.4 and 3.9. Rubber has none at all. Move every slider to its limit on Glass and you will not arrive at Metal, and that is the point: the sliders are how hard you hit it, and the material is what you hit.
The kit is tuned rather than assembled. No sound here stores a frequency — each is written as intervals over the kit's root, so moving the key moves all twenty-four together and they stay a family. Everything that means yes rises through a major triad; everything that means no falls by a minor second or a tritone, which are the two intervals a listener reads as wrong without being able to name them.
And the file is the same engine. The WAV is not a re-implementation of what you just heard — it is the identical synthesiser pointed at an offline context and asked to render faster than real time, which is why the two cannot drift apart. The kit you are working on is in the address bar as you work on it, so the link is the save file.
Everything you make with it is yours, with no conditions. Built on @latticekit/audio. It is one of the Plausible Ventures.