(defun play (waves duration) ;; WAVES is a list of floats that rule wave frequencies, DURATION is the duration of the sample generated in seconds (unless harmony-simple:*server* (harmony-simple:initialize)) (unless (harmony-simple:started-p) (error "Harmony is stopped")) (let* ((sample-rate (harmony:samplerate harmony-simple:*server*)) (data (make-array (floor (* duration sample-rate)) :element-type 'single-float :initial-element 0.0s0))) (generate-wave waves data sample-rate) ;; This generates the wanted output and fills out the data array (harmony-simple:play 'harmony:buffer-source :sfx :buffers data)))