heap.ovh

embedded adventures

Labelling MiniDisc in 2021

I recently purchased a MiniDisc recorder. It is a Sony MZ-R90 model back from 1999. The photo shows it held together with a rubber band as the battery cover is broken.

Sony MZ-R90

I know what you are thinking.

But why?

The MiniDisc is generally considered as one of the failed media formats of the nineties. Fighting an uphill battle against the ubiquitous CDDA, trading blows with DCC and ultimately losing to local-storage players best exemplified by the 2001 Apple iPod with its 5GB 1.8" hard drive, followed by dozens of various MP3 players as NAND prices finally began to fall.

However, a MiniDisc device is an interesting snapshot of the technology at the time. With its aluminum body and industrial design it has the promise of future-that-never-was, a miniaturized mechanical marvel at the peak of Japanese electronics industry in the 90s. It stands for the short period of time before consumer devices became streamlined, plastic and soulless. The retro appeal is clear.

There is, however, another compelling feature. For many models complete service manuals are available. We are talking PCB schematics, block diagrams, waveforms at given testpoints, exploded mechanical views, all the good stuff you do not usually see any more. Despite miniaturization (the device is not much larger than the MD itself) it is not yet fully integrated, with many discrete elements.

In the late 90s these devices were still fairly expensive and not meant to be discarded in the event of failure. They were personal, often adorned with stickers by their owners, meant to be cherished and repaired. In that sense, they also represent a time before personal electronics became unservicable and disposable, with tacky plastic bodies headed straight for the dump. This makes them interesting in the context of anticonsumerism and renewed interest in the Right to Repair movement.

So despite the fact that the recorder is old enough to drink it still works fine and more importantly I have the means to keep it going (with the caveat that for some parts replacements cannot be sourced any more).

How practical is it in 2021?

As music is no longer being released on MD (save for some niche limited-run editions) the only practical way to use it is record your own. You might also notice that the device does not have a USB port. The conclusion is as simple as it is inconvenient - the recording takes place in real time over analogue (line-in) or optical (mini-TOSLINK) input.

Another downside is that recorded tracks will not carry over their metadata and that they may not be correctly separated as the recorder tries to guess the end of a track based on a period of silence which may not always be there. The MiniDisc community has solved the second issue by adding 2s silent tracks to the playlist. For the first one the common advice was to get a newer NetMD-enabled device which had USB and copied over the track names. Or so I thought.

The period-accurate solution

Digging through the Web Archive, I discovered that people had the same problem back then and developed a DIY solution. Each button on a wired remote has a corresponding resistance value. By emulating the button presses with a small circuit the track names can be entered programatically. The original solution used a multiplexer with a resistor network connected to a PC over a parallel port and a Winamp plugin. I set off to replicate this idea with slightly more modern parts.

Enter md-rec

From the beginning I wanted to make it a weekend project. To save time I wanted to avoid writing drivers or plugins and instead focus on the button-pressing logic while using existing software to do the rest. I also wanted to simplify the electronics of the interface circuit a bit.

I settled on an 8-bit 50k ohm digital rheostat driven by Raspberry Pi Zero over SPI. A Python script on the Pi implements the button-pressing and talks over a REST API to the beefweb plugin which controls a compatible music player (Foobar2000 on Windows or DeaDBeeF otherwise). It grabs a track name from the music metadata, sanitizes it into the supported charset (ASCII with some omissions) and labels each track letter-by-letter as it is recorded. It also inserts a track mark at the end of each track appropriately.

md-rec

Code and schematics are available on github if you want to build your own. It is about €4 in parts if you already own a Raspberry Pi.