Web MiniDisc应用程序:带回WebUSB和WASM的MiniDisc

2021-04-09 19:00:34

如果你从未听说过miniDisc别担心,你并不孤单。

如果你很奇怪,你可以通过阅读维基百科页面,或旧社区门户MiniDisc.org,或与/ R / MiniDisc的reddit社区互动。

如果你不是,很短的故事,它是索尼在90年代初发布的一件死去的音乐格式,这是逐渐被2000年代初开始出来的许多MP3播放器的普及。

作为NetMD单位的最后一个MiniDisc播放器中的一些播放器配备了USB端口,允许通过使用纯粹的SonicStage软件(当然只有Windows)录制到设备上的音乐。当索尼放弃了MiniDisc时,该软件留下了不明智的,而且,如今,它无法运行虚拟机或不使用危险的未签名驱动程序。

幸运的是,OSS社区设法完全逆向工程工程NetMD协议,并且在MiniDisc的死亡之前,Linux-MiniDisc项目被释放。

几个星期前,就在意大利的棘手的Coronavirus锁定之前,我很幸运能够在父母的地下室找到我的旧MZ-N710。决心使其在我的MacBook上工作,我将其带回家并成功成功地编译并运行了Linux-MiniDisc CLI。

不是那些不喜欢在终端中键入命令的人的最友好过程。

因此,在思考一段时间之后,我意识到这些步骤可以封装在无安装所需的渐进式Web应用中,以便在易于过程中加紧。

我首先从Linux-MiniDisc移植到我现在在NPM上发布的新JS库,称为NetMD-JS [3]。

此库实现NetMD协议,并处理与设备的USB通信。它还将允许其他DEVS编写自己的应用程序,我应该不适合他们的需求。

它可以在NodeJS中运行,并在支持WebUSB标准的每个浏览器中运行,并使用Worker线程[4]或Web工作者[5]加快协议所需的音乐加密步骤。加密已在Cryptojs [6]的顶部实现。

我很幸运能够找到一个名为ffmpeg.js [7]的项目,它已经将ffmpeg移植到WASM。所以,唯一还有剩下的事情就是正确配置它并重新编译,只是为了修剪二进制大小。 FFMPEG.js的GitHub页面中提供了完整的教程。

然后,我遵循类似的过程来交叉编译ATRACDENC编码器,最终在它周围写一个简单的JS包装。

在将所有砖块聚集在一起后,我将重点转移到设计应用程序的用户界面和体验。

然后我开始使用Classic Create React App + Typescript模板,并添加了Redux和Material-UI组件...无褶边设置。 几个晚上我准备记录了Web MiniDisc应用程序的第一个演示。 如果需要,它一直很令人兴奋,在我的MacBook上和我的Android手机上无缝工作。 老实说,在2020年在2020年推出MiniDisc应用程序并没有许多地方:)这是一个非常小的利基。 但是,我一直潜伏在/ r / miniDisc中,并决定从那里开始。 反馈非常棒,人们甚至用几个错误报告和功能请求回复。 如果您是NetMD设备的幸运主义者,您可以自己尝试应用程序 或者,如果您只想浏览代码,就可以在Github上提供的一切。