{"id":1384,"date":"2020-03-27T07:41:56","date_gmt":"2020-03-27T06:41:56","guid":{"rendered":"https:\/\/www.pagetable.com\/?p=1384"},"modified":"2020-03-27T07:41:56","modified_gmt":"2020-03-27T06:41:56","slug":"dumping-minidisc-media","status":"publish","type":"post","link":"https:\/\/www.pagetable.com\/?p=1384","title":{"rendered":"Dumping MiniDisc Media"},"content":{"rendered":"<p><big><b><font color=\"red\">Update 2022: <a href=\"https:\/\/web.minidisc.wiki\/\">Web MiniDisc Pro<\/a> can access NetMD devices through the browser and can also download protected files!<\/font><\/b><\/big><\/p>\n<hr\/>\n<p>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:<\/p>\n<ul>\n<li>MZ-RH1 and NetMDPython<\/li>\n<li>MZ-RH1 and SonicStage<\/li>\n<li>Analog Copy<\/li>\n<li>Bonus: Recovering Deleted Tracks<\/li>\n<\/ul>\n<h2 id=\"mz-rh1-and-netmdpython\">MZ-RH1 and NetMDPython<\/h2>\n<p>The best device for digitally dumping MiniDiscs is Sony&rsquo;s last (and best) MiniDisc recorder, the portable MZ-RH1. Unfortunately, this makes it quite pricy on the used market these days\u00a0\u2013 but you can (and should!) always sell it after you&rsquo;re done dumping your media&hellip;<\/p>\n<h3 id=\"dumping\">Dumping<\/h3>\n<p>The <a href=\"https:\/\/wiki.physik.fu-berlin.de\/linux-minidisc\/doku.php?id=netmdpython\">NetMDPython<\/a> set of scripts can copy the original <a href=\"https:\/\/en.wikipedia.org\/wiki\/Adaptive_Transform_Acoustic_Coding\">ATRAC1<\/a>-encoded bitstreams off MiniDiscs. You can run it on Windows, macOS or Linux. I will describe the Linux steps with Ubuntu \u2013\u00a0I would advise Windows and Mac users to set up a virtual machine with Ubuntu, since this is the most reliable way.<\/p>\n<ul>\n<li>\n<p>First, you need to make sure that you have Git, Python 2 (with crypto support) and libusb installed:<\/p>\n<pre><code>  sudo apt-get install git python2 python-crypto libusb-dev\n<\/code><\/pre>\n<\/li>\n<li>\n<p>Then, get the source from the <em>linux-minidisc<\/em> project:<\/p>\n<pre><code>  git clone https:\/\/github.com\/glaubitz\/linux-minidisc.git\n<\/code><\/pre>\n<\/li>\n<li>\n<p>The tools are in <code>linux-minidisc\/netmd<\/code><\/p>\n<pre><code>  cd linux-minidisc\/netmd\n<\/code><\/pre>\n<\/li>\n<li>\n<p>Connect your MZ-RH1 to the (virtual) machine, but do not insert a MiniDisc yet. The Linux <code>usb-storage<\/code> driver would claim any inserted media, so that the tools wouldn&rsquo;t be able to access it any more. Therefore, you need to remove the <code>usb-storage<\/code> driver:<\/p>\n<pre><code>  sudo modprobe -r usb-storage\n<\/code><\/pre>\n<\/li>\n<li>\n<p>Now make sure that the MZ-RH1 shows up:<\/p>\n<pre><code>  sudo .\/lsusb.py\n\n  [...]\n  Bus 002 Device 006: ID 054c:0286 Sony Net MD\/Hi-MD\n  [...]\n<\/code><\/pre>\n<\/li>\n<li>\n<p>If your device is detected, you can list the contents of the MiniDisc like this:<\/p>\n<pre><code>  sudo .\/lsmd.py\n\n  Disk (writable media) We Are The Night\n  Time used: 01:09:50+032 (87.14%)\n  14 tracks\n  000: 00:01:04+027 sp stereo unprotected No Path To Follow\n  001: 00:06:33+039 sp stereo unprotected We Are The Night\n  [...]\n<\/code><\/pre>\n<\/li>\n<li>\n<p>You can dump the whole media like this:<\/p>\n<pre><code>  sudo .\/upload.py\n\n  Storing in We Are The Night\n  Uploading .\/01 - No Path To Follow.aea\n  Done: 10000\/1a51a0 (3.80%)\n  Done: 20000\/1a51a0 (7.60%)\n  Done: 30000\/1a51a0 (11.40%)\n  [...]\n<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3 id=\"converting-atrac1-files\">Converting ATRAC1 Files<\/h3>\n<p>The resulting files are in <code>.aea<\/code> format, which is the raw data from the MiniDisc, encoded in the ATRAC1 format.<\/p>\n<p>You can convert them to any other audio format using <em>ffmpeg<\/em>:<\/p>\n<pre><code>    ffmpeg -i file.aea file.wav # decompression\n    ffmpeg -i file.aea file.mp3 # lossy recompression\n    ffmpeg -i file.aea file.m4a # lossy recompression\n<\/code><\/pre>\n<h3 id=\"limitations\">Limitations<\/h3>\n<p><em>NetMDPython<\/em> can not dump tracks that are marked &ldquo;protected&rdquo;. This includes all tracks on pressed MiniDiscs, tracks that have been copied from a digital master, and tracks written with the PC software (<em>SonicStage<\/em>).<\/p>\n<h2 id=\"mz-rh1-and-sonicstage\">MZ-RH1 and SonicStage<\/h2>\n<p>Sony&rsquo;s <em>SonicStage<\/em> software is an iTunes-like application for Windows that can, among many many other things, transfer most tracks from MiniDisc to the PC&rsquo;s hard disk.<\/p>\n<p>(The last version is 4.3; the screenshots are showing 3.4. I recommend Windows XP; newer versions might work as well.)<\/p>\n<ul>\n<li>Navigate to the &ldquo;Transfer&rdquo; Tab. Your MZ-RH1 should show up in the pane on the right.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"docs\/dumping_md\/sonicstage1.png\" height=\"384\" width=\"512\" alt=\"\" \/><\/p>\n<ul>\n<li>By default, <em>SonicStage<\/em> will recompress dumped data as ATRAC3+. To make sure you don&rsquo;t lose any sound quality, press the toolbox icon, select &ldquo;Advanced&hellip;&rdquo; and &ldquo;Import Settings&rdquo;, and set the format for importing non-MDLP tracks to &ldquo;PCM&rdquo;:<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"docs\/dumping_md\/sonicstage2.png\" height=\"380\" width=\"516\" alt=\"\" \/><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"docs\/dumping_md\/sonicstage3.png\" height=\"507\" width=\"460\" alt=\"\" \/><\/p>\n<ul>\n<li>Now you can drag and drop tracks from the right pane to the left one. Right clicking a track on the left and selecting &ldquo;Properties&hellip;&rdquo; will reveal the location of the file in the filesystem.<\/li>\n<\/ul>\n<h3 id=\"converting-oma-files\">Converting OMA Files<\/h3>\n<p>The resulting files are in OpenMG Audio (<code>.oma<\/code>) format, which is Sony&rsquo;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.<\/p>\n<p><em>ffmpeg<\/em> can also convert <code>.oma<\/code> files into any other audio format:<\/p>\n<pre><code>    ffmpeg -i file.oma file.wav # lossless container conversion\n    ffmpeg -i file.oma file.mp3 # lossy recompression\n    ffmpeg -i file.oma file.m4a # lossy recompression\n<\/code><\/pre>\n<h3 id=\"limitations\">Limitations<\/h3>\n<p><em>SonicStage<\/em> 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.<\/p>\n<p>Unlike <em>NetMDPython<\/em>, <em>SonicStage<\/em> 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 \u2013 unless it was from the same computer.<\/p>\n<h2 id=\"analog-copy\">Analog Copy<\/h2>\n<p>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 \u2013\u00a0so the extra added noise should be negligible.<\/p>\n<p>The most basic way to make an anlog copy is to connect any MiniDisc player to a computer and using <a href=\"Audacity\">https:\/\/www.audacityteam.org<\/a> 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.<\/p>\n<p>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 \u2013 uncompressed. You can then use <em>SonicStage<\/em> or the platform-independent <a href=\"https:\/\/wiki.physik.fu-berlin.de\/linux-minidisc\/doku.php?id=qhimdtransfer\">QHiMDTransfer<\/a> to copy the file(s) over.<\/p>\n<p>The nicest solution is the <code>dump_md.py<\/code> script from the <a href=\"https:\/\/wiki.physik.fu-berlin.de\/linux-minidisc\/doku.php?id=netmdpython\">NetMDPython<\/a> 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.<\/p>\n<h2 id=\"bonus:-recovering-deleted-tracks\">Bonus: Recovering Deleted Tracks<\/h2>\n<p>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.<\/p>\n<p>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.<\/p>\n<p>Here are the steps: (This is based on the <a href=\"https:\/\/www.minidisc.org\/conner\/MD-MT15_TOC_cloning.htm\">TOC Cloning<\/a> trick.)<\/p>\n<ul>\n<li>Locate your recorder&rsquo;s door detection switch. On the SHARP MD-MT15, it is here:<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"docs\/dumping_md\/recover1.jpg\" height=\"330\" width=\"440\" alt=\"\" \/><\/p>\n<ul>\n<li>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.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"docs\/dumping_md\/recover2.jpg\" height=\"330\" width=\"440\" alt=\"\" \/><\/p>\n<ul>\n<li>Take a <em>spare<\/em> MiniDisc that is at least the same size (60\/74\/80) as the one you want to recover.<\/li>\n<li>Erase the whole <em>spare<\/em> MiniDisc. (Don&rsquo;t erase single tracks!)<\/li>\n<li>Record silence until the whole disk is full.<\/li>\n<li>Remove the <em>spare<\/em> MiniDisc and take take the batteries out of the recorder.<\/li>\n<li>Insert the <em>spare<\/em> MiniDisc and put the batteries back in. The media should be detected correctly.<\/li>\n<li>Now replace the <em>spare<\/em> 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.<\/li>\n<li>Press play. The whole 60\/74\/80 minutes of raw audio data should now play.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>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 &#8230; <a title=\"Dumping MiniDisc Media\" class=\"read-more\" href=\"https:\/\/www.pagetable.com\/?p=1384\" aria-label=\"Read more about Dumping MiniDisc Media\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,13,17,18],"tags":[],"class_list":["post-1384","post","type-post","status-publish","format-standard","hentry","category-archeology","category-floppy-disks","category-hacks","category-hardware"],"_links":{"self":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/posts\/1384","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1384"}],"version-history":[{"count":0,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=\/wp\/v2\/posts\/1384\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1384"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1384"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pagetable.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}