Build I
A full day of making. The spec is locked; today it becomes a thing that makes sound on a phone. The only deadline: at 13:00, everyone demos whatever exists — broken is fine, invisible is not.
- your instrument's core mapping works on a real phone, from a URL
- it has been heard by the room once, in whatever state
- you know your riskiest remaining unknown — and tomorrow's first task
Start From the Starter
Fork the instrument starter into your own editor account (open it, then File → Duplicate in the p5 editor after pasting — full instructions on the starter page). It already solves the plumbing you should not be spending today on: the start-gesture audio unlock, iOS motion permission, full-screen canvas, touch scaffolding, on-screen status. You write the instrument; the template holds the umbrella.
Build in this order
- Sound first, mute-proof second, looks last. A beautiful silent instrument is a poster.
- Core mapping on the laptop (mouse stands in for finger) — then deploy to the phone and re-tune the ranges. Fingers and mice have different geometries; what feels right under a mouse is often cramped under a thumb.
- One sensor at a time. Touch fully working before tilt joins; tilt before mic. Two half-wired sensors debug like eels.
- Deploy every 30–45 minutes — the ritual from Day 6. The phone is the truth; the laptop preview is a rumour.
13:00 — Standup
Two minutes per project, on the actual phone, through the monitors or held to the mic: what works, what doesn't, what you'll try next. Saying "it broke when I added tilt" out loud is not an admission — it is the fastest known debugging tool, and someone in the room has usually already fixed the same eel.
When It Breaks — the Usual Five
| Symptom | First suspect |
|---|---|
| No sound on the phone, works on laptop | audio never unlocked: is userStartAudio() /
Tone.start() inside a real touch handler? Also: the
physical mute switch. |
| Tilt does nothing on iPhone | the permission request isn't inside a touch, or was denied once — close the tab fully and reopen. |
| Page scrolls/zooms while playing | a touch handler isn't returning false. |
| Crackles, glitches, dies after a minute | too many voices/effects, or objects created inside
draw()/loops — build once in setup(), reuse
forever. |
| Sample won't load | URL typo, or an HTTP link on an HTTPS page — copy the address from the assets folder exactly. |
16:45 — The Evening Ritual
Before anyone leaves, per project: save in the editor · deploy to the phone · play it once through, however rough · note today's state in one sentence with a timestamp in your project log (the log becomes Friday's documentation — you are writing it already, a sentence a day).
Rest your ears — genuinely. Tomorrow is tuning day, and tuning needs fresh ones. If you must do something: play your instrument for one more stranger and write down, with a timestamp, the first thing they tried.