A floppy-disk Walkman - using a Raspberry Pi
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!
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.
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.
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.
CuriousScutter said on twitter.com:
What a time to be alive
亂七八糟 said on twitter.com:
What an awesome build! I remember Roland used to make some floppy based players, but I don’t think they ever made something truly portable.
Andi Archer says:
"A floppy disk can hold a maximum of 1,457,664 Bytes" not quite , you can squeeze a whole 1680 kB on a disk if you format it differently much like used by Microsoft for its floppy disk editions. https://en.wikipedia.org/wiki/Distribution_Media_Format
@edent says:
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.
David Sheldon says:
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.
mike says:
I can't decide if this is a better or worse idea than a digital camera that uses floppy disks. https://en.wikipedia.org/wiki/Sony_Mavica#Digital_still_cameras_with_storage_on_3.5%22_floppy_disk
John Wood says:
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 🙂
Andi Archer says:
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.
Erik Tomlinson says:
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!
Clive Jones said on twitter.com:
Good grief; a 3.5" floppy looks HUGE in that context!
Stamanfar said on twitter.com:
Shit like this gives me life. Well done sir.
Andy Stanford-Clark said on twitter.com:
Genius 🙂
Jenny List mentioned this.
HN Front Page said on twitter.com:
A floppy-disk Walkman – using a Raspberry Pi L: shkspr.mobi/blog/2020/09/a… C: news.ycombinator.com/item?id=243905…
💬 said on twitter.com:
Nobody: This guy: I want to play music like it was back in hipster days. Over a floppy.
shkspr.mobi/blog/2020/09/a…
Dale Lane said on twitter.com:
A floppy-disk Walkman. I love this. It's sort of a so-awful-it's-awesome thing. 😁 shkspr.mobi/blog/2020/09/a…
Stuart Hall says:
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!
Hn150 said on twitter.com:
A floppy-disk Walkman using a Raspberry Pi shkspr.mobi/blog/2020/09/a… (news.ycombinator.com/item?id=243905…)
Amigiac says:
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.
Paul J S says:
Well played, Sir!
Massimiliano Giovagnoli says:
This post made me happy! 😁 Awesome work!
Karl says:
So I built something like this using NodeJS, look at UDev rules for the ability to "autoplay"
Michael Horne said on www.recantha.co.uk:
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>
Phil Markunas said on twitter.com:
I've always wanted a floppy disk walkman. #cyberpunkCasual
shkspr.mobi/blog/2020/09/a…
Takara said on blog.adafruit.com:
via Terence Eden
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!
Terence Eden's Techno-Walkman Uses a Raspberry Pi, the Opus Codec, and Floppy Disks for Lo-Fi Beats - Hackster.io said on :
This Article was mentioned on hackster.io
Rina Fukazu said on :
This Article was mentioned on gizmodo.jp
Max Headroom said on twitter.com:
A cenu za nejzbytečnější hack, který jsem za poslední dobu viděl, získává...
shkspr.mobi/blog/2020/09/a…
Mooch said on bsky.app:
Just frigging wonderful 💾🎶