The Pennywhistle was an early acoustic coupler modem originally designed and built by Lee Felsenstein in 1973, and later commercialized and offered for sale in 1976. It was one of the earliest modems available for hobbyist computer users. Like most acoustic coupler modems, the Pennywhistle was replaced by the Hayes Smartmodem and similar models from the early 1980s.
As part of the effort that would lead to the Community Memory bulletin board system, Lee Felsenstein had found an Omnitech modem ("or something like that"). Designed to operate at rates as high as 300 bits per second (bit/s), the modem was able to change its speed to match conditions or differences in the modems at either end. In general it was good for only 100 bit/s, the speed that was used for much of its operational life. The modem was attached to a Teletype Model 33 ASR machine at Leopold's Records in Berkeley, California and connected to the SDS 940 mainframe computer in San Francisco.
Felsenstein was unimpressed by the Omnitech design, especially its price of $300, and convinced himself he could design a better version. He found that one half of the design problem was easy; generating the proper tones for transmission was simple. The other half of the problem was much harder; listening to the incoming signal and discriminating between the tones for "one" and "zero". The traditional solution was to generate a local reference voltage and compare it to the incoming signal, but this was subject to many problems, from noise or distortion on the line, to drifting of the local tone due to events as mundane as temperature changes.
Felsenstein found two key improvements that led to a dramatically less expensive and more reliable design. The first was to ignore the idea of a variable baud rate, which was useful in some contexts, but not when used purely for data communications over known-good lines. The other improvement, which would prove key to the design, was to use the incoming signal itself as the reference tone. While working at Ampex, Felsenstein had learned that the signal would always return to a "one" tone between sending bits of data; his new design looked for these signals and used them to resynchronize a local phase locked loop (PLL). The system stored the "one" voltage generated by the PLL on a capacitor and set the threshold voltage to a fixed offset. The capacitor would slowly recharge and be reset by the next "one' voltage.