The Same Moment
A flash and a click, arriving a measured distance apart. First we find where your now sits and how wide it is. Then we move it, in about a minute, without telling you which way.
Light and sound leave an event together and stop being together immediately. Sound crawls, about a foot every millisecond. Light does not. Then it reverses inside you: your ear turns pressure into signal in under a millisecond, your retina takes tens of milliseconds to turn photons into anything worth sending. The physical lead and the neural lead point opposite ways, and the offset at which a flash and a click feel welded together is not zero for anybody.
It is also not a point. It is a band, tens to a couple of hundred milliseconds wide, inside which two signals get filed as one event. That band is why dubbing works, why a badly synced video is watchable up to a limit and then abruptly is not, and its width differs from person to person as a real trait.
And it moves. Fujisaki, Shimojo, Kashino and Nishida (2004) and Vroomen, Keetels, de Gelder and Bertelson (2004) showed that after a few minutes of pairs offset by a constant lag, your point of subjective simultaneity shifts toward that lag. Not your answers. Your zero. Something in you decides the delay is a fact about the world rather than an error, and rewrites its own alignment so the world looks punctual again.
- 🔔 Each trial: one flash, one click, separated by an offset between -400 and +400 ms. You answer one question. Was that one moment or two?
- 📋 Three practice trials, then 26 scored, then about a minute of pairs you only have to watch, then 26 more. Roughly six minutes. Keys 1 and 2 work.
- 🎧 Wired headphones or your laptop speakers. Bluetooth adds anywhere up to a fifth of a second of delay. Read the next box before you decide that ruins it.
- 👁 Look at the centre of the circle and hold still. There is nothing to find by moving your eyes.
A browser cannot measure its own latency. Between me scheduling a click and air actually moving there is a buffer, a driver, a converter, and on Bluetooth a whole codec. Between me asking for a flash and your panel emitting light there is a compositor, a scan-out and a pixel response. Both are unknown to me, both are different from each other, and their difference lands on top of any absolute number.
So the absolute figure gets printed as contaminated, in those words. The headline is the shift: two measurements on the same machine, same session, same code, minutes apart. Every constant in that chain appears in both terms with the same sign and cancels exactly. Your Bluetooth delay does not matter to it. What survives is what changed in the middle, and the only thing that changed in the middle is you.
- The direction of the lag is drawn at random and hidden until the results. The prediction is directional, so you cannot help it along without knowing which way to lean.
- Both test blocks use the same offsets, the same count and the same question, in fresh random order.
- No offset is assumed. The achieved flash-to-click gap is read off the audio clock every trial and the analysis uses that, not the request. The mean error between the two gets printed.
- Constant device latency cancels in the headline, and the page says which number is contaminated.
- Catch offsets at ±400 ms, which nobody should call one event, and a counting task during the middle block, because an adaptation nobody watched is not an adaptation.