Showing content from https://rustwasm.github.io/docs/wasm-bindgen/examples/wasm-audio-worklet.html below:
Wasm Audio Worklet - The `wasm-bindgen` Guide
- Introduction
- 1. Examples
-
- 1.1. Hello, World!
- 1.2. Using console.log
- 1.3. Small Wasm files
- 1.4. Without a Bundler
- 1.5. Synchronous Instantiation
- 1.6. Importing functions from JS
- 1.7. Working with char
- 1.8. js-sys: WebAssembly in WebAssembly
- 1.9. web-sys: DOM hello world
- 1.10. web-sys: Closures
- 1.11. web-sys: performance.now
- 1.12. web-sys: using fetch
- 1.13. web-sys: Weather report
- 1.14. web-sys: canvas hello world
- 1.15. web-sys: canvas Julia set
- 1.16. web-sys: WebAudio
- 1.17. web-sys: WebGL
- 1.18. web-sys: WebSockets
- 1.19. web-sys: WebRTC DataChannel
- 1.20. web-sys: requestAnimationFrame
- 1.21. web-sys: A Simple Paint Program
- 1.22. web-sys: Wasm in Web Worker
- 1.23. Parallel Raytracing
- 1.24. Wasm Audio Worklet
- 1.25. web-sys: A TODO MVC App
- 2. Reference
-
- 2.1. Deployment
- 2.2. JS snippets
- 2.3. Static JS Objects
- 2.4. Passing Rust Closures to JS
- 2.5. Receiving JS Closures in Rust
- 2.6. Promises and Futures
- 2.7. Iterating over JS Values
- 2.8. Arbitrary Data with Serde
- 2.9. Accessing Properties of Untyped JS Values
- 2.10. Working with Duck-Typed Interfaces
- 2.11. Command Line Interface
- 2.12. Optimizing for Size
- 2.13. Supported Rust Targets
- 2.14. Supported Browsers
- 2.15. Support for Weak References
- 2.16. Support for Reference Types
- 2.17. Supported Types
-
- 2.17.1. Imported JavaScript Types
- 2.17.2. Exported Rust Types
- 2.17.3. JsValue
- 2.17.4. Box<[T]> and Vec
- 2.17.5. *const T and *mut T
- 2.17.6. NonNull
- 2.17.7. Numbers
- 2.17.8. bool
- 2.17.9. char
- 2.17.10. str
- 2.17.11. String
- 2.17.12. Number Slices
- 2.17.13. Boxed Number Slices
- 2.17.14. Result<T, E>
- 2.18. #[wasm_bindgen] Attributes
-
- 2.18.1. On JavaScript Imports
-
- 2.18.1.1. catch
- 2.18.1.2. constructor
- 2.18.1.3. extends
- 2.18.1.4. getter and setter
- 2.18.1.5. final
- 2.18.1.6. indexing_getter, indexing_setter, and indexing_deleter
- 2.18.1.7. js_class = "Blah"
- 2.18.1.8. js_name
- 2.18.1.9. js_namespace
- 2.18.1.10. method
- 2.18.1.11. module = "blah"
- 2.18.1.12. raw_module = "blah"
- 2.18.1.13. no_deref
- 2.18.1.14. static_method_of = Blah
- 2.18.1.15. structural
- 2.18.1.16. typescript_type
- 2.18.1.17. variadic
- 2.18.1.18. vendor_prefix
- 2.18.2. On Rust Exports
-
- 2.18.2.1. constructor
- 2.18.2.2. js_name = Blah
- 2.18.2.3. js_class = Blah
- 2.18.2.4. readonly
- 2.18.2.5. skip
- 2.18.2.6. skip_jsdoc
- 2.18.2.7. start
- 2.18.2.8. main
- 2.18.2.9. typescript_custom_section
- 2.18.2.10. getter and setter
- 2.18.2.11. inspectable
- 2.18.2.12. skip_typescript
- 2.18.2.13. getter_with_clone
- 2.18.2.14. unchecked_return_type and unchecked_param_type
- 2.18.2.15. return_description and param_description
- 3. web-sys
-
- 3.1. Using web-sys
- 3.2. Cargo Features
- 3.3. Function Overloads
- 3.4. Type Translations
- 3.5. Inheritance
- 3.6. Unstable APIs
- 4. Testing with wasm-bindgen-test
-
- 4.1. Usage
- 4.2. Writing Asynchronous Tests
- 4.3. Testing in Headless Browsers
- 4.4. Continuous Integration
- 4.5. Coverage (Experimental)
- 5. Contributing to wasm-bindgen
-
- 5.1. Testing
- 5.2. Internal Design
-
- 5.2.1. JS Objects in Rust
- 5.2.2. Exporting a function to JS
- 5.2.3. Exporting a struct to JS
- 5.2.4. Importing a function from JS
- 5.2.5. Importing a class from JS
- 5.2.6. Rust Type conversions
- 5.2.7. Types in wasm-bindgen
- 5.3. js-sys
-
- 5.3.1. Testing
- 5.3.2. Adding More APIs
- 5.4. web-sys
-
- 5.4.1. Overview
- 5.4.2. Testing
- 5.4.3. Logging
- 5.4.4. Supporting More Web APIs
- 5.5. Publishing
- 5.6. Team
This documentation is no longer maintained at this domain, and is now maintained at wasm-bindgen.github.io instead. Wasm audio worklet
View full source code or view the compiled example online
This is an example of using threads inside specific worklets with WebAssembly, Rust, and wasm-bindgen
, culminating in an oscillator demo. This demo should complement the parallel-raytrace example by demonstrating an alternative approach using ES modules with on-the-fly module creation.
Building the demo
One of the major gotchas with threaded WebAssembly is that Rust does not ship a precompiled target (e.g. standard library) which has threading support enabled. This means that you'll need to recompile the standard library with the appropriate rustc flags, namely -C target-feature=+atomics,+bulk-memory,+mutable-globals
. Note that this requires a nightly Rust toolchain. See the more detailed instructions of the parallel-raytrace example.
Caveats
This example shares most of its caveats with the parallel-raytrace example. However, it tries to encapsulate worklet creation in a Rust module, so the application developer does not need to maintain custom JS code.
Browser Requirements
This demo should work in the latest Chrome, Firefox and Safari versions at this time. Note that this example requires HTTP headers to be set like in parallel-raytrace.
RetroSearch is an open source project built by @garambo
| Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4