anchor.diff:  
   (defparameter *midi-channels-instruments* (make-list 16 :initial-element 0))
   
  -;; backend functions
  +;;; backend functions
   
   (defun is-midi-event-p (event)
     (or (eq (event-value event :type) :midi)
  
positive.code: 
  (defun play-midi (event &optional task)
    (declare (ignore task))
    (let* ((channel (or (event-value event :channel)
                        0))
           (pgm (and (typep (event-value event :instrument) 'number)
                     (truncate (event-value event :instrument))))
           (note (truncate (event-value event :midinote)))
           (velocity (round (* 127 (event-value event :amp)))) ;; FIX: maybe this shouldn't be linear
           (time (local-time:timestamp+ (or (raw-event-value event :timestamp-at-start) (local-time:now))
                                        (truncate (* (or (raw-event-value event :latency) *latency*) 1000000000))
                                        :nsec)))
  
negative.code:                       (when (and pgm
                                   (not (= pgm (nth channel *midi-channels-instruments*))))
                          (midihelper:send-event (midihelper:ev-pgmchange channel pgm)))
                        (midihelper:send-event (midihelper:ev-cc channel 10 pan))
                        (midihelper:send-event (midihelper:ev-noteon channel note velocity))
                        (sleep (dur-time (sustain event)))
                        (midihelper:send-event (midihelper:ev-noteoff channel note velocity)))
  