Send data with sound or light.
One device plays or flashes, another listens or watches. Error correction, compression and an encrypted handshake you can hear.
Idle
Press Listen on one device and Send on another.
HelloReplyShared keyEncrypted message
Dial-upPreambleTrainingHeaderDataError checkDone
Waterfall · time → , pitch ↑
Press Listen or Send to see sound
Spectrum · everything the mic hears, 0–20 kHz
Spectrogram
—
Send
No file chosen
Send by
Speed
Pattern
Speed
Your screen goes full-screen and flashes. Hold it up to the other phone's camera, brightness up. Tap the screen to stop.
Error correction
Receive
Colour timeline · one row per cell
Turn the sender's volume up. On iPhone, turn silent mode off.
Byte stream
headerdataparitycorrectedunfixablenot yet
Bytes appear here as they're sent or heard.
Protocol log
How it works
- Pitches carry digits. Each pitch stands for one hex digit (4 bits). Wide and Turbo play 2 or 4 pitches at once, in separate frequency bands, so more bits go out each moment.
- Preamble and training. A steady tone says “message coming”. Then a known pattern lets the receiver work out the speed and the exact timing, like an old modem's training squeal.
- Compression. Text is zipped first when that makes it shorter. Fewer bytes means less time on air.
- Error correction. Reed–Solomon parity bytes (the kind used on CDs and in QR codes) let the receiver rebuild bytes it misheard. Bytes from different blocks are shuffled together, so a clap or a cough damages a little of each block instead of one block a lot.
- Encryption. Both devices make a fresh key pair and swap public keys out loud. Each combines its own private key with the other's public key and gets the same secret (ECDH), which is never sent. The message is then locked with AES-256-GCM. If both screens show the same emoji, nobody swapped keys in the middle.
- Light. The same bytes can go by screen and camera instead. Each cell's red, green and blue switch on and off separately, 3 bits per cell. The receiver learns the timing from the blinking preamble, works out the grid and which way up the phone is from the sync pattern, and keeps correcting its timing as colours change.
- Checking. A CRC checksum confirms the repaired message is exactly what was sent.