API Docs for: 0.2.12
Show:

File: src\audio\index.js

/**
 * @module Lyria
 */
define(['root', 'jquery'], function(root, $) {'use strict';

  var supportedTypes = {
    'mp3' : 'audio/mpeg',
    'wav' : 'audio/wav',
    'ogg' : 'audio/ogg'
  };

  /**
   * 
   *
   * @param {Object} options
   * @param {String} options.id
   * @param {String[]} options.paths
   * @param {Number} options.volume Volume between 0..1
   */
  var Audio = function(options) {
    options = $.extend({
      'id' : '',
      'volume' : 1.0,
      'loop' : 1,
      'paths' : []
    }, options);
    this.options = options;
    this.audio = new window.Audio();
    for (var i = 0; i < options.paths.length; i++) {
      var fileExtension = options.paths[i].split('.').pop();

      if (supportedTypes[fileExtension] && this.audio.canPlayType(supportedTypes[fileExtension])) {
        this.audio.type = supportedTypes[fileExtension];
        this.audio.src = options.paths[i];
        break;
      }
    }
    this.audio.volume = options.volume;
    this.audio.id = options.id;
    $('body').append(this.audio);
  };

  /**
   *
   * @param {String} loop amount of loops this song should be played (-1 if unlimited) 
   */
  Audio.prototype.play = function(loop) {
    if (loop != null) {
      this.options.loop = loop;
    }
    if (this.options.loop && this.options.loop > 0) {
      this.options.loop--;
    }
    this.audio.play();
  };

  Audio.prototype.pause = function() {
    this.audio.pause();
  };

  Audio.prototype.stop = function() {
    this.options.loop = 1;
    this.audio.pause();
    this.audio.currentTime = 0;
  };

  /**
   * Sets or gets properties of the audio object
   *
   * @param {Object} prop
   * @param {Object} value (optional)
   */
  Audio.prototype.attr = function(prop, value) {
    switch (prop) {
      case 'duration':
      case 'length':
        return this.audio.duration;
      case 'position':
      case 'pos':
        if ( typeof value === 'undefined') {
          return this.audio.currentTime;
        } else {
          this.audio.currentTime = value;
        }
        break;
      case 'loop':
        if ( typeof value === 'undefined') {
          return this.options.loop;
        } else {
          this.options.loop = value;
        }
        break;
      case 'volume':
      case 'vol':
        if ( typeof value === 'undefined') {
          return this.audio.volume;
        } else {
          this.audio.volume = value;
        }
        break;
    }
  };

  return Audio;
});