modem

Where the ritual comes from

modem performs a piece of telecoms history, then runs a real connection underneath it. None of that happens in a vacuum. Below: the standards actually implemented, the prior art worth trying if speed rather than ceremony is what you want, the history that makes the ceremony worth performing, and the project's own source.

Back to the demo

The technical record

What each part of the handshake actually was. The README and docs/ already carry the accurate detail on how this project uses them; these are the standards and references themselves.

  • Bell 103 modem (Wikipedia)

    The standard this project's connection actually implements once CONNECT appears - AT&T's 1963 300 baud modem, with the same originate and answer tone pairs.

  • Frequency-shift keying (Wikipedia)

    The modulation underneath everything past the overture: a bit is a shift between two frequencies, nothing more exotic than that.

  • ITU-T V.21

    The international 300 baud duplex standard that gave Bell 103's originate/answer split its ITU form outside North America.

  • ITU-T V.22

    1200 bit/s duplex, one step up the same lineage - a rung this project doesn't attempt to reach.

  • ITU-T V.34

    Up to 33,600 bit/s - the standard behind the screech everyone actually remembers, and the one the README is explicit about not implementing for real.

  • Dual-tone multi-frequency signalling (Wikipedia)

    What a dialled digit actually is: two simultaneous tones, chosen so no harmonic of one gets mistaken for the other.

  • Echo suppressor (Wikipedia)

    Why a call had to announce itself before data could flow - left switched on, these devices would have muted the very signal a modem needed to hear.

  • ITU-T V.25

    The recommendation that specifies the answer tone itself and the procedure for disabling echo control devices on the line - the reason the 2100 Hz ANSam tone exists at all.

Prior art and related projects

Tools that move data over sound for real, faster than this ever will. That's not a criticism - the README says as much - it's a reason to reach for one of these instead when speed, not ceremony, is the point.

  • minimodem

    The reference Bell 103 implementation modem-audio's own test suite cross-validates against in both directions (see docs/ber-calibration.md) - and the tool to reach for if the ceremony isn't what you're after.

  • ggwave

    A tiny data-over-sound library built for speed and range, with none of the dial tone, DTMF or answer-tone ceremony this project performs on purpose.

  • quiet

    A JavaScript binding for libquiet that sends and receives data through a browser's own sound card - the same audio-as-a-wire idea, aimed squarely at throughput.

  • tynsel

    A space- and time-efficient 300 baud Bell 103 software modem built to run on microcontrollers - the same standard, a very different constraint.

The romance

Why any of this was worth building.

This project

  • dbhq-uk/modem on GitHub

    The full workspace: modem-core, modem-audio, modem-tui, modem-wasm and this page, all in one place.

  • Releases

    Built binaries for Linux, macOS and Windows once a release is tagged - empty for now, not broken.

  • Licence (MIT)

    MIT. Use the DSP, fork the ceremony, take whichever part is useful.