An example:
(defparameter *volume* 0.05)
(defun single-tone (frequency)
"Sounds a tone of the specified frequency, indefinitely."
(with-open-stream (stream <B>(sb-simple-audio:open-audio :sample-rate 44100 :direction :output)</B>)
(let ((phase 0.0d0)
(phase-increment (* 2 pi (/ frequency (sb-simple-audio:sample-rate stream))))
(amplitude (coerce (* *volume* <B>(sb-simple-audio:max-amplitude stream)</B>) 'double-float))
(offset <B>(sb-simple-audio:offset stream)</B>))
(loop
(setf phase (mod (+ phase phase-increment)
(* 2 pi)))
(write-byte (+ offset (round (* amplitude (sin phase)))) stream)))))
(single-tone 600)
It could for instance be used for playing and recording music or in any other kind of audio signal processing.
ASDF-install package (obsolete) http://v16.org/lisp/sb-simple-audio_latest.tar.gz