// the find
orottier/web-audio-api-rs
A Rust implementation of the Web Audio API, for use in non-browser contexts
A pure Rust implementation of the Web Audio API spec, designed for server-side, CLI, and desktop contexts where you want browser-style audio graphs without a browser. It mirrors the W3C spec closely enough that the NodeJS bindings can run the official WebAudio test harness. Aimed at audio tool authors and game developers who want a well-understood API with Rust's performance characteristics.
The spec fidelity is the headline feature — they actually run the W3C test harness via the Node bindings, so this isn't just 'inspired by' the Web Audio API. The audio backend abstraction is well thought out: cpal by default with feature flags for JACK, PipeWire, ASIO, and the Mozilla cubeb stack, covering basically every platform target you'd care about. The examples directory is unusually thorough — granular synthesis, doppler effects, convolution reverb, toy WebRTC — this is a working DSP playground, not just a hello-world. Symphonia handles decoding, which means you get MP3, FLAC, AAC, Vorbis, and more without needing to wire up separate codec dependencies.
379 stars for a project this capable is a red flag for ecosystem adoption — there's not much of a community to pull bug fixes from or ask questions of, which matters for something as hardware-dependent as audio I/O. The ALSA workaround documented in the README (bumping render size to 1024 frames to stop crackling) is a symptom: Linux audio behavior will vary and you'll likely hit platform-specific issues that don't have documented fixes. The WASM browser target is marked experimental and is essentially a novelty — the value prop of this library is decoupling from the browser, so targeting the browser back through cpal/wasm-bindgen is an odd fit. ScriptProcessorNode is included but that node is deprecated in the actual Web Audio spec, so including it suggests the compatibility surface area may outlast its usefulness.