Responsive image

Metaprogramming Strategies for AudioWorklets

Charles Roberts
The introduction of AudioWorklets to the Web Audio API greatly expands the potential of browser-based audio programming. However, managing state between the various threads AudioWorklets occupy entails a fair amount of complexity, particularly when designing dynamic music programming environments where exact digital signal processing requirements cannot be known ahead of time. Such environments are commonly used for live coding performance, interactive composition, and coding playgrounds for musical experimentation. Our research explores metaprogramming strategies to create AudioWorklet implementations for two JavaScript libraries, Genish.js and Gibberish.js. These strategies help hide the complexities of inter-thread communication from end-users and enable a variety of signal processing and interaction techniques that would otherwise be difficult to achieve.
            
@inproceedings{2018_15,
  abstract = {The introduction of AudioWorklets to the Web Audio API greatly expands the potential of browser-based audio programming. However, managing state between the various threads AudioWorklets occupy entails a fair amount of complexity, particularly when designing dynamic music programming environments where exact digital signal processing requirements cannot be known ahead of time. Such environments are commonly used for live coding performance, interactive composition, and coding playgrounds for musical experimentation. Our research explores metaprogramming strategies to create AudioWorklet implementations for two JavaScript libraries, Genish.js and Gibberish.js. These strategies help hide the complexities of inter-thread communication from end-users and enable a variety of signal processing and interaction techniques that would otherwise be difficult to achieve.},
  address = {Berlin, Germany},
  author = {Roberts, Charles},
  booktitle = {Proceedings of the International Web Audio Conference},
  editor = {Monschke, Jan and Guttandin, Christoph and Schnell, Norbert and Jenkinson, Thomas and Schaedler, Jack},
  month = {September},
  pages = {},
  publisher = {TU Berlin},
  series = {WAC '18},
  title = {Metaprogramming Strategies for AudioWorklets},
  year = {2018},
  ISSN = {2663-5844}
}