JavaScript Audio Plugins

JSAP units are HTML5 audio processors for Web Audio API enabled sites. These allow the designing and deployment of advanced audio units with similar functionality to desktop VST and AU processors. Processors can all of the browser defined AudioUnits to create their DSP, including the script processors, allowing for any current DSP process to be converted to JavaScript compatible systems.

The project defines both the host and process frameworks to ease deployment. On the host side, we define the PluginFactory to hold the JSAP prototypes. The Factory can generate the plugins and manage them from one central resource. The host also defines SubFactory units which define a chain of plugins in the traditional form. These SubFactory units handle:

  • Plugin Order
  • Plugin construction and destruction in the chain
  • Track / Channel information (track name, instrument etc.)

amongst other items

The standard also specifies a new method for cross-adaptive processing by sharing features rather than routing audio. If several plugins require the same feature from the same audio stream, traditional systems would require the audio to be routed between all the nodes and then process the audio multiple times to generate the same result. The JSAP system attaches a JS-Xtract node to each plugin output allowing for advanced querying of the features. These features are then sent to the requesting plugins, saving on processing power as well as improved memory management by sharing objects



The documentation is currently under development, as the standard itself is being processed. Documentation can be found here

Get the code!

The code can be accessed on GitHub


This work was presented at the AES 141st Convention in Los Angeles, USA and at the 2nd Workshop on Intelligent Music Production. Please cite this paper in any academic works:

Jillings et al. “JSAP: A Plugin Standard for the Web Audio API with Intelligent Functionality”. Audio Engineering Society Convention 141, Los Angeles, CA. September, 2016. Available at http://www.aes.org/e-lib/browse.cfm?elib=18397. bibtex