anchor.diff:    (+ (local-time:timestamp-to-unix timestamp) (* (local-time:nsec-of timestamp) 1.0d-9)))
   
   (defmethod synth-controls (synth (backend (eql :supercollider)))
  -  (mapcar #'car (sc::get-synthdef-metadata synth :controls)))
  +  (mapcar #'car (cl-collider::synthdef-metadata synth :controls)))
   
   (defun supercollider-make-synth-args-list (instrument event)
     "Generate a plist of parameters for a synth based off of the synth's arguments. Unlike `event-plist', this function doesn't include event keys that aren't also one of the synth's arguments."
  -  (when (not (sc::get-synthdef-metadata instrument)) ;; if we don't have data for the synth, simply return a plist for the event and hope for the best.
  +  (when (not (cl-collider::get-synthdef-metadata instrument)) ;; if we don't have data for the synth, simply return a plist for the event and hope for the best.
       (return-from supercollider-make-synth-args-list (copy-list (event-plist event))))
     (let ((synth-params (remove-if (lambda (arg) ;; for parameters unspecified by the event, we fall back to the synth's defaults, NOT the event's...
                                      (unless (string= (symbol-name arg) "SUSTAIN") ;; ...with the exception of sustain, which the synth should always get.
  
positive.code:   (declare (ignore key))
    object)
  
  (defmethod supercollider-convert-object ((object sc::buffer) key)
    (declare (ignore key))
    (sc:bufnum object))
  
  (defmethod supercollider-convert-object ((object sc::bus) key)
    (declare (ignore key))
    (sc:busnum object))
  
  (defmethod supercollider-convert-object ((object sc::node) key)
    (let ((bus (if (eql key :out)
                   (sc:get-synthdef-metadata object :input-bus)
                   (or (sc:get-synthdef-metadata object :output-bus)
                       (sc:get-synthdef-metadata object :input-bus)))))
      (if bus
          (sc:busnum bus)
          object)))
  
  (defmethod supercollider-convert-object ((object sc::group) key)
    (declare (ignore key))
    (sc::id object))
  
  (defvar *supercollider-node-map* (make-node-map)
    "Hash mapping cl-patterns tasks to SuperCollider nodes.")
  
negative.code: ;;; backend functions
  
  (defmethod start-backend ((backend (eql :supercollider)))
    (setf cl-collider:*s* (cl-collider:make-external-server "localhost" :port 4444))
    (cl-collider:server-boot cl-collider:*s*))
  
  (defmethod stop-backend ((backend (eql :supercollider)))
    (cl-collider:server-quit cl-collider:*s*))
  
  (defmethod backend-plays-event-p (event (backend (eql :supercollider)))
    (let ((inst (event-value event :instrument)))
      (or (cl-collider:synthdef-metadata inst)
          (typep inst 'cl-collider::node))))
  
  (defmethod backend-play-event (item task (backend (eql :supercollider)))
    "Play ITEM on the SuperCollider sound server. TASK is an internal parameter used when this function is called from the clock."
  