Web Audio Conference 2018

I really enjoyed attending the recent Web Audio Conference in Berlin - it was great to catch up with some old friends and make some new ones. The conference seemed to go very smoothly and had a friendly, diverse crowd - a credit to the organising team’s efforts.

Most of the talks are available to watch online in a YouTube channel so rather than link to them all individually I thought I’d give my own summary of some of the key themes, and highlight a few of my personal favourites.

I really enjoyed talks about the playful, joyous side of music making and in particular some of the experiments with generative music. Ruth John’s keynote set the theme with an exploration of the value of “formats” in music and having tangible things to listen to even in an increasingly digital age. Lisa Passing spoke of generative experiments and individual expression through music. I was particularly looking forward to Tero Parvianen’s talk on neural networks and generative music and wasn’t disappointed - it was a fantastic, accessible introduction to AI and music. And Mathieu Henri’s wonderful code-golfing version of a Brain Eno classic put a huge smile on my face.

The Web Audio API is old enough now that it has a history of its own. It was fantastic to see Chris Rogers again and his keynote on the early days of the API’s development is a lovely record of how far the technology has come. Paul Adenot’s keynote (slides only) brought us up to date with the changes this year and plans for the future.

There was a lot of interest and discussion around developing standards for sharing code between Web Audio applications in a manner similar to how VST plugins work in music production software. One standard is being called Web Audio Modules (WAM) which aims to make it easier to port VST, JUCE and iPlug code to Web Audio. There’s already a community site with a lot of examples. The WAP (Web Audio Plugin) proposal Michel Buffa presented generalises the plugin concept to allow other types of code, such as larger Web Audio graphs, to be wrapped in a common interface. I saw a lot of interesting demos during the demo session that show various ways that synths and audio effects from different developers can be connected together.

With an implementation of the Audio Worklet specification already in the wild in Chrome there were a number of talks investigating various ways of using the new node, with a particular emphasis on cross-compiling various languages to run in the new node - including CSound. Charlie Roberts has implemented his audio processing language to Audio Worklets and his talk goes over some of the challenges. He also found time to wow the audience with a live-programming session at the concert.

Lots of new examples added to the MDN Web Audio docs

Ruth John @Rumyra has been updating the Web Audio API docs For MDN recently. She has also built a few demos as well!

There’s a beginner’s article which creates a boombox, and introduces the Web Audio API, and it’s concepts. A more advanced tutorial which teaches you how to build a step sequencer including creating sound, filters, envelopes and scheduling. She has also created a 3D panner demo to cover spacialisation.

And if that’s not enough, there’s also a demo and supporting article about the IIR Filter node.

There’s a new article which talks about best practices and as MDN is open source if there’s anything you want to add, you can easily go and add it. The same goes for all the MDN Web Audio docs, if you feel like there’s something needs updating, it is open and you can do so.

Re-implementing the Stereo Panner node

Chris Guttandin’s fantastic standardized-audio-context library smooths over many of the inconsistencies between browser implementations of the Web Audio API. In this article Chris talks about adding stereo panner node support for safari (which doesn’t implement this node natively) using a clever combination of gain and mixer nodes.

Slang

A new project from Kyle Stetz:

I’ve always wanted to write a programming language from scratch, but as someone who didn’t study computer science I find it incredibly intimidating. Discovering Ohm.js changed my mind; its incredible editor and approachable JS API make it possible to experiment quickly with a lot of feedback. This project is my first pass at building a language and runtime environment from start to finish.

In Brief