colorTween :: Monad m => VarT m Float (V4 Float)
colorTween = V4 <$> r <*> g <*> b <*> pure 1
  where r = flip tweenStream 1 $ fix $ \nxt -> do
              step 1
              tween easeInExpo 1 0 1
              constant 0 2
              tween easeInExpo 0 1 1
              constant 1 2
              nxt
        g = flip tweenStream 1 $ fix $ \nxt -> do
              step 1
              constant 1 1
              tween easeInExpo 1 0 1
              constant 0 2
              tween easeInExpo 0 1 1
              constant 1 1
              step 1
              nxt
        b = flip tweenStream 1 $ fix $ \nxt -> do
              step 1
              constant 1 2
              tween easeInExpo 1 0 1
              constant 0 2
              tween easeInExpo 0 1 1
              step 1
              step 1
              step 1
              nxt
colorTween :: Monad m => VarT m Float (V4 Float)
colorTween = V4 <$> r <*> g <*> b <*> pure 1
  where r = flip tweenStream 1 $ fix $ \nxt -> do
              step 1
              tween easeInExpo 1 0 1
              constant 0 2
              tween easeInExpo 0 1 1
              constant 1 2
              nxt
        g = flip tweenStream 1 $ fix $ \nxt -> do
              step 1
              constant 1 1
              tween easeInExpo 1 0 1
              constant 0 2
              tween easeInExpo 0 1 1
              constant 1 1
              step 1
              nxt
        b = flip tweenStream 1 $ fix $ \nxt -> do
              step 1
              constant 1 2
              tween easeInExpo 1 0 1
              constant 0 2
              tween easeInExpo 0 1 1
              step 1
              step 1
              step 1
              nxt
colorTween = V4 <$> r <*> g <*> b <*> pure 1
  where r = flip tweenStream 1 $ fix $ \nxt -> do
              step 1
              tween easeInExpo 1 0 1
              constant 0 2
              tween easeInExpo 0 1 1
              constant 1 2
              nxt
        g = flip tweenStream 1 $ fix $ \nxt -> do
              step 1
              constant 1 1
              tween easeInExpo 1 0 1
              constant 0 2
              tween easeInExpo 0 1 1
              constant 1 1
              step 1
              nxt
        b = flip tweenStream 1 $ fix $ \nxt -> do
              step 1
              constant 1 2
              tween easeInExpo 1 0 1
              constant 0 2
              tween easeInExpo 0 1 1
              step 1
              step 1
              step 1
              nxt