Hi. Thanks for the bug report! Turns out this was a buggy method for prepare-to-play.
I’ve updated the sources, but until the next release, here’s an updated method to put into a file in your patches folder:
(defmethod PrepareToPlay ((player (eql :midi)) (self note) at &key approx port interval voice)
(when (not (memq (tie self) '(continue end)))
(setf port (or port (port self)))
(setf approx (or approx 2))
(let ((chan (+ (chan self) (micro-channel (approx-m (midic self) approx) approx)))
(pitch (truncate (approx-scale (get-current-scale approx) (midic self)) 100))
(vel (vel self))
(dur (- (real-dur self) 2))
(date at)
(voice (or voice 0)))
(let ((newinterval (and interval (interval-intersec interval (list at (+ at (- (real-dur self) 1)))))))
(when (or (null interval) newinterval)
(note-events port chan pitch vel
(if interval
(- (second newinterval) (first newinterval) 1)
dur)
(if interval
(- (first newinterval) (first interval))
date)
voice))))))