// the find
ggerganov/ggwave
Tiny data-over-sound library
ggwave is a C++ library that encodes small payloads into audible or ultrasonic tones using multi-frequency FSK, then decodes them from microphone input. It's for developers who need to transfer tiny amounts of data between devices without network infrastructure — think IoT pairing flows, air-gapped data transfer, or contact exchange via sound. The same author as llama.cpp and whisper.cpp.
The core library has no audio backend dependency — it only generates and consumes raw float samples, so you wire in whatever audio API fits your platform. Reed-Solomon ECC is built in, which meaningfully improves real-world reliability in noisy environments. The platform coverage is genuinely wide: Arduino, ESP32, RP2040, iOS, Android, Python, JS/Wasm, and a Debian package, all with working examples rather than stub code. Ultrasonic mode (15kHz+) lets you transmit data inaudibly, which matters for production UX.
8–16 bytes/sec is the ceiling, full stop — this is a signaling channel, not a data channel, and anyone who doesn't internalize that before integrating will be frustrated. The library is at v0.4.3 and last saw real development activity a couple of years ago; the CHANGELOG shows no changes since 2022, which is a concern for a security-adjacent primitive used in pairing flows. No built-in encryption or authentication — the README shows device pairing use cases but you're entirely on your own for key exchange or message integrity beyond the ECC. Sensitivity to real-world noise (HVAC, music, other conversations) is underdocumented; the browser demos work in a quiet room but field performance is hard to predict without testing your specific environment.