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
- Where to start -> MiniDisc on Wikipedia
- Community -> reddit & discord
- Socials -> twitter, instagram & FaceBook (Only MiniDisc Asia)
- MiniDisci.wiki -> https://www.minidisc.wiki/
This project was bootstrapped with Create React App, so you can run:
npm start
to start the development servernpm i
to install node modules and dependenciesnpm 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.
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.
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.
It just works... no need to download or install any software.
Users go to live version at: https://webmd.pro.
(
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.
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,
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.)
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.
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.
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.
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 :).
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.
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.
- 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