Powered by OpenAIRE graph
Found an issue? Give us feedback
image/svg+xml art designer at PLoS, modified by Wikipedia users Nina, Beao, JakobVoss, and AnonMoos Open Access logo, converted into svg, designed by PLoS. This version with transparent background. http://commons.wikimedia.org/wiki/File:Open_Access_logo_PLoS_white.svg art designer at PLoS, modified by Wikipedia users Nina, Beao, JakobVoss, and AnonMoos http://www.plos.org/ ZENODOarrow_drop_down
image/svg+xml art designer at PLoS, modified by Wikipedia users Nina, Beao, JakobVoss, and AnonMoos Open Access logo, converted into svg, designed by PLoS. This version with transparent background. http://commons.wikimedia.org/wiki/File:Open_Access_logo_PLoS_white.svg art designer at PLoS, modified by Wikipedia users Nina, Beao, JakobVoss, and AnonMoos http://www.plos.org/
ZENODO
Article . 2022
License: CC BY
Data sources: Datacite
image/svg+xml art designer at PLoS, modified by Wikipedia users Nina, Beao, JakobVoss, and AnonMoos Open Access logo, converted into svg, designed by PLoS. This version with transparent background. http://commons.wikimedia.org/wiki/File:Open_Access_logo_PLoS_white.svg art designer at PLoS, modified by Wikipedia users Nina, Beao, JakobVoss, and AnonMoos http://www.plos.org/
ZENODO
Conference object . 2022
License: CC BY
Data sources: ZENODO
image/svg+xml art designer at PLoS, modified by Wikipedia users Nina, Beao, JakobVoss, and AnonMoos Open Access logo, converted into svg, designed by PLoS. This version with transparent background. http://commons.wikimedia.org/wiki/File:Open_Access_logo_PLoS_white.svg art designer at PLoS, modified by Wikipedia users Nina, Beao, JakobVoss, and AnonMoos http://www.plos.org/
ZENODO
Article . 2022
License: CC BY
Data sources: Datacite
versions View all 2 versions
addClaim

Dynamic Per-Sample Processing with WebAssembly

Authors: Roberts, Charles;

Dynamic Per-Sample Processing with WebAssembly

Abstract

While various audio libraries for the web have been compiled to WebAssembly from other languages, few have been written directly in WebAssembly itself. Writing DSP algorithms directly in WebAssembly enables precise control and opportunities for optimization that are perhaps difficult to achieve when a using a higher-level language coupled with a compiler; conversely, higher-level languages are often optimized for abstraction, readability, and speed of development. Despite the advantages higher-level languages provide, we hypothesized that writing a low-level signal processing library directly in WebAssembly is both appropriate to the capabilities of the language while also providing for finer control over optimization. Accordingly, we ported a low-level library we had previously developed in JavaScript, genish.js, to WebAssembly. In our initial investigation we focused on entirely dynamic audio graphs with per-sample processing; our prior work also used per-sample processing but required recompilation of the audio graph after any significant changes were made. While our dynamic WebAssembly library possesses a number of notable advantages over our prior work, we ultimately decided that it is too computationally inefficient with larger audio graphs to be used for constructing higherlevel libraries and tools for music creation. Despite this, we do feel it is appropriate for specific uses, such as live coding and enabling end-user signal processing without requiring compilation. To address the performance limitations of our engine, we built a WebAssembly compiler that outputs optimized representations of larger, interconnected audio graphs. Testing shows that compiling and optimizing audio graphs created using this library yields highly performant unit generators. We believe the combination of a fully dynamic graph with precompiled higher-level signal processing functions will work well for the future construction of music creation tools.

Keywords

Live coding, WebAssembly

  • BIP!
    Impact byBIP!
    selected citations
    These citations are derived from selected sources.
    This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically).
    0
    popularity
    This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network.
    Average
    influence
    This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically).
    Average
    impulse
    This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network.
    Average
    OpenAIRE UsageCounts
    Usage byUsageCounts
    visibility views 41
    download downloads 30
  • 41
    views
    30
    downloads
    Powered byOpenAIRE UsageCounts
Powered by OpenAIRE graph
Found an issue? Give us feedback
visibility
download
selected citations
These citations are derived from selected sources.
This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically).
BIP!Citations provided by BIP!
popularity
This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network.
BIP!Popularity provided by BIP!
influence
This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically).
BIP!Influence provided by BIP!
impulse
This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network.
BIP!Impulse provided by BIP!
views
OpenAIRE UsageCountsViews provided by UsageCounts
downloads
OpenAIRE UsageCountsDownloads provided by UsageCounts
0
Average
Average
Average
41
30
Green