Inspiration
A music box teaches rhythm without a single word: where a pin sits is when it plays. I wanted that feeling with bare hands. You don't need to know music, only that putting a house there sounds nice.
What it does
A small planet of black liquid turns on a table in front of you. Pinch a tree, a stone, a lantern, a house or a paper crane from the tray and set it on the planet. The band you choose is the note, and the place around the planet is when it plays, so building a village composes a looping tune.
- Every note writes a ring of light across the liquid. Notes played together cross and flash, and a chord of three or more makes the whole planet answer with a wave of colour.
- Stroke the liquid with a bare fingertip and it ripples and sings, something only hands can do.
- Ring the bell to sit back and listen.
Reasons to come back. Each day has a new melody to complete, shown by ring markers, and seven beads track your week. Three dishes keep saved worlds, and a share link opens anyone's exact world in their own browser.
How I built it
- Meta's Immersive Web SDK: an IWSDK World with an ECS system, IWSDK's XR session and hand tracking with its animated hand visuals, and the IWER emulator plus the IWSDK CLI for automated hand-input tests (27 scripted hand scenarios, including a forced slowdown).
- Everything is code: every model, shader and sound is generated procedurally. Web Audio synthesis, a ripple-field shader with crossing interference rings, and instanced pieces. No third-party models, textures or samples; the whole build is about 4 MB, so it loads fast in Quest Browser.
- Built to stay smooth: if the headset falls under 66 fps, the scenery sheds its heaviest layers (nothing you touch changes), and the next visit starts at a lower resolution.
- Built with an AI coding assistant; every interaction was checked against emulated hands.
Designed for comfort
Fully seated, everything within arm's reach. The instrument places itself at your head height when you enter and follows the Quest recenter gesture. Music pauses with the system menu. The colour wave is rate-limited so it can never strobe, and audio runs through a limiter.
Challenges
- Making emulated hands feel like real ones: a fingertip resting on the line between two cells used to ring both, so a touch now has to truly travel before it rings again.
- Keeping glowing, transparent scenery from cutting holes around the hands.
What I learned
Hands need forgiveness that controllers don't: generous reach, clear sound and light for every pinch, and nothing important at the edge of the view.
What's next
Shared tables where two players build one planet together, more piece families (new instruments), and a weekly community melody.
Built With
- immersive-web-sdk
- meta-quest
- three.js
- typescript
- vercel
- vite
- web-audio-api
- webxr