Update 2022: Web MiniDisc Pro can access NetMD devices through the browser and can also download protected files!
If you have music on a collection of MiniDisc media and want to finally copy the data off onto modern media (or the cloud!), here are simple instructions for some different solutions:
- MZ-RH1 and NetMDPython
- MZ-RH1 and SonicStage
- Analog Copy
- Bonus: Recovering Deleted Tracks
MZ-RH1 and NetMDPython
The best device for digitally dumping MiniDiscs is Sony’s last (and best) MiniDisc recorder, the portable MZ-RH1. Unfortunately, this makes it quite pricy on the used market these days – but you can (and should!) always sell it after you’re done dumping your media…
Dumping
The NetMDPython set of scripts can copy the original ATRAC1-encoded bitstreams off MiniDiscs. You can run it on Windows, macOS or Linux. I will describe the Linux steps with Ubuntu – I would advise Windows and Mac users to set up a virtual machine with Ubuntu, since this is the most reliable way.
-
First, you need to make sure that you have Git, Python 2 (with crypto support) and libusb installed:
sudo apt-get install git python2 python-crypto libusb-dev
-
Then, get the source from the linux-minidisc project:
git clone https://github.com/glaubitz/linux-minidisc.git
-
The tools are in
linux-minidisc/netmd
cd linux-minidisc/netmd
-
Connect your MZ-RH1 to the (virtual) machine, but do not insert a MiniDisc yet. The Linux
usb-storage
driver would claim any inserted media, so that the tools wouldn’t be able to access it any more. Therefore, you need to remove theusb-storage
driver:sudo modprobe -r usb-storage
-
Now make sure that the MZ-RH1 shows up:
sudo ./lsusb.py [...] Bus 002 Device 006: ID 054c:0286 Sony Net MD/Hi-MD [...]
-
If your device is detected, you can list the contents of the MiniDisc like this:
sudo ./lsmd.py Disk (writable media) We Are The Night Time used: 01:09:50+032 (87.14%) 14 tracks 000: 00:01:04+027 sp stereo unprotected No Path To Follow 001: 00:06:33+039 sp stereo unprotected We Are The Night [...]
-
You can dump the whole media like this:
sudo ./upload.py Storing in We Are The Night Uploading ./01 - No Path To Follow.aea Done: 10000/1a51a0 (3.80%) Done: 20000/1a51a0 (7.60%) Done: 30000/1a51a0 (11.40%) [...]
Converting ATRAC1 Files
The resulting files are in .aea
format, which is the raw data from the MiniDisc, encoded in the ATRAC1 format.
You can convert them to any other audio format using ffmpeg:
ffmpeg -i file.aea file.wav # decompression
ffmpeg -i file.aea file.mp3 # lossy recompression
ffmpeg -i file.aea file.m4a # lossy recompression
Limitations
NetMDPython can not dump tracks that are marked “protected”. This includes all tracks on pressed MiniDiscs, tracks that have been copied from a digital master, and tracks written with the PC software (SonicStage).
MZ-RH1 and SonicStage
Sony’s SonicStage software is an iTunes-like application for Windows that can, among many many other things, transfer most tracks from MiniDisc to the PC’s hard disk.
(The last version is 4.3; the screenshots are showing 3.4. I recommend Windows XP; newer versions might work as well.)
- Navigate to the “Transfer” Tab. Your MZ-RH1 should show up in the pane on the right.
- By default, SonicStage will recompress dumped data as ATRAC3+. To make sure you don’t lose any sound quality, press the toolbox icon, select “Advanced…” and “Import Settings”, and set the format for importing non-MDLP tracks to “PCM”:
- Now you can drag and drop tracks from the right pane to the left one. Right clicking a track on the left and selecting “Properties…” will reveal the location of the file in the filesystem.
Converting OMA Files
The resulting files are in OpenMG Audio (.oma
) format, which is Sony’s container format that can contain audio data encoded with one of a number of different codecs. Since we changed the import settings to PCM, they will basically be the same as umcompressed WAV/AIFF files (44.1/2/16), just in a different container.
ffmpeg can also convert .oma
files into any other audio format:
ffmpeg -i file.oma file.wav # lossless container conversion
ffmpeg -i file.oma file.mp3 # lossy recompression
ffmpeg -i file.oma file.m4a # lossy recompression
Limitations
SonicStage does not allow dumping the raw ATRAC1-encoded data from the MiniDisc, it always decodes it and stores it in a different format. When decoding to PCM, as shown above, there is no quality loss.
Unlike NetMDPython, SonicStage can dump protected tracks from pressed MiniDiscs, but it also cannot dump tracks that have been copied digitally from a CD, as well as tracks it has written itself – unless it was from the same computer.
Analog Copy
If all else fails, you can always make an analog copy of the audio on a MiniDisc. After all, the kinds of MiniDiscs you care about are probably not digital copies of CDs (you should rather find the original CDs then), but recordings from analog sources anyway – so the extra added noise should be negligible.
The most basic way to make an anlog copy is to connect any MiniDisc player to a computer and using https://www.audacityteam.org for recording. Since modern computers have many things going on at once, you might get skips while recording, so you need to make sure that there is as little load on the computer as possible.
If you have an MZ-RH1 and a second MiniDisc player, you could also connect the two and have the MZ-RH1 record the MiniDisc in the second player onto a 1 GB Hi-MD – uncompressed. You can then use SonicStage or the platform-independent QHiMDTransfer to copy the file(s) over.
The nicest solution is the dump_md.py
script from the NetMDPython project, which can remote-control any NetMD-compliant MiniDisc player (such as the MZ-RH1) and record the analog output through the sound card. This way, the audio will be copied as individual tracks.
Bonus: Recovering Deleted Tracks
MiniDiscs allow arbitrarily deleting tracks, and recording new tracks in their place. This is made possible by the TOC: a global data structure that points to the sections on the media that make up the tracks.
When deleting a track, or the entire MiniDisc, the audio data is not touched, only the TOC is modified. By hacking the TOC, it is possible to access all raw data on the media.
Here are the steps: (This is based on the TOC Cloning trick.)
- Locate your recorder’s door detection switch. On the SHARP MD-MT15, it is here:
- Find a way to keep the switch constantly depressed. In the case of the MD-MT15, you can use part of a toothpick to keep it down.
- Take a spare MiniDisc that is at least the same size (60/74/80) as the one you want to recover.
- Erase the whole spare MiniDisc. (Don’t erase single tracks!)
- Record silence until the whole disk is full.
- Remove the spare MiniDisc and take take the batteries out of the recorder.
- Insert the spare MiniDisc and put the batteries back in. The media should be detected correctly.
- Now replace the spare MiniDisc with the one you want to recover. The recorder should not notice that the door has been opened and will not re-read the TOC.
- Press play. The whole 60/74/80 minutes of raw audio data should now play.
Ha, 10 year old code still put to good use. I remember when someone found and RE’ed the atrac1 decoder dll in SonicStage. We then had a decoder but nothing to play with it. I was able to locate a few samples from one guy who hacked the firmware for the MD-data scsi drives. Now we where able to test the decoder and the rest is history.
Fun times.
Cool story, Benjamin Larsson.
Thank you for this! My older brother passed away 4 years ago. He was a DJ and left tons of old MiniDiscs with mixes and recordings. I have been wanting to back it up in a more modern audio format and as close to its original quality as possible, but been struggling to find any good approaches or alternatives to analog. The MZ-RH1/NetMDPython approach sounds really promising. Will look deeper into that. Thank you!
Wow! Thank you! I have also a ton of dat audio cassette. Do you have any advice?
Hello to all
In this puzzling span, I disposition you all
Appreciate your family and friends
Thanks! Worked perfect for me!
Hi, I’m using sonicstage as you have indicated above but I get this message when transferring to my computer. Any ideas?
Unable to transfer the following tracks to My Library because they are recorded
by Net MD or another computer.
– track1
Got this working on OSX native pretty easy. Just python 2 and:
brew install –force qt5 mad libid3tag libtag glib libusb libusb-compat libgcrypt
Thanks!