I designed a tape modem for a product in the late 1980's. The problem really is not noise. The signal level is near saturation level of the tape anyway, so noise is well masked. The common circuits of the day apparently were very sensitive for getting the right level, particularly that of the playback. I did didn't even care about playback level, because I used an op amp at very high gain to amplify it to clipping anyway, then fed it into a 74HC14 Schmitt-trigger inverter to get a clean square-wave output with fast edges. That output went into the clock input of a 74HC74 flip-flop, and also reset an RxC time constant that went through another 74CH Schmitt-trigger inverter to the D input of the flip-flop. I used two frequencies. At the higher frequency, then next rising clock edge would trigger the FF before the RC had had time to get charged enough to change the data at the D input of the FF. At the lower frequency, the D input would already have changed before the rising clock edge. The FF's output went to the 65c51 ACIA's RxD input.
I used 1200Hz and 2400Hz, which were easy to tell apart with cheap (non-precision) parts, then 300bps gave four cycles at the lower frequency and eight for the higher frequency, which proved to be plenty. There were no glitches at the frequency change, and it didn't matter what part of the cycle it was at when the change took place. 300bps may be too slow for loading a game, but it was plenty fast for our unrelated application, and I tested for hours, with cheap tape, and never got an error. When I doubled the rate to 600bps, I got an error every few hundred bytes.
I had worked as a repair tech at TEAC a few years earlier, and I aligned every machine when I was done with it. I was quite familiar with the poor performance of cassettes, which might not be what you'd expect.
Dropouts are a big problem with cassettes. These are tiny spots in the tape's magnetic coating where the output, particularly at high frequencies, drops way down. If you play back a solid tone and watch it on an oscilloscope, you'll see the amplitude bobbling badly, even with good tape and a good machine. This is why I chose to amplify the signal from the tape to the point that it would be clipping with any amount of real signal from the tape.
Also, at 0VU, cassettes'
frequency response is
terrible. It only goes to about 4kHz. You might look at the specs on your expensive home-entertainment cassette machine and see something like 16kHz; but that's always measured at extremely low levels, like -40VU, so as not to scare the prospective buyer away. I used a triangle wave which is easy to produce with penny parts and not have much harmonic content, and used frequencies that were high enough that the harmonics were in the area where the tape's response naturally attenuated them anyway.
Another problem for typical cassette data circuits is that at high frequencies, the
phase is all over the place because of poor tape handling in the shell and not moving the tape fast enough for the amount of flexibility of the tape itself. If you play the left and right channels into the X and Y inputs of an oscilloscope and get a Lissajous pattern at high frequencies, what you'll see is like scribbling all over the center of the screen, because of the bad phase behavior and inconsistent output level. The poor phase response undoubtedly contributes to the error rate in the way some cassette data circuits were designed.
OTOH, the open-reel machines gave solid, steady tones at 20kHz and 0VU. There was no need to hide the truth by manipulating the specs.
A few years after designing the tape modem described above, I made one for home use but added the RS-232 line drivers and receivers for use with an RS-232 port (TxD and RxD only, no handshaking) on my
workbench computer. Soon after that however, I²C serial EEPROMs were coming in, with densities that competed with a cassette, and
much higher speeds, and much tinier packages, so the cassette tape modem went by the wayside. On top of that, tape machines rely on the rubber belts and idler wheels which rot, and replacement parts have become unavailable. (The pinch roller doesn't last indefinitely either, but tends to last a lot longer than the other rubber parts.) At TEAC we always replaced all the rubber parts on every machine we worked on, just to make sure it would last that much longer, even though the machine was normally in for something else. Heads wear out too; but if you're not using the machine hours every week, the heads will probably long outlive the rubber parts.