diff --git a/Sound/Tidal/Dirt.hs b/Sound/Tidal/Dirt.hs
--- a/Sound/Tidal/Dirt.hs
+++ b/Sound/Tidal/Dirt.hs
@@ -45,16 +45,17 @@
                             F "bandf" (Just 0),
                             F "bandq" (Just 0)
                           ],
-                 timestamp = MessageStamp
+                 timestamp = MessageStamp,
+                 latency = 0.04
                 }
 
-
 kriole :: OscShape
 kriole = OscShape {path = "/trigger",
                  params = [ I "ksymbol" Nothing,
                             F "kpitch" (Just 1)
                           ],
-                 timestamp = MessageStamp
+                 timestamp = MessageStamp,
+                 latency = 0.04
                 }
 
 dirtstart name = start "127.0.0.1" 7771 dirt
diff --git a/Sound/Tidal/Stream.hs b/Sound/Tidal/Stream.hs
--- a/Sound/Tidal/Stream.hs
+++ b/Sound/Tidal/Stream.hs
@@ -36,14 +36,13 @@
 
 data OscShape = OscShape {path :: String,
                           params :: [Param],
-                          timestamp :: TimeStamp
+                          timestamp :: TimeStamp,
+                          latency :: Double
                          }
 type OscMap = Map.Map Param (Maybe Datum)
 
 type OscPattern = Pattern OscMap
 
-latency = 0.04
-
 ticksPerCycle = 8
 
 defaultDatum :: Param -> Maybe Datum
@@ -80,7 +79,7 @@
      let cycleD = ((fromIntegral tick) / (fromIntegral ticksPerCycle)) :: Double
          logicalNow = (logicalTime change cycleD)
          logicalPeriod = (logicalTime change (cycleD + (1/(fromIntegral ticksPerCycle)))) - logicalNow
-         logicalOnset = logicalNow + (logicalPeriod * o) + latency
+         logicalOnset = logicalNow + (logicalPeriod * o) + (latency shape)
          sec = floor logicalOnset
          usec = floor $ 1000000 * (logicalOnset - (fromIntegral sec))
          oscdata = catMaybes $ mapMaybe (\x -> Map.lookup x m') (params shape)
diff --git a/tidal.cabal b/tidal.cabal
--- a/tidal.cabal
+++ b/tidal.cabal
@@ -1,5 +1,5 @@
 name:                tidal
-version:             0.4.20
+version:             0.4.21
 synopsis:            Pattern language for improvised music
 -- description:         
 homepage:            http://yaxu.org/tidal/
diff --git a/tidal.el b/tidal.el
--- a/tidal.el
+++ b/tidal.el
@@ -56,7 +56,7 @@
     (tidal-see-output))
   (tidal-send-string ":set prompt \"\"")
   (tidal-send-string "import Sound.Tidal.Context")
-  (tidal-send-string "import Sound.Tidal.VolcaKeys")
+;  (tidal-send-string "import Sound.Tidal.VolcaKeys")
 ;  (tidal-send-string "import Volca.Beat")
 ;  (tidal-send-string "import Volca.Key")
 ;  (tidal-send-string "(note, [portamento, expression, voice, octave, detune, vcoegint, kcutoff, vcfegint, lforate, lfopitchint, lfocutoffint, attack, decay, sustain, dtime , dfeedback], keystop) <- keystart")
@@ -71,10 +71,10 @@
   (tidal-send-string "d8 <- dirtStream")
   (tidal-send-string "d9 <- dirtStream")
   (tidal-send-string "d10 <- dirtStream")
-  (tidal-send-string "k1 <- keyStream")
+;  (tidal-send-string "k1 <- keyStream")
   (tidal-send-string "(cps, getNow) <- bpsUtils")
   (tidal-send-string "let bps x = cps (x/2)")
-  (tidal-send-string "let hush = mapM_ ($ silence) [d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,k1]")
+  (tidal-send-string "let hush = mapM_ ($ silence) [d1,d2,d3,d4,d5,d6,d7,d8,d9,d10]")
   (tidal-send-string "let solo = (>>) hush")
   (tidal-send-string ":set prompt \"tidal> \"")
 )
