WAMs

A WAM Story

Web Audio Modules (WAM) – a new audio “plug-in” format for the web browser Web Audio Modules (WAM) is an SDK/API that we started work on over two years ago which aims to eventually be the equivalent of VST for the web. We use the term “module” because these are not like traditional browser plug-ins, which must be installed – they load with the rest of the web page like any other resource, and integrate into the Web Audio API via the “AudioWorkletProcessor”. The DSP is…

Read More »

webDEXED

The webDEXED port was pretty easy. After some minor modifications in the DEXED codebase I just linked it against the JUCE WebAssembly library (which was created when porting webOBXD). The GUI port was grabbed from my earlier PNaCl implementation. This WAM uses AudioWorklet’s MessagePort that landed in Chrome Canary 64.0.3275.0. If you want to try the demo, please make sure you are running the latest version of canary! DEXED is a DX7 emulation, originally created by Digital Suburban (github). DEXED has two DX engines under the hood. The…

Read More »

VAMP plugins as WAMs

About a year ago I explored how to get VAMP plugins online. As a proof of concept I ported Dan Stowell’s amplitude follower VAMP plugin as a WAM. A demo is available at http://webaudiomodules.org/demos/vamp/vamphost.html This WAM is implemented as a PNaCl module, so it requires Chrome (canary is not necessary). After porting and thinking a bit further, I concluded that desktop browser is actually an excellent platform for hosting VAMPs. Here’s a quick and incomplete list of the benefits. plugin implementation : realtime/offline audio graphs and…

Read More »

webOBXD

I ported a subset of the JUCE library to WebAssembly, and bridged WAM::Processor directly to juce::PluginProcessor. The bridge is a generic wrapper for JUCE plugins. It looks like JUCE C++ code requires only minor changes, if any at all to be used as a WAM. As a proof of concept, I wrapped the OBXD JUCE plugin as a WAM, compiled it in WebAssembly, linked it to the WASM JUCE library, and finally encapsulated the result as an AudioWorklet. A demo is available here. Like webDX7,…

Read More »

webDX7 — AudioWorklet/WASM

A public git repository for our work-in-progress  AudioWorklet/WebAssembly version of webDX7 is now available at github. An early demo works with webMIDI and an embedded onscreen keyboard, and contains couple of DX7 sysex files to play with. Please note that the demo requires Chrome Canary 64 or later, and enabling experimental web platform features in chrome://flags.

Read More »

AudioWorklets and WASM

We are currently migrating our API to v0.2, which will support AudioWorklets and WebAssembly (WASM). The AudioWorklet reduces latency and glitches due to threading conflicts, while WASM increases performance and gives a smaller download size. WASM has been out for quite some time already, and the initial AudioWorklet implementation just landed on Chrome Canary. Exciting times! Also time to start keeping this website up to date. webDX7 has already been compiled in WASM, and it runs as an AudioWorklet. The binary is a neat 25kB package, and it works with 128 sample…

Read More »