Skip to content

Celebrating Minidisc's 30th Anniversary, now revived for all to enjoy! Manage all your NetMD MiniDisc devices thanks to WebUSB and WASD. And even backup all your old minidisc's to your computer when using the Sony MZ-RH1.

License

Notifications You must be signed in to change notification settings

DaveFlashNL/WebMDPro

 
 

Repository files navigation

Web MiniDisc Pro

Brings NetMD devices to the web

Differences between Web Minidisc and Web Minidisc Pro

As per request of the original creator, all future changes by Asivery will be implemented on his fork, and subsequently mirrored to this fork, while here, I, DaveFlash, as a webdeveloper, will focus mainly on the UI/UX side of things and less on the technical. (parts of this README are written by others from their perspectives as this is a fork of off another fork, unless stated as written by this repo's owner, me DaveFlash)

For now the extra features of Web Minidisc Pro are:

  • The ability to connect to NetMD units available on the local network with the help of Remote NetMD
  • Downloading tracks straight from the player via NetMD (only for Sony MZ-RH1 users)
  • Downloading tracks straight from the player via NetMD factory mode using exploits. (only certain models)
  • Improved handling of pre-encoded ATRAC3 tracks
  • Song Recognition
  • The ability to use an external ATRAC3 encoder for better audio quality when using LP modes

The following features depend on exploits and/or factory mode commands. See netmd-exploits for a list of supported devices

  • Downloading tracks from any Sony (or Aiwa) NetMD device
  • Firmware and RAM dumping
  • TOC manipulation
  • Tetris
  • HI-MD support in full mode with atrac3/atrac3+ and mp3 upload

But there are more features on the way.

Live @ webmd.pro
and @ web.minidisc.wiki
How it works @ https://www.youtube.com/watch?v=Frs8qhw0g9Y
Blogpost @ https://stefano.brilli.me/blog/web-minidisc

Requires Chrome or any other browser that supports both WASM and WebUSB

Don't know what a MiniDisc is?

How to build

This project was bootstrapped with Create React App, so you can run:

  • npm start to start the development server
  • npm i to install node modules and dependencies
  • npm build to build for production

WASM modules are provided in the public/ directory. However, if you wish to build those binaries yourself, instructions are provided in the extra/ directory.

Linux

Follow the instructions here https://github.com/glaubitz/linux-minidisc/tree/master/netmd/etc to grant your user access to the device. If you skip this step you'll likely get an Access denied message when trying to connect.

Chrome OS

Works without any addtional set up - tested with 91 stable (91.0.4472.102). If your user account or device is managed (by your school or company) you may run into some issues. If you are using a personal google account on a personal chromebook you should be good to go.

macOS

It just works... no need to download or install any software. Users go to live version at: https://webmd.pro. (⚠️ A Chrome or Chromium-based browser is required.)

Development changes:

For Web MiniDisc Pro development on Apple Silicon as of v1.3.0 going forward: to successfully built it, npm/node will need a few legacy dependencies to be installed on your machine until certain core parts of WebMD Pro have been addressed further or replaced for alternatives.

install Xcode Build Tools CLI & Homebrew

In macOS Terminal: xcode-select install, wait for it to finish then proceed with homebrew: -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)

After homebrew is finished installing,

Install gcc & libvips

In macOS Terminal: brew install --build-from-source gcc, wait for it to finish then run brew install vips (this command may install gcc again from an available pre-built binary, if one exists for your current macOS version, this is normal behaviour as gcc is needed for vips to work.)

Proceeding with installation

With the above prerequisites done on Apple Silicon, you can start with installation of node modules, with the following Terminal-command: npm i --legacy-peer-deps assuming all required previous steps were done correctly, this command, with the '--legacy-peer-deps' part, compared to running npm i vanilla as for all other platforms, will make sure all the required legacy or older node modules and dependencies for Web MiniDisc Pro are met.

Assuming no further errors, this command need only be run once.

Proceeding with building

Again as stated above, the changes on Apple Silicon for this version, will require adding --legacy-peer-deps to the standard command when building for the first time, so in Terminal, once again, run npm run build --legacy-peer-deps or npm build --legacy-peer-deps (depending on your node setup).

Once this is done, future builds from the same directory can be done without the --legacy-peer-deps-part.

Windows 10/11

The Windows USB stack requires a driver to be installed to communicate with any USB device. The bad news is that there are no official Windows 10 drivers for NetMD devices. The good news is that we don't need it! We can just use a generic driver like WinUSB to access the device.

You can find installation instruction here, but the easiest way to install is to use Zadig.
Note: you'll need to restart your browser after installation.

Further information:

Original backstory by cybercase

When I found my old MZ-N710 in the basement of my parents' house.

Determined to make it work on my modern Mac, after some googling, I found out about the linux-minidisc project. They've done an amazing job in reversing the NetMD protocol.

After a quick inspection to the source code I realized the project could be easily ported to javascript (either node and the browser) using the WebUSB api, so I created netmd-js. Then, on top of that I've built Web MiniDisc to manage the music on my device without the need of downloading and installing any dedicated software.

That's it. It was a LOT of fun :).



How to Contribute

Every contribute is welcome but, please, reach out to me before working on any PR. I've built this app mainly for personal use and I wish to keep it as light as possible in terms of features.

Bugs and Issues

There might be plenty of them, for sure :) . The thing is that I've not the time to fix all of them and to make sure this app works on every browser or device.

The best way to get a bug fixed, a feature implemented, or a device supported, is to fork the project and do it for yourself. I'll try to provide support as best as I can.

Credits

  • FFmpeg and ffmpegjs to read audio files (wav, mp3, ogg, mp4, etc...).
  • Atracdenc to support atrac3 encoding (lp2, lp4 audio formats).
  • Emscripten to run both FFmpeg and Atracdenc in the browser.
  • netmd-js to send commands to NetMD devices using Javascript
  • material-ui to build the user interface.
  • linux-minidisc to build the netmd-js library.
  • netmd-exploits For factory mode commands and track dumping

About

Celebrating Minidisc's 30th Anniversary, now revived for all to enjoy! Manage all your NetMD MiniDisc devices thanks to WebUSB and WASD. And even backup all your old minidisc's to your computer when using the Sony MZ-RH1.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Languages

  • TypeScript 97.3%
  • Shell 1.4%
  • Other 1.3%