Systems
Acoustic Modem
A half-duplex Python modem built with İrem Önen that sends framed text between laptops using speakers, microphones, and FSK tones.
- Year
- 2026
- Role
- Systems and signal processing
- Built with
- Python · DSP · FSK · Goertzel algorithm · Pytest
Built with İrem Önen, this project is a small acoustic data link. Text entered on one laptop is encoded as sound, played through its speakers, captured by another laptop’s microphone, and decoded back into text.
The modem uses six-tone FSK. Four tones encode dibits, while separate START and STOP tones frame each character. The receiver measures energy at the target frequencies with the Goertzel algorithm and uses a state machine for preamble detection, character reading, and inter-character waiting.
Implementation
- Maintained oscillator phase across symbol boundaries to avoid discontinuities.
- Used SNR thresholds, noise-floor checks, and stable preamble detection to gate the receiver.
- Kept live microphone mode and in-memory loopback tests on the same chunk-based timing model.
- Added diagnostics for tuning thresholds and inspecting signal energy by frequency.
Limits
The modem runs at 5 baud, is half-duplex, and has no error correction. It is a proof of concept rather than a general-purpose data link.