diff --git a/Sound/Tidal/Stream.hs b/Sound/Tidal/Stream.hs
--- a/Sound/Tidal/Stream.hs
+++ b/Sound/Tidal/Stream.hs
@@ -12,7 +12,7 @@
 import Data.Time (getCurrentTime)
 import Data.Time.Clock.POSIX (utcTimeToPOSIXSeconds)
 import Data.Ratio
-
+import GHC.Float (float2Double, double2Float)
 import Sound.Tidal.Pattern
 import qualified Sound.Tidal.Parse as P
 import Sound.Tidal.Tempo (Tempo, logicalTime, clocked,clockedTick,cps)
@@ -83,7 +83,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 shape)
+         logicalOnset = logicalNow + (logicalPeriod * o) + (latency shape) + nudge
          sec = floor logicalOnset
          usec = floor $ 1000000 * (logicalOnset - (fromIntegral sec))
          oscdata = cpsPrefix ++ preamble shape ++ (parameterise $ catMaybes $ mapMaybe (\x -> Map.lookup x m') (params shape))
@@ -99,6 +99,9 @@
                        | otherwise = ds
        cpsPrefix | cpsStamp shape = [float (cps change)]
                  | otherwise = []
+       nudge = maybe 0 (toF) (Map.lookup (F "nudge" (Just 0)) m)
+       toF (Just (Float f)) = float2Double f
+       toF _ = 0
 
 doAt t action = do forkIO $ do now <- getCurrentTime
                                let nowf = realToFrac $ utcTimeToPOSIXSeconds now
@@ -149,6 +152,9 @@
         defaultV a = Just $ toOsc a
         --defaultV Nothing = defaultDatum nParam
 
+nudge :: Pattern Double -> OscPattern
+nudge p = fmap (\x -> Map.singleton (F "nudge" (Just 0)) (Just $ float x)) p
+ 
 makeS = make string
 
 makeF :: OscShape -> String -> Pattern Double -> OscPattern
diff --git a/tidal.cabal b/tidal.cabal
--- a/tidal.cabal
+++ b/tidal.cabal
@@ -1,5 +1,5 @@
 name:                tidal
-version:         0.4.32
+version:         0.4.33
 synopsis:            Pattern language for improvised music
 -- description:         
 homepage:            http://tidal.lurk.org/
diff --git a/tidal.el b/tidal.el
--- a/tidal.el
+++ b/tidal.el
@@ -55,9 +55,7 @@
      tidal-interpreter-arguments)
     (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.Poetry")
+  (tidal-send-string ":module Sound.Tidal.Context")
 ;  (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")
@@ -72,11 +70,8 @@
   (tidal-send-string "d8 <- dirtStream")
   (tidal-send-string "d9 <- dirtStream")
   (tidal-send-string "d10 <- dirtStream")
-  (tidal-send-string "k1 <- keyStream")
-  (tidal-send-string "keyproxy 150000 \"24:0\"")
   (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> \"")
@@ -141,6 +136,9 @@
   (tidal-send-string "now' <- getNow")
   (tidal-send-string "let now = nextSam now'")
   (tidal-send-string "let retrig = (now ~>)")
+  (tidal-send-string "let fadeOut n = spread' (degradeBy) (retrig $ slow n $ envL)")
+  (tidal-send-string "let fadeIn n = spread' (degradeBy) (retrig $ slow n $ (1-) <$> envL)")
+
   )
 
 (defun tidal-run-line ()
