Node.js server; React + Emscripten (WebAssembly) client

Deployed at: https://e12s.wilsonmichaelpatrick.me
Source code: https://github.com/wilsonmichaelpatrick/e12s.git

Intended to turn thrift into a feature, e12s (a.k.a. "ephemeral demos", because naming things is impossible) is designed around minimizing server-side resources. It allows musicians to upload original music, and makes it publicly available for one day, at which time it is deleted. This avoids the need to store a backlog of old material that would seldom get a second listen anyway.

The cool part about all of this is that it runs C code transpiled to WebAssembly in the browser, re-encoding audio to a relatively low-bitrate 128kbps format prior to uploading. This conserves on both server side bandwidth and CPU, since the server is spared from doing the re-encoding itself.

On the server side, e12s is implemented as a Node.js application that uses Firebase to store song data, and Google Cloud Storage to store the files.

On the client side, e12s is implemented using React for the user interface, and encodes audio with a WebAssembly compilation of the LAME mp3 encoder. Emscripten was used to convert the C code to browser-runnable Javascript.

Please do not upload copyrighted music. Anything you upload actually will be publicly available. If you need something to upload, you can use this which is my own creation, or perhaps generate and download a random composition at http://tones.wolfram.com. Try not to upload anything embarrassing; although song deletion is implemented, this is a minimally tested proof-of-concept project, as such it would not be wise to assume it works when you need it to.


© 2019-2020 wilsonmichaelpatrick. All rights reserved.