Skip to content
A thin wrapper around the Web Audio API that takes an <audio> element and gives you its waveform/frequency data in return.
JavaScript GLSL HTML
Latest commit 7c7a605 Nov 26, 2015 @hughsk 2.0.1
Failed to load latest commit information.
shaders first commit Sep 26, 2013
.gitignore first commit Sep 25, 2013
LICENSE.md first commit Sep 25, 2013
README.md Merge pull request #3 from mattdesl/fix/cors Jun 18, 2015
demo.js Merge pull request #3 from mattdesl/fix/cors Jun 18, 2015
index.html first commit Sep 25, 2013
index.js support <audio> tags Nov 25, 2015
package.json 2.0.1 Nov 26, 2015

README.md

web-audio-analyser experimental

A thin wrapper around the Web Audio API that lets you take some audio and get its waveform/frequency data in return.

Note: If you are streaming from SoundCloud or a similar API, you may need to set up CORS on your Audio source like so:

var audio = new Audio()
audio.crossOrigin = 'Anonymous'
audio.src = url

web-audio-analyser

Usage

analyser = require('web-audio-analyser')(audio[, ctx][, opts])

Takes some form of audio as the first argument. This may be one of the following:

  • An <audio> element.
  • A MediaStream object created by calling getUserMedia.
  • Any kind of AudioSourceNode.

Optionally, you can pass in your own AudioContext instance too. Note there may only be one instance of this per page, and if not supplied one will be created for you.

You can also use the following options:

  • stereo: retrieve separate data from the left and right audio channels.
  • audible: whether or not to play the audio you're analysing. Defaults to true, but set this to false to disable. You can use analyser.output to pass the resulting output elsewhere.

analyser.waveform([ui8array][, channel])

Copies the audio's current time-domain data into a Uint8Array. If you don't pass your own in, one will be created for you: this will be reused, so it's safe to call in an animation loop.

If you've enabled the stereo option, you should pass channel as either 0 or 1 to retrieve output from the left and right channels respectively.

analyser.frequencies([ui8array][, channel])

Much like analyser.waveform, with the exception of copying the audio's currrent frequency data into a Uint8Array.

Something went wrong with that request. Please try again.