ios-safe-audio-context

create a WebAudio context that works in iOS and everywhere else

Showing:

Popularity

Downloads/wk

43

GitHub Stars

54

Maintenance

Last Commit

6yrs ago

Contributors

0

Package

Dependencies

0

Size (min+gzip)

0.3KB

License

MIT

Type Definitions

Tree-Shakeable

No?

Categories

Readme

ios-safe-audio-context

experimental

Creates a AudioContext that works as expected in desktop and mobile, particularly across iOS devices.

Motivation

There is a bug in iOS where the AudioContext sampleRate is sometimes not what you would expect, and as a result, all WebAudio plays with heavy distortion. This occurs when you play an audio/video element with a different sample rate, or when you first boot up Safari (tested on iOS9.2, iPhone5S, no headphones).

To get around this, we try to detect a broken state, and if so, play a dummy buffer before returning a new AudioContext which should have the desired sample rate (default 44100).

Example

On iOS, this function must be called from user gesture event, such as touchend.

const createAudioContext = require('ios-safe-audio-context')

clickToPlay.addEventListener('touchend', () => {
  const audioContext = createAudioContext()
  
  // now you can use this context for playback
})

Usage

NPM

context = createAudioContext([desiredSampleRate])

Returns a new AudioContext, only applying the hack if we detect a broken state (iOS). desiredSampleRate defaults to 44100.

License

MIT, see LICENSE.md for details.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100