I used my 16-bit 192 kHz sound card to determine how much data can fit on a cassette by "prolonging" the length of each bit until I got an acceptable error rate. I found that the absolute best you can do with a decent old Technics tape deck is 8-bit at 12kHz which means for a 90-min Tape you can fit about 60 MB on one tape.
I noticed however that switching between bits produced a "ringing artifact" oscillating at about 60 kHz. If this is caused by my particular setup I don't know. With a better modulation than just PCM this could be compensated and you could pull probably more data out of the stream.
Thanks for the hint. The next thing to try would be to connect the tape head directly to the IO-Pins of a Raspberry PI and then use a simple manchester encoded signal ramping up the frequency. A Raspberry PI can push up to 1 MHz and has an internal Schmitt-Trigger which would be perfect for reading the data back.
I noticed however that switching between bits produced a "ringing artifact" oscillating at about 60 kHz. If this is caused by my particular setup I don't know. With a better modulation than just PCM this could be compensated and you could pull probably more data out of the stream.