docs: function(id, repeat, volume) {
              if (repeat === 0 || !Crafty.support.audio || !this.sounds[id])
                  return;
              var s = this.sounds[id];
              var c = this.getOpenChannel();
              if (!c) return null;
              c.id = id;
              c.repeat = repeat;
              var a = c.obj;
  
              c.volume = s.volume = s.obj.volume = volume || Crafty.audio.volume;
  
              a.volume = s.volume;
              a.src = s.obj.src;
  
              if (this.muted) a.volume = 0;
              a.play();
              s.played++;
              c.onEnd = function() {
                  if (s.played < c.repeat || c.repeat === -1) {
                      if (this.currentTime) this.currentTime = 0;
                      this.play();
                      s.played++;
                  } else {
                      c.active = false;
                      this.pause();
                      this.removeEventListener("ended", c.onEnd, true);
                      this.currentTime = 0;
                      Crafty.trigger("SoundComplete", {
                          id: c.id
                      });
                  }
              };
              a.addEventListener("ended", c.onEnd, true);
  
              return a;
          }