anchor.diff:    (combine-events (event) *event*))
   
   (defgeneric play (item)
  -  (:documentation "Plays an item (typically an event) according to the current *event-output-function*."))
  +  (:documentation "Play an item (typically an event or pattern) according to the current *event-output-function*."))
  +
  +(defgeneric stop (item)
  +  (:documentation "Stop an item (typically a playing pattern) according to the current *event-output-function*."))
   
   (defparameter *tempo* 1
     "The current tempo in beats per second.")
  
positive.code: ;;; pattern
  
  (defclass pattern ()
    ((remaining :initarg :remaining :accessor :remaining :initform nil)
     ;; (number :initarg :number :accessor :number :initform 0)
     )
    (:documentation "Abstract pattern superclass."))
  
  (defmethod play ((item pattern))
  
negative.code: 
  ;;; pdef
  
  (defpattern pdef (pattern) ;; FIX: make play method for pdef to avoid adding it twice to the clock. also need 'reset' method.
    ((key :initarg :key :accessor :key)
     (pattern :initarg :pattern :accessor :pattern))
    "A named pattern.")
  