anchor.diff:  							  (:output :snd-pcm-stream-playback))
   					     :device device
   					     :element-type element-type
  -					     :buffer (foreign-alloc (alsa-element-type element-type)
  +					     :buffer (cffi:make-shareable-byte-vector
  +						      (* (cffi:foreign-type-size (alsa-element-type element-type)) buffer-size channels-count))
  +					     #+nil(foreign-alloc (alsa-element-type element-type)
   								    :count (* (cffi:foreign-type-size (alsa-element-type element-type)) buffer-size channels-count))
   					     :buffer-size (* buffer-size channels-count) ;number of samples really
   					     :channels-count channels-count
  
positive.code:    pcs)
  
  (defmethod ref ((pcm pcm-stream) position)
    (mem-aref (buffer pcm) (alsa-element-type (element-type pcm)) position))
  
  (defmethod (setf ref) (value (pcm pcm-stream) position)
    #+(or)(assert (eql (element-type pcm) (type-of value)))
  
negative.code: 	  (progn ,@body)
         (also-alsa:drain ,stream)
         (also-alsa:alsa-close ,stream))))
  
  (defmacro with-alsa-buffer ((buffer pcm &body body))
    `(cffi:with-pointer-to-vector-data (,buffer (buffer pcm))
       ,@body))
  
  