Skip to content

GoogleChromeLabs/audioworklet-polyfill

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 

AudioWorklet Polyfill

AudioWorklet Polyfill npm

1kB polyfill for AudioWorklet.

audioworklet-polyfill is a tiny JavaScript library that brings AudioWorklet support to all major browsers: Chrome, Firefox, Safari and Edge. It uses ScriptProcessorNode under the hood, and runs your Worklet code in an isolated scope on the main thread (read why).

Basic Demo DSP Playground Demo

New to AudioWorklet? Check out this great Introduction and Demos or the AudioWorklet Examples.

Usage

<script src="audioworklet-polyfill.js"></script>
<!-- or: -->
<script src="https://unpkg.com/audioworklet-polyfill/dist/audioworklet-polyfill.js"></script>

Or with a bundler:

import 'audioworklet-polyfill';

... or with ES Modules on the web:

import('https://unpkg.com/audioworklet-polyfill/dist/audioworklet-polyfill.js');

Roadmap

  • Improve support for custom parameters

Why are Worklets emulated on the main thread?

This polyfill is intended to be a bridging solution until AudioWorklet is implemented across all browsers. It's an improvement over ScriptProcessorNode even though that's what it uses under the hood, because code written using this polyfill is forwards-compatible: as native support improves, your application improves. This polyfill offers a simple, future-proof alternative to ScriptProcessorNode without introducing Workers or relying on shared memory.

Similar Libraries

@jariseon has implemented a similar polyfill that uses Web Workers for audio processing.

License

Apache 2.0