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 [: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.
;; 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)))))