anchor.diff:  (defvar *sink-cvar* (mezzano.supervisor:make-condition-variable "Sound output sink cvar"))
   
   (defvar *master-volume* 1.0)
  +
  +(defun master-volume ()
  +  *master-volume*)
  +
  +(defun (setf master-volume) (value)
  +  (check-type value single-float)
  +  (setf *master-volume* value))
   
   (defun mix (dest source volume &key (start1 0) end1 (start2 0) end2)
     (unless end1 (setf end1 (length dest)))
  
positive.code:   (:export #:sound-card
             #:register-sound-card
             #:sound-card-run
             #:make-sound-output-sink
             #:output-sound))
  
  (in-package :mezzano.driver.sound)
  
  
negative.code:    (%buffer-empty :initarg :buffer-empty :accessor buffer-empty)
     (%buffer-head :initarg :buffer-head :accessor buffer-head)
     (%buffer-tail :initarg :buffer-tail :accessor buffer-tail)
     (%format :initarg :format :accessor sink-format)
     (%volume :initarg :volume :accessor sink-volume)))
  
  (defmethod (setf sink-volume) :around (value (sink sound-output-sink))
    (check-type value single-float)
    (call-next-method))
  
  (defvar *cards* '())
  
  