← Projects

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.