Skip to content

neodsp/web-audio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

web-audio

Browser-native Web Audio API for WASM applications.

A Rust library providing a high-level interface to the Web Audio API, designed for WASM applications that need microphone input and speaker output.

Web Audio Example

Features

  • Async device enumeration with permission handling
  • Input/output device selection
  • Real-time audio processing with interleaved f32 samples
  • Automatic context management and resource cleanup

Installation

Add to your Cargo.toml:

[dependencies]
web-audio = { git = "https://github.com/neodsp/web-audio" }

Usage

use web_audio::WebAudio;

// Request microphone permission
WebAudio::request_permission().await?;

// Enumerate available devices
let (inputs, outputs) = WebAudio::enumerate_devices().await?;

// Create audio context
let mut audio = WebAudio::new().await?;

// Configure devices (optional)
audio.set_input_device(Some(inputs[0].device_id.clone()));
audio.set_output_device(Some(outputs[0].device_id.clone())).await?;

// Start processing
// Input/output are interleaved f32: [L0, R0, L1, R1, ...] for stereo
audio.start(1024, 2, |input, output| {
    // Process audio - this example creates a feedback loop
    output.copy_from_slice(input);
}).await?;

// Audio runs in background until stopped
audio.stop()?;

Browser Requirements

  • AudioContext support
  • getUserMedia for microphone access
  • User interaction before audio playback (browser security requirement)

Example

See the example/ directory for a complete working example with device selection UI.

Prerequisites

Install wasm-pack:

cargo install wasm-pack

Build

wasm-pack build example --target web --out-dir pkg

Run

python3 -m http.server 8080 --directory example

Then open http://localhost:8080 in your browser.

License

MIT OR Apache-2.0

About

Browser-native Web Audio API for WASM applications.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published