Main Page       Index


rdrum.lsp


 rdrum.lsp
 Version 1.00  31 October 2004
 Author   Steven Jones

 Contact jones57@swbell.net include the word "nyquist" in subject line

 The contents of this file are released under the terms of the GNU General
 Public License. See the file LICENSE.txt

 A Risset drum


function

rdrum

 (rdrum [:frq][:dur][:bw][:cf][:noise][:inharm][:fund][:r])
 A Risset Drum

 :frq    - flonum.  Fundamental frequency in Hz, default 500
 :dur    - flonum.  Duration in seconds, default 0.25
 :bw     - flonum.  Noise band width in Hz, default 400
 :cf     - flonum.  Noise center frequency in Hz, default 500
 :noise  - flonum.  Noise amplitude, default 0.5
 :inharm - flonum.  Inharmonic component amplitude, default 0.17
 :fund   - flonum.  Fundamental component amplitude, default 0.40
 :r      - flonum.  Relative frequency of Inharmonic component
           to the fundamental, default 0.1

 return  - sound.


View the Sourcecode :



;; rdrum.lsp
;; Version 1.00  31 October 2004
;; Author   Steven Jones
;;
;; Contact jones57@swbell.net include the word "nyquist" in subject line
;;
;; The contents of this file are released under the terms of the GNU General
;; Public License. See the file LICENSE.txt
;;
;; A Risset drum
;; 

(require 'wtab)
(require 'pink)
(provide 'rdrum)
(current-file "rdrum")


(setq rdrum:*tab* (wtab:make '((10 1.0)(16 1.5)(22 2.0)(23 1.5))))


;; @doc function rdrum 
;; (rdrum [:frq][:dur][:bw][:cf][:noise][:inharm][:fund][:r])
;; A Risset Drum
;;
;; :frq    - flonum.  Fundamental frequency in Hz, default 500
;; :dur    - flonum.  Duration in seconds, default 0.25
;; :bw     - flonum.  Noise band width in Hz, default 400
;; :cf     - flonum.  Noise center frequency in Hz, default 500
;; :noise  - flonum.  Noise amplitude, default 0.5
;; :inharm - flonum.  Inharmonic component amplitude, default 0.17
;; :fund   - flonum.  Fundamental component amplitude, default 0.40
;; :r      - flonum.  Relative frequency of Inharmonic component
;;           to the fundamental, default 0.1
;;
;; return  - sound.
;;

(defun rdrum (&key (frq 500)(dur 0.25)(bw 400)(cf 500)(noise 0.5)
		   (inharm 0.17)(fund 0.40)(r 0.1))
  (let* ((dur2 (* dur 0.50))
	 (p-fund (hz-to-step frq))
	 (p-inharm (hz-to-step (* frq r))))
    (sim (mult
	  (sim (scale noise (mult (osc (hz-to-step cf) dur2)(pink dur2 bw)))
	        (scale inharm (osc p-inharm dur2 rdrum:*tab*)))
	   (percussion dur2))
	 (mult (scale fund (osc p-fund dur))(percussion dur)))))


;; @function rdrum2
;; (rdrum2 [:frq][:dur][:bw][:cf][:noise][:inharm][:fund][:r][:nmod][:fmod][:inmod])
;; A Risset Drum
;; Same as rdrum function but adds ability to individually modulate the
;; different components of the sound.
;;
;; :frq    - flonum.  Fundamental frequency in Hz, default 500
;; :dur    - flonum.  Duration in seconds, default 0.25
;; :bw     - flonum.  Noise band width in Hz, default 400
;; :cf     - flonum.  Noise center frequency in Hz, default 500
;; :noise  - flonum.  Noise amplitude, default 0.5
;; :inharm - flonum.  Inharmonic component amplitude, default 0.17
;; :fund   - flonum.  Fundamental component amplitude, default 0.40
;; :r      - flonum.  Relative frequency of Inharmonic component
;;           to the fundamental, default 0.1
;; :nmod   - flonum. Noise (filter) modulation 
;; :fmod   - sound. Fundamental modulation
;; :inharm - sound. Harmonics modulation
;;
;; return  - sound.
;;

(defun rdrum2 (&key (frq 500)(dur 0.25)(bw 400)(cf 500)(noise 0.5)
		    (inharm 0.17)(fund 0.40)(r 0.1)
		    nmod fmod inmod)
  (let* ((dur2 (* dur 0.50))
	 (p-fund (hz-to-step frq))
	 (p-inharm (hz-to-step (* frq r)))
	 (nmod (or nmod (s-rest dur)))
	 (nmod (or nmod (s-rest dur)))
	 (fmod (or fmod (s-rest dur)))
	 (inmod (or inmod (s-rest dur))))
    (sim (mult
	  (sim (scale noise (mult (fmosc (hz-to-step cf)(reson (sim cf nmod)(noise dur2) bw 1))))
	       (scale inharm (fmosc p-inharm inmod rdrum:*tab*)))
	  (percussion dur2))
	 (mult (scale fund (fmosc p-fund fmod *sine-table*))(percussion dur)))))


Main Page       Index