Terence Eden. He has a beard and is smiling.
Theme Switcher:

A floppy-disk Walkman - using a Raspberry Pi

· 34 comments · 750 words · Viewed ~21,688 times


I have built the most inconvenient way of playing music! It is lo-fi awfulness and cyberpunk grungy.

Thanks! I hate it!

Ingredients

WHY?!?!

As I discussed yesterday, it's possible to fit half an hour of speech on a single floppy disk. The best band in the world are The Beatles, and their shortest album is A Hard Day's Night - at 30 minutes, 45 seconds. Beatles audio was designed to be played over crappy AM radio in mono, so is well suited to being compressed using the latest audio codecs.

OK, I also got sent a USB floppy drive to review and wanted to do something interesting with it!

Compress your audio

A floppy disk can hold a maximum of 1,457,664 Bytes.

Using the Opus Audio Codec, you can squish audio to miniscule file sizes.

I got a single WAV of the album, and ran this command - which is about the best quality within the target filesize:

opusenc hdn.wav --downmix-mono --bitrate 6.7 --framesize 60 --discard-comments --discard-pictures --cvbr hdn.opus

That got it down to a trim 1,429,105 bytes. Enough space left over for some low-resolution cover art!

A very tiny copy of the Hard Day's Night album cover.

You can shrink the audio by a few more bytes by using removing the default metadata from .opus files.

How does it sound?

The copyright for Hard Day's Night should have expired in 2014. Sadly, the law was changed in the UK in 2013. So it doesn't expire for another 14 years. Here are some samples which I am using for non-commercial research purposes. This, I hope, falls under the fair dealing exception.

🔊
Not much worse than fading medium-wave station, right? RIGHT!?

(I've re-encoded it to MP3 in order for it to play in the browser.)

Building It

Sadly, the Pi Zero doesn't have an an audio out jack. But the USB floppy drive is pretty big, so we don't lose much space by going for a full-sized Pi. The Pi has a weird combined video / audio jack. I powered it using a USB Battery. A floppy disk with an album conver printed on it. It is about to be plugged in to a mishmash of electronics.

All held together with rubber-bands. Classy!

Here's a high tech block diagram:

🔋---→💻---→ 🎧 
      ↑
      |
      💾

Run these magic commands

I used Raspberry Pi OS Lite which doesn't have a desktop manager, and fits on a 4GB microSD card.

Set the audio output to go via the headphone jack:

sudo raspi-config

Then choose: Option 7 (Advanced Options), then A4 (Audio), then 1 (Headphones).

Set the headphone volume to 100% (or whatever you fancy):

amixer sset "Headphone" 100%

Make sure you have the Opus tools and codecs installed:

sudo apt install opus-tools

Make sure that the floppy disk has been detected:

dmesg

It will probably show us as sda - mount it with

sudo mount /dev/sda /mnt

Go to the directory with your audio in it:

cd /mnt

Decode the file and pass it through to aplay - this should start playing music straight through your headphones.

opusdec --force-wav --quiet hdn.opus - | aplay

ENJOY!

Notes

Depending on the speed of your drive, and the framesize of your audio, you may experience buffer-underruns. This will cause the audio to skip. Just like jogging with a CD Walkman!

I printed the album cover on a Bluetooth Thermal Printer.

A floppy disk with a low fidelity label of A Hard Day's Night.

ToDo

  • Build a circuit to let me press buttons to play, pause, and skip tracks.
  • Make it auto-play when the disk is inserted.
  • Use the Rockband Moggs to make acapella / vocal only disks. Should be better quality without the backing music.
  • 3D print a case so I can go jogging with it while wearing a shell suit.
  • Register a patent on the blockchain so people have to pay me a trillionth of a EdentCoin every time they play music using my brilliant invention.

Put your ideas in the comment box.

Thanks

Huge thanks to Alistair for sending me a bunch of old floppies to play with.

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…

34 thoughts on “A floppy-disk Walkman - using a Raspberry Pi”

    1. I did think about using some of those non-standard formats, but I wasn't sure if I could get the Pi to read them.

      Reply

      1. Last time I looked at USB floppy drives, you couldn't use those formats as it was done in the USB controller, and want exposed to the system.

        Reply

    1. I used to love Mavica floppy cameras. I worked on a very fun pilot of selling rare books online from Oxfam shops using them. At the time we found it the easiest way for less technical shop volunteers to transfer the files they needed to put onto online auctions - the transfer software tools for most digital cameras at the time were horrid & needed installing on people's computers, and transfer leads of the time were much less standard or ubiquitous than floppy drives. But that was a rather niche need - it is indeed an awful idea for anything else 🙂

      Reply

  1. Talking of floppies did you ever see that Windows 95 on a floppy that was produced, it did sort of work visually but was really a linux derivative with a windows shell.

    Reply

    1. I mean, Windows 95 did come on floppies... thirteen of them, formatted in that Microsoft Advanced Format or whatever it was called.

      One CD was much more convenient... and it had a Weezer music video on it!

      Reply

  2. We remember the floppy disk as the storage medium most of us used two decades or more ago, limited in capacity and susceptible to data loss. It found its way into a few unexpected uses such as Sony’s Mavica line of digital cameras, but outside those who maintain and use older equipment it’s now ancient history.Seemingly not for [Terence Eden] though, who has made a portable audio player that uses a floppy disk as its storage medium. It came about with the realization that half an hour of extremely compressed audio could be squeezed onto a standard 3.5 inch floppy, and then that the Beatles’ A Hard Day’s Night album comes in at only a shade over that time. With some nifty manipulation of the compression command line and the judicious removal of some unnecessary metadata, the album can fit on a floppy in equivalent quality to the AM radio fans would have heard it over back in 1964.The player would have been a major undertaking when the floppy was king, but in 2020 it’s simply a USB floppy drive, a Raspberry Pi, and a battery pack. He’s given us the full instructions, and no doubt a more permanent version could be built with a 3D-printed case.We’re fascinated by the recent trend of storing audio on floppy disks, but despite the hipster vibe, we doubt the idea will catch on. It’s not the first floppy-based player we’ve seen, but the previous one was more of a fake player.

    Reply | Reply to original comment on hackaday.com

  3. I especially like the red rubber bands, most commonly used by the Royal Mail because the degrade over time and therefore don't contaminate the ground when dropped. This means that they will unquestionably fail at some point (presumably when most inconvenient?) and make the whole thing just that little bit more annoying.

    Superb!

    Reply

  4. Weirdly I did this on the Amstrad CPC6128 in the early 90's. And rediscovered my CPC at the weekend. The disk marked Music didn't survive the plastic box in the shed unfortunately. Ni ether did the CPC but I can and will rebuild it.

    Reply

  5. So I built something like this using NodeJS, look at UDev rules for the ability to "autoplay"

    Reply

  6. Terence Eden has created a device which will allow you to play music in what he calls the most inconvenient way possible. Labelled as “lo-fi awfulness and cyberpunk grungy”, this portable music player is a Raspberry Pi hooked up to a USB floppy drive and powered by a battery. Some command line operations allow him to squeeze a full album onto a 1.44MB floppy. Further commands allow him to read the floppy drive and pipe the music into his headphones. The audio quality is similar to a MW radio station and the audio will skip if the floppy drive buffers! It’s all very 1980s!You can read more over on his blog including his list of ideas of how to improve it, including taking it “on the road”. There are also some videos of the walkman in action!

    var bdfd = document.getElementsByClassName("bdfd");for (dfdb = 0; dfdb < bdfd.length; dfdb++) { bdfd[dfdb].style.display = "none";}Share this:FacebookTwitterRedditPinterestLinkedInTumblr

    <em>Related</em>

    Reply | Reply to original comment on www.recantha.co.uk

  7. via Terence Eden

    As I discussed yesterday, it’s possible to fit half an hour of speech on a single floppy disk. The best band in the world are The Beatles, and their shortest album is A Hard Day’s Night – at 30 minutes, 45 seconds. Beatles audio was designed to be played over crappy AM radio in mono, so is well suited to being compressed using the latest audio codecs.OK, I also got sent a USB floppy drive to review and wanted to do something interesting with it!

    Read more.Each Friday is PiDay here at Adafruit! Be sure to check out our posts, tutorials and new Raspberry Pi related products. Adafruit has the largest and best selection of Raspberry Pi accessories and all the code & tutorials to get you up and running in no time!

    Reply | Reply to original comment on blog.adafruit.com

Trackbacks and Pingbacks

What links here from around this blog?

  1. Colourful floppy disks in a frame.A Collection of Imaginary Software
  2. My smiling face.Best of: What I blogged about in 2020
  3. Random monochrome tiles with the word Numbers Station superimposed.1KB JS Numbers Station

What are your reckons?

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

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

To respond on your own website, write a post which contains a link to this post - then enter the URl of your page here. Learn more about WebMentions.