Podcasts on Floppy Disk


An old 3.5 inch floppy disk holds 1.44 MB of data. According to my calculations, that's 1,424 KB blocks. For a total of 1,458,176 Bytes. Once formatted as FAT, you end up with 1,457,664 Bytes of storage. But how much audio can a floppy hold?

(Here I mean wave based audio of human speech. It's trivial to fit more in using MIDI or speech synthesis.)

I'm going to use "A Podcast Of Unnecessary Detail" to experiment with, as this blogpost also has too much detail. The podcast is a 39MB MP3, running just over half-an-hour.

Here's the first 40 seconds of the original MP3 file, so you can hear the music, and male and female voices.

That's about 800KB. A floppy can hold about a minute and a half of that quality audio.

Squash it down

A floppy disk holds about 11,000 Kilobits. So, to hold 1,800 seconds (30 minutes) of audio, we need to encode audio at about 6kbps (Kilobits per second)

By coincidence, the Opus audio format supports encoding speech at around 6Kbps.

Here's the same sample of the podcast bounced down to mono and encoded at 6Kbps. The voices are pretty clear, but the music is extremely mushy. (The following files are in .opus format. They should play fine on Android and most desktop browsers).

Encoded using opusenc in.wav --downmix-mono --bitrate 6 out.opus

But that's still a little too big. The 33 minute podcast weighs in at 1,581,781 Bytes. Too large for a floppy.

Using the --framesize option, we can set the Framesize to 60 milliseconds. Not great for streaming, but we don't care about that, and it makes the files much smaller.

But opusenc has a few more tricks up its sleeve! Using --cvbr we can force the encoder never to go above a bitrate limit.

So, using opusenc in.wav --downmix-mono --bitrate 6 --cvbr --framesize 60 out.opus we can save 33 minutes, 8 seconds, in 1,422,676 Bytes. Enough space left over on a floppy disk for an image.

Podcast on a floppy disk.

But wait! There's more!

Surprisingly, the opusenc documentation is not quite telling us the whole story! You can pass any number lower than 6 to opusenc and it will try its best.

In practice, the lowest bitrate it will generate for speech is about 4Kbps. Here's the same sample:

opusenc in.wav --downmix-mono --bitrate 4 out-4.opus

What's the lowest we can go? How low before we lose all meaning?

The absolutely lowest encoding which produced any sound at all was 1.2Kbps. I warn you, this sounds awful!

opusenc in.wav --downmix-mono --bitrate 1.2 --hard-cbr out-1.2-hard.opus

This uses the --hard-cbr option which forces the encoder to a specific constant bitrate.

About the lowest you can go and still have things even vaguely intelligible was 2Kbps. Again, this sounds horrible, but it is just about possible to understand most of the speech. Even if they do sound like Daleks with low batteries!

opusenc in.wav --downmix-mono --bitrate 2 --hardcbr out-2-hard.opus

If you were prepared to have you audio that shitty, you can just about squeeze a full hour of speech onto an old floppy disk.

So, guess what tomorrow's blog post is going to be...?

Enjoyed this post?

If you like the silly things I do, you can say thanks by:

Or, just leave a supportive comment.


Share this post on…

  • Mastodon
  • Facebook
  • LinkedIn
  • BlueSky
  • Threads
  • Reddit
  • HackerNews
  • Lobsters
  • WhatsApp
  • Telegram

12 thoughts on “Podcasts on Floppy Disk”

  1. Alex Gibson says:

    Cool. Going back a bit, heard a prototype of podcasting on a BBC R&D/Cambridge University floppy disk. Think it used CCITT U-Law, some compression used in phone systems, that predated Fraunhofer MP3, and there was half an hour of surprisingly good sound. The computer used was an Acorn RiscPC, so this could use HD floppy disks formatted ADFS at 1.6Mb, that extra headroom made all the difference quality wise... might even still have it!

    Reply
  2. says:

    I don't know (a quick glance at the documentation doesn't make it clear) if the codec does this automatically, but the step which immediately occurs to me is to cut the sample rate. Telephone audio, using either A-law or μ-law companded PCM, which at 8 bits per sample is far from being an efficient codec (but very robust & easy to implement), renders speech quite well at a sampling rate of 8 kHz. The fewer samples you have to encode per second, the more bits per sample you can allocate at any rate of bits per second.

    Reply
  3. LeonZA says:

    Check out doing 1.6Kbps speech: https://jmvalin.ca/demo/lpcnet_codec/ Codec2 is also worth looking into as Alicja mentioned. It would be interesting to see how xHE-AAC will perform at ultra low bitrates, but unfortunately there are no free encoders out yet that have the low-bitrate coding tools built-in.

    @publius: most modern encoders are already tuned to resample to the best sampling rate based on the bitrate. The audio quality from normal telephone audio running at 8Khz mono, 64Kbps is pretty bad. I remember the old days trying to hear each in a conference call

    Reply

Trackbacks and Pingbacks

What links here from around this blog?

What are your reckons?

All comments are moderated and may not be published immediately. Your email address will not be published.

Allowed HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <p> <pre> <br> <img src="" alt="" title="" srcset="">