Coder Social home page Coder Social logo

isaac2k1 / webminidisc Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cybercase/webminidisc

0.0 0.0 0.0 40.67 MB

Upload your Music to NetMD MiniDisc devices thanks to WebUSB and WASM

Shell 4.10% HTML 1.17% TypeScript 94.01% CSS 0.44% JavaScript 0.28%

webminidisc's Introduction

Web MiniDisc

Brings NetMD Devices to the Web

Live @ https://stefano.brilli.me/webminidisc/.
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

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. If you skip this step you'll likely get an Access denied message when trying to connect.

Windows 10

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.

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

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 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 :).

Some OSS I've used

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

webminidisc's People

Contributors

andyboeh avatar cybercase avatar dependabot[bot] avatar shadester avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.