At first glance, this gorgeous retro-styled audio player built by [Max Kern] could absolutely pass for the genuine article. But then you take a closer look and realize that the “tape” it’s playing is actually an animation running on a 320 x 240 IPS display, and the Play and Rewind buttons on the front aren’t the chunky electromechanical affairs of yesteryear but actually cleverly repurposed MX keyboard switches.
By now you’re probably realizing that this player is quite a bit smaller than you first imagined, which in turn, means that it even its case is a modern fabrication. While it might perfectly encapsulate the look and feel of a piece of 1980s consumer electronics, it was squirted out on a thoroughly modern desktop 3D printer.
Even so, [Max] made sure to include draft angles in the CAD design and and a distinctive separation line so the case looked like it was injection molded. Following similar logic, he decided against using a modern rechargeable battery pack to power the electronics, opting instead for a more era-appropriate set of AA batteries.
In terms of hardware, the custom PCB is home to an ESP32 WROOM, a MAX98357A I2S audio amplifier, a FT231XS USB-to-serial chip, with enough passives and regulators to keep them all well fed and happy. The ESP32 has more than enough computational horsepower to chew through MP3 files, which are conveniently loaded via an SD slot built into the side of the player. As the player was actually intended for audio books, onboard playback is limited to a mono speaker; though there is a 3.5 mm audio jack to plug in a pair of headphones for when the built-in speaker isn’t up to the task.
Check out the video after the break to see how the player is assembled, as well as a demonstration of its simple three-button user interface. It looks like a joy to use, though the lack of fast forward and rewind sound effects took us a bit by surprise given the otherwise impeccable attention to detail. We’ll assume there’s some technical limitation that makes this particularly difficult to implement, and that their absence is currently keeping [Max] up at night.
As impressive as the final product is, we can’t say it’s a surprise. Frankly, we wouldn’t expect anything less from [Max] at this point. His adaptive OLED macro pad wowed us back in 2020, and his ZeroBot is still one of the slickest designs for a DIY two-wheeled robots we’ve ever seen.
31 thoughts on “Faux-Retro “Tape” Player Runs On ESP32 And 80s Vibes”
Shutup and take my money!
Also, this would be awesome to load up with programs for retro pc’s that load from the audio input.
True, but *.WAV (Wave, PCM) would be a better format for that perhaps. :)
Actually, there are more compact formats that store just the data, e.g. https://www.c64-wiki.com/wiki/TAP
The ESP32 could easily synthesize the audio from them when needed.
If you want retro AND audio, try making an acoustically coupled modem, complete with RS-232 output.
For a mobile phone.
Very nice. A great addition would be a mic and record button.
With record and play needing to be pushed together
Awesome project! Regarding the animation, the tape reels would only ever rotate at the same speed when the tape is equally distributed between the two. Having them rotate at different speeds would enhance the retro feel that much more!
Little details like that are definitely important. It‘s much easier to optimise the code for the identical wheels though. That way, the controller has to render only one reel and copy the pixels over.
While it would make sense to do it that way for optimization, I think the ESP32 has more than enough computational headroom remaining to handle something that minor, for the added cool factor. ;)
I’m no programmer, but off the top of my head the way I’d do it is use the current % of the file duration to determine the rate of rotation for the other reel. And getting this value could probably be achieved with a lookup table if you wanted to cheat a bit and keep the MCU from having to constantly do the math.
Are the graphics being done with sprites or circle/line draw routines?
Like case-o-player app on android? That would be a stretch
The logical next step would therefore be to show position in track/playlist by the varying diameters of the 2 reels – or am I just showing my age?
True story: as a kid, I tried to work out how the cassette player knew at which speed to move the reels. It’s hard, b/c they have variable radius, etc. Can’t remember if I ever succeeded. Might have been before I had calculus.
Then I opened up a cassette player and thought a little bit harder about the role of the capstan. Oh well.
But after all those years, this would finally be a legit reason to solve it! Thank goodness for software. :)
To my knowledge only the take up reel is driven, the other reel simply has a bit of drag applied to keep the tape taught and so naturally turns at the right rate.
And the display should be on a pivot, with an eject button, and that’s how you access the sd card slot. Also… it should reverse directions about half way through the list of songs and roll the other way, auto reverse for the win!
In this case, IPS does not refer to Inches Per Second.
Very nice work. However, I wouldn’t recommend soldering wires directly to the board like that. Wouldn’t it have been better to use board to board connectors or pin-header/socket connectors?
Thanks, the cable was a bit of an oversight. I planned to use a 2.54mm connector but there was not enough room for it in the end. Definitely on the list of improvements for a second version.
Beautiful build, but a real tape player of the era would have play and pause (or “Stop” back in the day) on separate keys. The Play/Rewind/FastForward keys locked down when you pressed them, so a separate key was necessary to unlock them.
Nice project !
Don’t jam it with C120 tapes…
Nice case! Everything fits perfectly!
Max, this is beautiful. My 13 year old who has never seen an actual tape player thinks it’s the cutest thing they’ve seen. Great work. I have a ton of suggestions, but this is HaD and I can darn well implement them myself instead of pester you with how I want your project to work. :)
That’s lovely, but make it stereo please!
Also please get better speakers! https://www.visaton.de/en/products/drivers/fullrange-systems/sc-46-fl-8-ohm
And add a bottle opener, and one of them things for getting boy scouts out of horses hooves.
Be a winner if it supported UEF files too
Even just the speaker grill is fantastic. Superb design.
THERE’S A MARKET FOR THIS if it supports Record and possibly (wireless?) file transfer:
Singers record sample tapes to self-evaluate and pass around, especially in a chorus/choir context. And sometimes when you’re going over a problem-spot in a song, you need to rewind a few seconds and play again, rewind a few seconds and play again.
With an analog tape, you very quickly learn that holding REW for a certain fraction of a second gets you a certain amount back in the song. You develop a “feel” for it, and can rapidly shuttle back and forth in the song by variable amounts. Digital players/recorders have a horrible workflow for this, jumping around by 5-second increments, or by smaller increments which then rapidly turn into larger increments as you hold the button, jumping an ENTIRE SONG for a short press instead of a tiny blip of a time which SHOULD be represented by a short press, etc.
If a WAV player could embrace a more-analog-like navigation style, it’d be a huge relief to owners of deteriorating Walkman units.
One step more, allowing recorded “tapes” to be transferred between units (bonus, automatically prefix the owner’s name onto files recorded on that unit), would be another gamechanger.
Of course, and linear speed is kept constant by capstan..
Can I rewind it with a #2 pencil?
I love it! This feels like it could become an open-source Teenage Engineering type of product with a bit more polish (animation, realistic ffwd/rewind sounds). The ESP32 is powerful enough to handle streaming audio from YouTube — maybe have this device “play” individual text files containing a YT URL as if they’re audio, alongside normal audio files? Holding the ffwd/rew keys could seek, and tapping them could skip.
Here is inspiration for the UI & UX:
Please be kind and respectful to help make the comments section excellent. (Comment Policy)