Accurate tape effect

You can generate a varying sine wave using HZOSC.

Example:

(setf depth 0.01)
(setf rpm 22)

; convert to Hz
(setf speed (/ rpm 60.0))

(defun gen-vardelay (hz depth)
  (setf max-variance (/ hz 2.0))  ; Max variation of speed in Hz
  (setf variance (sound-srate-abs hz (noise)))
  (setf variance (mult variance max-variance))
  (setf variance (force-srate *sound-srate* variance))
  (sum depth (mult depth (hzosc (sum hz variance)))))


(let ((vardelay (gen-vardelay speed depth)))
  (multichan-expand #'tapv *track* 0 vardelay (* 2 depth)))