audio_object = function (options) {
  this._id = _audio_id++;

  // merge options
  if (_.isString(options)) {
    this.src = options;
  } else if (_.isObject(options)) {
    _.extend(this, options);
  }

  // set stopped state
  this._state = audio_object.STATE_STOPPED;

  // create web audio element
  this._element = new Audio();

  // wait for played
  this._element.onplaying = this._on_playing.bind(this);

  // wait for ended
  this._element.onended = this._on_ended.bind(this);

  // handle errors
  this._element.onerror = this._on_error.bind(this);

  // set starting values
  this.set_volume(this.get_volume());
  this._element.loop = this.get_loop();
  this._element.autoplay = this.get_autoplay();

  // set audio source
  this._element.src = this.get_src();
}
audio_object - wrapper/controller object for handling an audio file.
 @param {String|Object} options audio src as string or a options object