My father and I recently dug out his old Commodore 64 from his basement and tried to revive it. Among other accessories, we also found his old Datasette drive, which is essentially a normal tape drive that can be connected to the computer to store and load data on a standard compact cassette. With a so called "Turbo tape" program, we can store about 3 MB of data on a 90 minute tape (estimated, I haven't tested it for a full tape because the Commodore 64 only has 64KB of RAM), so about 600 B/s. This number seems really small considering that a compact cassette of that type can store 90 minutes of relatively high fidelity analog audio. From Wikipedia I've found out that this is probably due to the fact that this drive used extremely simplistic encoding and a very primitive error correction scheme.
Now, this begs a question which I haven't been able to find an answer for searching the web: How much data could we theoretically store without errors on a compact cassette with more complex, modern encoding schemes like QAM/PKS and modern error correction like Reed-Solomon codes? Have there been any projects trying to explore that?
Furthermore, a more general question: Given an analog medium of known signal to noise ratio and frequency response, how can one even calculate (or approximate) the maximum digital data rate that can be written to it?
And just to be clear, I'm not talking about the Commodore 64 here. It was just the reason this question occured to me in the first place. So please don't vote to close this question or move it to retrocomputing. I'm asking about what modern technology could achieve with compact cassettes, not a 40 year old 8-bit computer. This is a perfectly valid electrical engineering question (though it might have some connection to the DSP forum as well).