Web Audio/MIDI Synth Roundup

22 Sep 2015



Having learned about a number of new Web Audio/MIDI instruments over the past few months, I thought I'd put together a quick roundup of what I've read about.

The most recent synth is the Viktor NV-1 by Nikolay Tsenkov.  (He codes, sings, and boxes!)  You can find the source code for Viktor at github.com/nicroto/viktor and the audio engine is at github.com/nicroto/viktor-nv1-engine.  It's got a surprising number of built-in presets and supports patch sharing via social media.  It's for sure an impressive addition to the field of web synths.

The NV-1 is inspired by beep.js, which is described as a toolkit for building synths in the browser.  For now, Chrome is the browser of choice for web synths as it's the only one that supports MIDI input from external controllers.

According to these slides by Google Chrome dev advocate Chris Wilson, there's skepticism from browser vendors that MIDI implementation is a worthwhile pursuit.


He goes on to say that there's a need for developers to demonstrate the importance of MIDI support in the browser.  Is it just a novelty or are there compelling music apps that can be built for the browser?  I'm not sure but there's some great hacking going on in the space now, and it seems like there's a lot of potential to hit on an interesting app that combines Web Audio and MIDI with the collaborative/distribution power of the Internet.

Okay.  Next up is the beautifully executed WebSID by Igor Zinken.  It's a browser-based synth/sequencer that emulates the Commodore 64 SID sound chip.


And then there's the recently updated WebX0X by Irritant Creative, perhaps the most interesting of the bunch.  What I like about WebX0X is that it's starting to explore collaborative features.  For example, it now supports the ability to save and share beats.  It might be interesting to save individual track sequences of a beat as well.  For example, WebX0X supports beats with 4 sequences: bass, snare, hi hat, and cowbell.  You could imagine loading in a cowbell sequence from another user's beat to add to your own bass, snare, and hi hat sequences.  Or maybe being able to load sequences from the community of shared beats using an algorithmic (or random) approach would make for interesting beat creation?  Automation would also be a great addition to the feature set as well.  I'm excited to see where Irritant takes this one.  For more background on WebX0X check out Introducing WebX0X.

Finally, there's MIDI Synth by Chris Wilson.  It was the first implementation I saw that enabled MIDI input from a peripheral controller.  Not the flashiest of the bunch but it gives a good demonstration of Web Audio and MIDI.  Source code is available at github.com/cwilso/midi-synth.

And there you have it: 5 Web Audio- and/or MIDI-enabled instruments.  It's great to see developer interest in exploring Web Audio and MIDI APIs and it'd be great to see Web MIDI move from novelty to core browser feature.  We're not there yet but the experimentation is inspiring.