   noteFrequencies[note]
 
 notes = {}
-playNote = (note, id) ->
+playNote = (note, velocity, id) ->
   # TODO: Why do these notes cut out suddenly and for no reason?
   console.log "play!"
   freq = noteToFreq(note - 12)

  osco.frequency.value = freq

  osco = Gainer(osco)
  osco.gain.linearRampToValueAtTime(1, context.currentTime)
  osco.connect(masterGain)
  
  osco.start(context.currentTime)

  notes[id] = [osco, osco.gain]

  console.log "release!"
  [osco, gain] = notes[id]
  # Wow this is nutz!
  # Need to set the value to the current value because the
  # linearRampToValueAtTime uses the previous time to create the ramp, yolo!
  gain.setValueAtTime(osco.gain.value, context.currentTime)
  gain.linearRampToValueAtTime(0.0, context.currentTime + 0.125)
