   osco.frequency.value = freq
 
   osco = Gainer(osco)
-  osco.gain.linearRampToValueAtTime(1, context.currentTime)
+  osco.gain.linearRampToValueAtTime(velocity / 128, 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)

  noteFrequencies[note]

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