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.
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.
mauvedeity said on twitter.com:
I love the joyous silliness of this endeavour. It is what I come to the Internet for.
preto said on fosstodon.org:
@chaitanya The average space that a podcast that I produce is 1.6mb. So, with little effort I could store one in a floppy!
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!
Zoë said on twitter.com:
Reminds me of Algorithms work on the Amiga. pouet.net/prod.php?which… youtu.be/EiMkvW-qSrc
Alicja says:
Prior art: https://auphonic.com/blog/2018/06/01/codec2-podcast-on-floppy-disk/ You should look into using Codec 2, it's designed for ultra-low bitrates!
publius 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.
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
Andrew (R.S Admin) said on retro.social:
@Edent Hey, me too! http://ajroach42.com/floppycasts-1-44mb-podcasts/ Floppycasts - 1.44MB Podcasts
Chrissy Keygen said on mastodon.lol:
@ajroach42 @Edent back in the bad old days of the mid 2000s when I didn't have internet, and had to download files by leaning out my bedroom window with a PSP to catch unlocked wifi from across the street; low-bitrate podcasts were an absolute godsend!
𝖓 said on twitter.com:
shkspr.mobi/blog/2020/09/p…
Not gonna lie, I kind of want to revive the whole Floppyzine/diskmags scene.
zines, poetry, illustrations, games, podcasts, tracker or midi files, etc.
Old school Cyber Rag and Big Blue disk kind of stuff.
Archie said on mastodonapp.uk:
@Edent @paulrickards Wow. I'm shocked that the voices are so clear at 6kbps!