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: 
  (defgeneric next (pattern)
    (:documentation "Returns the next value of a pattern stream, function, or other object, advancing the pattern forward in the process.")
    (:method-combination pattern)
    )
  
  (defmethod next ((pattern pattern))
    (next (as-pstream 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.")
  