What do you get when you combine an ESP32, a 16-bit DAC, an antique VFD, and an IDE CD-ROM drive? Not much, unless you put in the work, which [Akasaka Ryuunosuke] did to create ESPer-CDP, a modern addition for your hi-fi rack.
It plays CDs (of course), but also can also scrobb the disks to Last.fm, automatically fetch track names and lyrics for CDs, and of course stream internet radio. It even acts as a Bluetooth speaker, because when you have an ESP32 and a DAC, why not? Of course we cannot help but award extra style points for the use of a VFD, a salvaged Futaba GP1232A02. There’s just something about VFDs and stereo equipment that makes them go together like milk and cookies.

In terms of CD access, it looks like the IDE interface is being used to issue ATAPI commands to the CD-ROM drive to get audio out via S/PDIF. (Do you remember when you had to hook your CD drive to your sound card to play music CDs?) This goes through a now-discontinued WM8805 receiver — a sign this project has been in the works for a while — that translates S/PDIF into an I2S stream the ESP32 can easily work with.
Work with it it does, with the aforementioned scrobbing, along with track ID and time-sinked lyrics via CDDB or MusicBrainz. The ESP32 should have the computing power to pull data through the IDE bus and decode it, but we have to admit that this hack gets the job done — albeit at the expense of losing the ability to read data CDs, like MP3 or MIDI. [Akasaka Ryuunosuk] has plans to include such functionality into v2, along with the ability to use a more modern SATA CD-ROM drive. We look forward to seeing it, especially if it keeps the VFD and classic styling. It just needs to be paired with a classic amplifier, and maybe a DIY turntable to top off the stack.
Thanks to [Akasaka Ryuunosuke] for the tip. If you also crave our eternal gratitude (which is worth its weight in gold, don’t forget), drop us a tip of your own. We’d love to hear from you.
You sure about that CD-ROM having S/PDIF out? I’ve never seen that in all my years of PC building; the audio out from IDE CD drives is analogue specifically because your computer may not have a CD quality DAC or the CPU cycles to schedule back in the DOS/Win9x days.
The 4-pin one is analog, but a lot of them have a 2-pin next to that which is SPDIF. The further into the 2000s you go the less of them have it though. I remember soldering a TOSLINK port to mine at one point to write music onto my minidisc player :P
ATAPI CD-ROM drives with a direct S/PDIF output certainly existed. I have a few in my collection.
Although such drives were very uncommon. Most drives only had analog audio connectors on the back, just as you remember
They were side by side in the classier drives… a 2-pin plug for “digital” next to the 4-pin analog.
The connector was reasonably common in CD-ROM drives of the late 90’s and early 2000s, but very nondescript. You could easily assume it was a random pair of jumper pins. If it was labeled, it probably just said “digital”.
I certainly can’t remember anyone ever actually using it in a PC build, since afaik it was only supported by later discrete sound cards (the SB Live! and Audigy, for example), and you could move digital audio data across the ATAPI interface just fine too…
By translating S/PDIF to I2S that way, this project gives up any chance to read the subcodes from the stream… not all drives read the subcode into the S/PDIF stream, but when they do, it holds CD-TEXT and any other fancy features present alongside the audio in sync.
Some CD-ROM chipsets will actually spit out subcode data in the S/PDIF data stream, as the user bit of the audio sample. Also it is common to use the validity bit to signal if a sample has been reconstructed (interpolated) in the event of C2 errors. These ancillary bits are usually available as separate outputs on S/PDIF interface receivers and have simple framing that should be easy to decode.
It’s too bad that CD-TEXT never really caught on.
The drives post-2000 or so usually support parsing and reading subcode on their own so CD TEXT actually works on this! :P
I wonder how it would be with the rev2 though if I go with the direct data bus hookup and thus reading audio data on my own
Great looking build – so cool when a build a taken past “got it working” to “made it look good too”.
As long as you don’t turn it around and look at the back panel xD
Thanks!
The Homer Simpson approach
Last.FM scrobbling – can you get pills for that? It sounds nasty.