- Controller
- Your breath, your tilt, a lamp
- Score
- Cents off the note
- Save file
- Only in your browser
Three ideas in one furnace
Breathglass started as a mash-up. From Wild Choir it takes the idea that a creature's body is its instrument and that you're judged on harmony. From Waymark it takes the phone itself as the controller, and the camera as a way to pull material out of the room you're standing in. The third idea is new to GameLab: glassblowing.
A glassblower works with breath, gravity, heat and constant turning. A phone happens to have a sensor for each of those. Nothing in the game is scripted. The bubble is a small physics model, and the note it sings is calculated from its shape.
Phone sensors that games rarely touch
| Sensor | What it does here | Without it |
|---|---|---|
| Microphone | Breath. Blowing across a mic is broadband noise, so Breathglass listens for loud sound with a flat spectrum. Talking and humming are tonal and don't count. On the shelf, a hum is pitch-tracked instead: hum a note and the glass tuned to it lights up and answers. | Hold Blow, or Space |
| Orientation | Gravity. The pipe runs along the screen. Tip the right side down and soft glass stretches toward the floor. Tip it up and the glass squats. The studio on screen tilts to match the real horizon. | A tilt slider, or W/S |
| Accelerometer | Swing. Swing the phone and the glass draws out long, like a glassblower swinging a piece in the pit. | Optional |
| Camera | A light meter. Aim it at a lamp or a sunny window and that light becomes your glory hole. It also samples the room's colours for the glass and frit. | Hold Reheat, or H |
| Vibration | A warning buzz when cold glass starts to crack (Android). | On-screen warnings |
Each sensor is asked for on its own tap, and every one has an on-screen or keyboard stand-in, so the whole game also plays on a computer.
How to play
- New to it? Start in the Practice room. Nine short drills walk you through blowing hard and gently, tipping the pipe down, up and level, rolling the pipe, swinging, finding a light and humming. Each one asks for its sensor right there, and the practice glass never cracks or bursts.
- Open Breathglass and take a commission. A patron asks for a vessel that sings a note, for example Sister Odile's choir needs a G4.
- Choose one, two or three gathers of glass. More glass makes bigger, lower vessels. Pick a colour, or sample one from the room.
- Blow. The bubble swells and the tuner shows its note falling. Overdo it and the wall goes thinner than a soap film and bursts.
- Keep the pipe turning. Drag the roll bar with your thumb. Stop, and soft glass sags toward the real floor.
- Shape it. Press and hold on the glass to squeeze a ring in with the jacks. Squeeze the neck and the note drops a long way. Squeeze the body and it rises. Tilt and swing to stretch it. Paddle the bottom flat.
- Reheat before it stiffens. Glass that drops below about 520 °C while you work will crack.
- Crack off when the tuner turns green. The vessel anneals, rings once, and is judged in cents.
Deliver it to the patron for coin, or keep it. Kept vessels go on the shelf. Tap one to ring it, blow into the mic and the whole shelf sings like a bottle organ, and collect all seven notes of the Lantern Choir to play its tune.
On a desktop? Space blows, A/D turns the pipe, W/S tilts it, H reheats, the mouse works the jacks and Enter cracks it off. The Apprentice button turns the pipe for you.
The note is real acoustics
Every vessel has two voices, and both are measured from its profile.
The voice is what you hear when you blow across the mouth: a Helmholtz resonance, the same physics as blowing over a bottle. The air in the body acts as a spring and the plug of air in the neck acts as a mass. The pitch is f = c/2π · √(A / V·L): a bigger body or a narrower, longer neck makes a lower note. This is why squeezing the neck with the jacks drops the pitch so far.
The ring is what you hear when you tap the wall. It rings like a wine glass, in the shell mode where the rim flexes into an oval. Its pitch goes as wall thickness over radius squared, so small, thick vessels ring high. The higher shell modes give the inharmonic partials, and each one is synthesised as a slightly detuned pair so the glass beats like the real thing.
While you blow, the game sounds the vessel's current voice under your breath, so you can tune by ear as well as by the meter.
How the glass behaves
The vessel is a surface of revolution: 36 points along its wall from the pipe to the tip. Each stretch of wall carries a fixed volume of glass, so thickness is never stored. It falls out of how far the surface has stretched. Temperature sets how runny each point is. Breath pushes the wall outward, gravity drags the soft parts, the jacks pinch, surface tension smooths, and thick neighbours feed thin ones.
Sag is calculated in the vessel's own spinning frame. When you turn the pipe steadily, the pull of gravity goes round in a circle and cancels itself out. When you stop, it piles up in one direction. Nothing tells the game to punish you for not turning. The droop comes from the physics.
Six screens






Your shelf stays with you
There's no server, no account and nothing loaded from a third party. Three.js is bundled with the game, and every sound is synthesised in the browser. Your shelf, coin and settings live in this browser's localStorage. Export writes the whole shelf as .json, and Import merges one back in. Photograph saves the shelf as a .png. The microphone and camera are analysed in the moment and are never recorded or stored.
Build notes
It's static ES modules with no build step. The glass model, the acoustics and the commissions are pure functions with Node tests: glass volume is conserved, turning cancels sag, and the Helmholtz and ring formulas match their textbook versions. The renderer rebuilds the vessel mesh every frame from the profile, with an inner and outer skin, a temperature-driven glow and physical transmission so cooled glass refracts the furnace behind it. On slower phones it drops to Lite graphics by itself.
Read the design notes and the changelog.