Mirror of cybercase/webminidisc@github.com - NetMD implementation using WebUSB
Go to file
Stefano Brilli 7c12a9cb96 Last week's work 2020-03-20 18:21:53 +01:00
.vscode Last week's work 2020-03-20 18:21:53 +01:00
extra Last week's work 2020-03-20 18:21:53 +01:00
public Last week's work 2020-03-20 18:21:53 +01:00
src Last week's work 2020-03-20 18:21:53 +01:00
.gitignore Initial commit from Create React App 2020-02-12 21:49:56 +01:00
.prettierignore Last week's work 2020-03-20 18:21:53 +01:00
.prettierrc Last week's work 2020-03-20 18:21:53 +01:00
README.md Last week's work 2020-03-20 18:21:53 +01:00
package-lock.json Last week's work 2020-03-20 18:21:53 +01:00
package.json Last week's work 2020-03-20 18:21:53 +01:00
tsconfig.json Last week's work 2020-03-20 18:21:53 +01:00
yarn.lock Initial commit from Create React App 2020-02-12 21:49:56 +01:00

README.md

Web MiniDisc

Brings NetMD Devices to the Web

live demo at https://minidisc.brilli.me.

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

macOS

it just works ® ... no need to download or install any software.

Linux

Follow the instructions here https://github.com/glaubitz/linux-minidisc/tree/master/netmd/etc to grant your user access to the device.

Windows 10

There are no official Windows 10 drivers for NetMD devices, and the good news is that we don't need it! We can just use a generic driver like the WinUSB driver to access the device. You can find installation instruction here, but the easiest way is to use Zadig.
Note: you'll need to restart your browser after installation to make it see the device.

Don't know what is a MiniDisc?

How to build

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

  • npm start to start the development server
  • 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.

How 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.

Backstory

A few weeks ago I've 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 such a great 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 build 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 :).

Some OSS I've used

  • FFmpeg and ffmpegjs, to read your 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.
  • linux-minidisc, to have made the netmd-js project possible.
  • material-ui, to build the user interface.