anchor.diff:  (defun absolute-beats-to-unix-time (beats clock)
     "Convert a clock's number of beats to a unix time. Number of beats is only guaranteed to be accurate if it's greater than the clock's when-tempo-changed slot."
     (+ (slot-value clock 'unix-time-at-tempo) (dur-time (- beats (slot-value clock 'when-tempo-changed)) (tempo clock))))
  +
  +(defun absolute-beats-to-timestamp (beats clock)
  +  "Convert a clock's number of beats to a timestamp. The result is only guaranteed to be accurate if it's greater than the clock's when-tempo-changed slot."
  +  (with-slots (timestamp-at-tempo when-tempo-changed) clock
  +    (local-time:timestamp+ timestamp-at-tempo (dur-time (- beats when-tempo-changed) (tempo clock)) :sec)))
  +
  +(defun absolute-beats-to-internal-time (beats clock)
  +  "Convert a clock's number of beats to an internal real time. The result is only guaranteed to be accurate if it's greater than the clock's when-tempo-changed slot."
  +  (with-slots (time-at-tempo when-tempo-changed) clock
  +    (+ time-at-tempo (* internal-time-units-per-second (dur-time (- beats when-tempo-changed) (tempo clock))))))
   
   (defun make-clock (&optional (tempo 1) tasks)
     "Create a clock. The clock automatically starts running in a new thread."
  
positive.code:     (if playing
          (progn (stop item) nil)
          (progn (play item) t))))
  
negative.code:   "Get the current universal time with microseconds."
    (timestamp-to-universal (local-time:now)))
  
  (defun cl-collider-now () ;; FIX: pull request this to byulparan/scheduler??
    "Get the current unix time in the same format as byulparan/scheduler."
    (timestamp-to-cl-collider (local-time:now)))
  
  (defclass task ()
    ((gensym :initform (gensym))
     (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)
  