firewheel-web-audio 0.4.0

A multi-threaded Web Audio backend for Firewheel
Documentation

crates.io docs.rs

A multi-threaded wasm32-unknown-unknown Web Audio backend for Firewheel.

Currently, this backend only supports stereo inputs and outputs.

Requirements

Because this crate relies on Wasm multi-threading, it has some additional requirements.

  1. A nightly compiler is required along with the Rust standard library source code (with rustup, you can add it with rustup component add rust-src).
  2. You'll need the atomics, bulk-memory, and mutable-globals target features. These can be enabled with a .cargo/config.toml:
[target.wasm32-unknown-unknown]
rustflags = ["-C", "target-feature=+atomics,+bulk-memory,+mutable-globals"]

[unstable]
build-std = ["std", "core", "alloc", "panic_abort"]
  1. Wherever your project is served, the protocol must be secure (usually https) and the response must include two security headers:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
# or
Cross-Origin-Embedder-Policy: credentialless

Note that credentialless may not work on Safari: the browser may throw an error in the audio worklet upon receiving shared Wasm memory.

License