UNPKG

oggmented

Version:

Drop-in replacement for AudioContext. Overrides decodeAudioData and provides Ogg Vorbis decoding, calling super.decodeAudioData for non-vorbis.

21 lines (14 loc) 1.19 kB
# oggmented oggmented `extends` AudioContext and overrides `decodeAudioData` to use an Emscripten transpiling of libogg-1.3.4 and libvorbis-1.3.6 when it encounters ogg vorbis data. This allows you to [`decodeAudioData`](https://developer.mozilla.org/en-US/docs/Web/API/BaseAudioContext/decodeAudioData) ogg vorbis buffers correctly in any browser. This is especially useful in Safari and iOS browsers, which don't `decodeAudioData(oggVorbisBuffer)` [at all](https://caniuse.com/#search=vorbis). In addition, [Blink](https://en.wikipedia.org/wiki/Blink_(browser_engine)) (Brave, Opera, Chrome) uses ffmpeg, which has [a bug that slightly bloats the end of decoded vorbis audio](https://trac.ffmpeg.org/ticket/6367), resulting in clicks when `audioContext.createBufferSource().loop === true`. Using this package fixes that (assuming of course that the waveform begins and ends at the same place etc). # Installation `npm install oggmented` # Usage Use it like you would regular AudioContext: ``` import oggmentedAudioContext from 'oggmented' const audioCtx = new oggmentedAudioContext() // instead of // const audioCtx = new (window.AudioContext || window.webkitAudioContext)() ```