     amp.gain.cancelScheduledValues audio.currentTime
     amp.gain.setValueAtTime 1 - oneShot, audio.currentTime
 
+  attack = value: 1
+  decay = value: 1
+  
   triggerOneShot = ->
     if preset.get 'oneshotstate'
+      a = attack.vaue
+      d = decay.value
       amp.gain.setValueAtTime 0, audio.currentTime
-      a = preset.get 'attack'
-      d = preset.get 'decay'
       amp.gain.linearRampToValueAtTime 1, audio.currentTime + a
       amp.gain.linearRampToValueAtTime 0,
         audio.currentTime + a + d

  b = new bindings preset
  b.bindParam 'volume', output.gain
  b.bindParam 'noise', noise.frequency, bindings.logScale 50, 10000
  b.bindRange 'slfFreq', 'slfRange', slf.frequency,
    [1,10,100,5000], bindings.logScale .1, 1
  b.bindRange 'vcoFreq', 'vcoRange', vcooffset,

  # return a collection of exposed parameters
  {
    triggerOneShot: triggerOneShot
    getLength: ->
      console.log attack.value + decay.value
      attack.value + decay.value
  }