Home

Awesome

#ngWebAudio ngWebAudio is an AngularJS module for playing audio using the WebAudio API.

HTML5 Audio is used if WebAudio is unavailable.

One motivation for using WebAudio is that you can buffer audio on page load for mobile browsers. Currently most mobile browsers will not pre-buffer HTML5 audio elements unless it is interacted with, and will also ignore XHR caches. The work-around is to fetch and cache audio via XHR, and play it back using the WebAudio.

#Usage

angular.module('my-app', ['ngWebAudio'])
  .controller('controller', function($scope, WebAudio) {
    // ...
  });

Module: ngWebAudio

Service: WebAudio

API

var audio = WebAudio(path_to_audio, [options]);  // or
var audio = new WebAudio(path_to_audio, [options]);

// Automatically called on creation if options.buffer = true (default)
// otherwise will be called when audio is first played
audio.buffer();

// Current position in audio track
audio.offset();

audio.play();
audio.stop();
audio.pause();

// Options for audio object
audio.options

// Using WebAudio or HTML Audio fallback
audio.isWebAudio

See demo/demo.html for an example.

Options

options = {
  buffer = true,
  loop = false,
  gain = 1,
  fallback = false,     // Use HTML5 audio fallback
  retryInterval = 1000  // Retry interval if buffering fails
}

Events

audio.onPlay = function() { ... }      // When media starts playing
audio.onStop = function() { ... }      // When media is stopped (with audio.stop())
audio.onEnd = function() { ... }       // When media finishes playing completely (only if loop = false)
audio.onBuffered = function() { ... }  // When media is buffered

Callbacks are attached to the audio object that is returned.

##Installation

bower install ng-webaudio

##Testing

npm install -g karma-cli
npm install
bower install
karma start

##License MIT licensed. See LICENSE for details.