Audacity Support Forum / Audacity and Nyquist / Nyquist Reference Manual / Nyquist Examples and Tutorials
Back to Pedro Morales' Examples Page
Sound Example: karplus-simple.ogg
;;; Simple KARPLUS-STRONG ;;; coded by Pedro Jose Morales ;;; pmorales@iele-ab.uclm.es ; NYQUIST code for simple Karplus-Strong algorithm (load "pjmg.lsp") (setf ks-class (send class :new '(cnt total-cnt z-1output output delay-line len total-len))) (send ks-class :answer :isnew '(pitch dur) '((setf len (round (/ *sound-srate* (step-to-hz pitch)))) (setf total-len (* *sound-srate* dur)) (setf delay-line (snd-samples (noise (/ (step-to-hz pitch))) len)) (setf cnt 0) (setf total-cnt 0) (setf z-1output 0.0) (setf output 0.0))) (send ks-class :answer :next '() '((setf output (aref delay-line cnt)) (setf (aref delay-line cnt) (/ (+ output z-1output) 2.0)) (setf z-1output output) (setf cnt (if (= (1- len) cnt) 0 (1+ cnt))) (setf total-cnt (1+ total-cnt)) (if (= total-cnt total-len) NIL output))) (defun ks (pitch dur) (let (obj (d (get-duration dur))) (setf obj (send ks-class :new pitch d)) (snd-fromobject *rslt* *sound-srate* obj))) (defun ks-env (pitch dur) (mult (pwe dur 0.064) (ks pitch dur))) ;(ss (seq (ks a4 1.0) (ks b4 1.0) (ks c5 3.0))) (ss (seq (ks-env a3 1.0) (ks-env b3 1.0)))
Back to Pedro Morales' Examples Page
Audacity Support Forum / Audacity and Nyquist / Nyquist Reference Manual / Nyquist Examples and Tutorials