wshape.lsp Version 0.01 06 June 2005 Author Steven Jones Contact: jones57@swbell.net please include the word nyquist in subject line. Various wave shapers.
function
(wshape:exp sig n) Raise signal to the nth-power. sig - Sound. n - Integer. 0 < n, return - Sound.
function
Limit amplitude of signal to interval +-1 sig - Sound gain - Flonum. Higher values result in greater clipping, default 1 return - Sound.
function
(wshape:cheb sig degree) Chebyshev wave shaper. sig - Sound. degree - Integer. 0 <= degree. Note higher degrees require increasingly more computation return - Sound.
;; wshape.lsp ;; Version 0.01 06 June 2005 ;; Author Steven Jones ;; ;; Contact: ;; jones57@swbell.net please include the word nyquist in subject line. ;; ;; Various wave shapers. (provide 'wshape) (current-file "wshape") ;; @doc function wshape:exp ;; (wshape:exp sig n) ;; Raise signal to the nth-power. ;; ;; sig - Sound. ;; n - Integer. 0 < n, ;; return - Sound. ;; (defun wshape:exp (sig n) (if (plusp n) (mult sig (wshape:exp sig (1- n))) 1)) ;; @doc function wshape:limit ;; Limit amplitude of signal to interval +-1 ;; ;; sig - Sound ;; gain - Flonum. Higher values result in greater clipping, default 1 ;; return - Sound. ;; (defun wshape:limit (sig &optional (gain 1)) (let (sig2) (setf sig2 (scale gain sig)) (mult sig2 (recip (sum 1 (multichan-expand #'snd-abs sig2)))))) ;; @doc function wshape:cheb ;; (wshape:cheb sig degree) ;; Chebyshev wave shaper. ;; ;; sig - Sound. ;; degree - Integer. 0 <= degree. Note higher degrees require increasingly ;; more computation ;; return - Sound. ;; (defun wshape:cheb (sig degree) (cond ((or (zerop degree)(minusp degree)) (s-rest)) ((= 1 degree) sig) (t (sum (scale 2 (mult sig (wshape:cheb sig (1- degree)))) (scale -1 (wshape:cheb sig (- degree 2)))))))