web-audio-api-rs
web-audio-api-rs copied to clipboard
A Rust implementation of the Web Audio API, for use in non-browser contexts
Possibly announce on the rust audio forum and elsewhere for last minute feedback
The spec contains some cyclic references that are quite hard for us to model in rust. For example: 1. `BaseAudioContext` has a `destination` property that should return a `AudioDestinationNode` 2....
https://www.w3.org/TR/webaudio/#dom-baseaudiocontext-control-thread-state-slot Before we think about also adding onStateChange handlers ( https://www.w3.org/TR/webaudio/#dom-baseaudiocontext-onstatechange ) we need to think about the architecture for event handling (probably in a separate issue)
https://www.w3.org/TR/webaudio/#PannerNode https://www.w3.org/TR/webaudio/#Spatialization - [ ] `DistanceModelType` option (good first issue) - [ ] options `refDistance`, `maxDistance`, `rolloffFactor` (good first issue) - [ ] handle stereo input (currently mono is assumed)...
Some improvements could be made in graph.rs when rendering an audio quantum: - [x] Store edges more efficiently (currently a single HashMap that needs to be iterated many times) -...
One small thing is that the error messages are a bit confusing, nothing really important but maybe it would be better to override them with some generic message (at contrary...
We aim to have an example usage per audio node type, and all methods documented. Check e.g. DelayNode for a decent top level doc and example usage: https://docs.rs/web-audio-api/latest/web_audio_api/node/struct.DelayNode.html Notice we...
We ran into a nasty bug due to unsafe casts in #113 There's a group of clippy lints called `unnecessary_cast, cast_lossless/possible_truncation/possible_wrap/precision_loss/sign_loss` which ideally we enable globally. These are part of...
The golden audio processing standard is that the render thread should be 100% allocation free. This can be achieved by allocating up front and (optionally) deny any new allocations. What...
https://www.w3.org/TR/webaudio/#OfflineAudioContext-methods Notice the `suspend` function has the rather odd feature that you can specify the suspend time. We can implement that (later) as an addiditonal method `suspend_at`