Stillness listens to the room
A mantra gathers when the room is quiet and still, and scatters with sound or movement. To sense that, it asks for your microphone and camera. It reads only volume and the amount of motion, and shows the camera image behind the mantra on this screen. No audio or images are kept or sent.
Stillness measures only how loud the room is and how much is moving. If you allow the camera, its image is shown behind the mantra, on this screen only. Nothing is recorded, stored, or sent anywhere.
Mercer Labs Interactive Motion Concept
Stillness
An installation concept for Mercer Labs. Movement and noise scatter the words. Stillness brings them back.
Details
- Role
- Concept, design, motion and development
- Built with
- Next.js, React Three Fiber, custom shaders, Web Audio, Claude Code
- Status
- Shipped
The idea
As a yoga instructor, I love creating moments for silence and stillness. Most interactive installations reward you for doing something. I wanted one that rewards you for doing nothing.
Stillness is a meditation practice for a room full of strangers. Tens of thousands of vermilion particles drift across the wall. When the room is quiet and nobody moves, they slowly gather into the day's mantra. When someone laughs, walks through or checks their phone, everything scatters at once.
In a shared room, that changes the social contract. One person's noise scatters everyone's mantra, so strangers end up being still together. Nobody tells you the rule. You figure it out by watching the room.
How it works
Everything comes down to one number between 0 and 1: how disturbed the room is.
The microphone measures volume only, never words. The piece learns the quiet of whatever room it's in and only reacts to sound above that, so a humming laptop fan doesn't count as noise. The camera compares tiny 64 by 48 pixel frames to see how much changed between them. Whichever signal is higher wins.
That number is smoothed so it reacts to a clap instantly but calms down slowly. While it stays low, calm builds and the mantra gathers line by line. The whole mantra takes about 30 seconds. Any real spike, anything lasting more than a tenth of a second, scatters it and starts over.
The motion principle: asymmetry
Scattering is instant. Settling is slow and earned.
That rule runs through the whole piece, not just the particles. The sensing reacts in 50 milliseconds but takes a second and a half to relax. The particles burst outward the moment you move, then drift back in random order and land exactly when their line is done. Once the full mantra has settled, it breathes at about six breaths a minute.
I tuned the timing by sitting in front of it. My first version gave each line 30 seconds, which sounded meditative on paper and felt slow in person. Thirty seconds for the whole mantra felt right.
In the room
The web version shows the idea. The installation would live in a darkened room at Mercer Labs.
A projector fills one wall. An overhead camera watches the whole floor, so it measures the room's movement instead of one person's face. Two room mics listen for volume. There are no instructions anywhere. Visitors walk in, see particles drifting, and usually talk or move, so the particles scatter. Someone notices, goes quiet, and the words start to form. Then everyone else figures it out.
Designing for everyone
Not everyone will allow a camera, and not everyone wants moving particles.
- Without camera or mic, moving or touching the piece stands in for movement in the room. It works with a mouse on desktop and a finger on a phone, and scrolling past it still scrolls the page.
- With reduced motion on, there are no particles. The mantra is visible from the start at low opacity and fades up as the room stays calm.
- The camera image shows softly behind the mantra, on your screen only. The page says exactly what it measures before it asks for permission.
- The mantra is always available as real text for screen readers.
How I built it
I built Stillness with Claude Code, the same way I'd work with an engineer: a written spec first, then small milestones, stopping after each one to test.
The sensing came first. Then the calm logic, shown as plain text so I could feel the pacing before any particles existed. Then the particle renderer. Testing in a real room caught what automated tests couldn't:
- The microphone had never actually worked. My voice was registering as motion, because the camera saw my face move while I talked.
- Once it did work, it was far too sensitive, which led to the baseline that calibrates itself to the room.
- Tapping the day buttons scattered the mantra, because moving the mouse over to them counted as movement.
- With reduced motion on, the first version showed an empty box, which read as broken.
- On phones, the piece trapped the page so you couldn't scroll past it.
Every fix is written up in the project's process log.
What's next
A personal version for your own space: use it before you start work and sit with it for just thirty seconds.