code: function(id) {
              if (!Crafty.support.audio) return;
  
              var s,
                  filename,
                  audioFolder = Crafty.paths().audio;
  
              if (!id) {
                  for (var i in this.sounds) {
                      s = this.sounds[i];
                      filename = s.obj.src.split("/").pop();
                      Crafty.audio.stop(id);
                      delete Crafty.assets[audioFolder + filename];
                      delete Crafty.assets[s.obj.src];
                      delete Crafty.audio.sounds[id];
                  }
                  return;
              }
              if (!this.sounds[id]) return;
  
              s = this.sounds[id];
              filename = s.obj.src.split("/").pop();
              Crafty.audio.stop(id);
              delete Crafty.assets[audioFolder + filename];
              delete Crafty.assets[s.obj.src];
              delete Crafty.audio.sounds[id];
          }
docs: @
  #Crafty.audio.remove
  @comp Crafty.audio
  @kind Method
  
  @sign public this Crafty.audio.remove([String id])
  @param id - A string to refer to sounds
  
  Will stop the sound and remove all references to the audio object allowing the browser to free the memory.
  If no id is given, all sounds will be removed.
  
  This function uses audio path set in Crafty.path in order to remove sound from the assets object.
  
  @example
  ~~~
  Crafty.audio.remove("walk");
  ~~~