Guide to writing WAMs

Want to get started writing your own Web Audio Modules? Here’s some resources.

The GitHub organization for Web Audio Modules is Web Audio Modules (WAMs) · GitHub

The current version of WAMs we are using are WAM 2.0. WAMs built with the earlier WAM 1.0 spec do not work with Sequencer Party.

Getting Started

The WAM 2.0 API and SDK are not the simplest of reads, so to start I would suggest you find a WAM similar to how you want to write a WAM, and modify it to suit your goals.

There are various places to find up to date example WAMs.

All of my WAMs are available here: GitHub - boourns/burns-audio-wam: A collection of Web Audio Modules (WAMs) powering sequencer.party

There are more examples here: GitHub - webaudiomodules/wam-examples

Between those two repositories there are WAMs built by wiring together high-level Web Audio nodes, WAMs built with javascript DSP, WAMs built from C++ cross-compiled to WASM, WAMs that internally wrap a RNBO export.

Loading your WAM

To load your WAM in Sequencer Party you will need a web host that can set HTTP headers. For security reasons, your WAM host must return the following headers:

Access-Control-Allow-Origin: *
Cross-Origin-Resource-Policy: cross-origin

It is possible to load your WAM from localhost into Sequencer.Party but note that nobody else will be able to use it if they join your session unless you’re hosting the WAM on a internet-connected web server.

** Getting your WAM listed in Sequencer Party **

The index of WAMs listed for users to pick from is powered by the wam-community Github repository. Fork this repository, you can directly add your built WAMs to the repository in a pull request, and after a new version is deployed it will be available in Sequencer Party (and hopefully soon in other web audio projects as well!)