       doc.on 'mousemove', @seekMove
       doc.on 'mouseup', @seekEnd
 
-    setSources: ({@image, @audio}) =>
+    setImage: (@image) =>
       @spectrogram.attr src: @image
 
+    setAudio: (@audio) =>
       @el.removeClass 'loaded'
 
       @sound?.destruct()
 
       soundManager.onready =>
         @sound = soundManager.createSound
-          id: @audio.replace /\W+/g, '_'
+          id: "AUDIO_#{Math.floor Math.random() * 9999}"
           url: @audio
 
-          whileloading: @playerLoading
-          onload: @playerLoaded
-          onplay: @playerPlayed
-          whileplaying: @playerTimeUpdated
-          onpause: @playerPaused
-          onfinish: @playerFinished
+          whileloading: @soundLoading
+          onload: @soundLoaded
+          onplay: @soundPlayed
+          whileplaying: @soundPlaying
+          onpause: @soundPaused
+          onfinish: @soundFinished
 
-    playerLoading: () =>
+    soundLoading: =>
       @el.addClass 'loading'
 
-    playerLoaded: =>
+    soundLoaded: =>
       @el.removeClass 'loading'
       @el.addClass 'loaded'
 
-    playerPlayed: =>
+    soundPlayed: =>
       @el.addClass 'playing'
 
-    playerTimeUpdated: =>
+    soundPlaying: =>
       finishedPercent = "#{(@sound.position / @sound.duration) * 100}%"
       @seekLine.css left: finishedPercent
       @fill.css width: finishedPercent
       @thumb.css left: finishedPercent
 
-    playerPaused: =>
+    soundPaused: =>
       @el.removeClass 'playing'
 
-    playerFinished: =>
-      @playerPaused()
+    soundFinished: =>
+      @soundPaused()
       delay 500, =>
         @sound.setPosition 0
-        @playerTimeUpdated()
+        @soundPlaying()
 
     play: =>
       @sound.play()

      @html @template
      @el.attr tabindex: 0

      @setSources {@image, @audio}

    delegateEvents: =>
      super


        when LEFT
          @sound.setPosition clamp @sound.position - @keySeek, min: 0, max: @sound.duration
          @soundPlaying()

        when RIGHT
          @sound.setPosition clamp @sound.position + @keySeek, min: 0, max: @sound.duration
          @soundPlaying()

  module.exports = SpectrogramPlayer
