anchor.diff:    "Get the current universal time with microseconds."
     (timestamp-to-universal (local-time:now)))
   
  -(defun unix-time-byulparan () ;; FIX: pull request this to byulparan/scheduler??
  +(defun cl-collider-now () ;; FIX: pull request this to byulparan/scheduler??
     "Get the current unix time in the same format as byulparan/scheduler."
  -  (let ((now (local-time:now)))
  -    (+ (local-time:timestamp-to-unix now) (* (local-time:nsec-of now) 1.0d-9))))
  +  (timestamp-to-cl-collider (local-time:now)))
   
   (defclass task ()
     ((gensym :initform (gensym))
  -   (clock :initform *clock* :initarg :clock)
  -   (item :initform nil :initarg :item)
  -   (start-time :initform nil :initarg :start-time)
  -   (next-time :initform nil :initarg :next-time)
  +   (clock :initarg :clock :initform *clock*)
  +   (item :initarg :item :initform nil)
  +   (start-time :initarg :start-time :initform nil)
  +   (next-time :initarg :next-time :initform nil)
      (nodes :initarg :nodes :initform (list))))
   
   (defparameter *clock* nil)
  
positive.code: 
  (defclass clock ()
    ((beats :initform 0 :documentation "The number of beats that have elapsed since the creation of the clock.")
     (tempo :initform 1 :initarg :tempo :accessor tempo :documentation "The tempo of the clock, in beats per second.")
     (granularity :initform 1/10 :initarg :granularity :documentation "How often the clock \"wakes up\" to process events in each beat. Shouldn't need to be adjusted.")
     (tasks :initform nil :documentation "The list of tasks that are running on the clock.")
     (tasks-lock :initform (bt:make-lock) :documentation "The lock on the tasks to make the clock thread-safe.")
     (unix-time-at-tempo :initform (unix-time-byulparan) :documentation "The Unix time when the tempo was last changed.")
     (when-tempo-changed :initform 0 :documentation "The number of 'beats' on the clock when the tempo was last changed.")))
  
  (defmethod (setf tempo) (value (item clock))
    (clock-add (event :type :tempo-change :tempo value) item))
  
negative.code:     (if playing
          (progn (stop item) nil)
          (progn (play item) t))))
  
  (defun pdefs-playing (&optional (clock *clock*))
    "Get a list of the names of all pdefs playing on CLOCK."
    (loop :for i :in (slot-value clock 'tasks)
       :collect (slot-value (slot-value i 'item) 'key)))
  