obx830.lsp Version 1.00 29 April 2005 AuthorSteven 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 Ring modulation effect after Oberheim Matrix-1000 patch 8.30
function
(obx830:mono step dur [:i][:attack][:bw][:t1][:t2][:tab) Ring modulation effect after Oberheim Matrix-1000 patch 8.30 step - Step. MIDI key number. dur - Flonum. Tones duration in seconds. :i - Flonum. Modulation index, Controls osc sweep depth, default 1.00 :attack - Flonum. Attack time, default 4.00 seconds :bw - Flonum. Filter bandwidth, default 200 Hz. :t1 - Flonum. Initial tremolo frequency, default 0.001 Hz :t2 - Flonum. Final tremolo frequency, default 30 Hz :tab - Wtab. Carrier wave table, default *saw-16* return - Sound.
wrapper
(obx830 plist dur [:arpeg][:pos][:comp][:i][:attack][:bw][:t1][:t2][:tab) Ring modulation effect after Oberheim Matrix-1000 patch 8.30 plist - List | flonum. The MIDI note(s) to play dur - Flonum. Tones duration in seconds. :arpeg - Flonum. Arpeggio interval, default 0 seconds. :pos - Flonum | sound. Pan position, 0 <= pos <= 1, default 0.5 :comp - Flonum | Symbol. Amplitude compensation. See definst.lsp :i - Flonum. Modulation index, Controls osc sweep depth, default 1.00 :attack - Flonum. Attack time, default 4.00 seconds :bw - Flonum. Filter bandwidth, default 200 Hz. :t1 - Flonum. Initial tremolo frequency, default 0.001 Hz :t2 - Flonum. Final tremolo frequency, default 30 Hz :tab - Wtab. Carrier wave table, default *saw-16* return - Sound vector
;; obx830.lsp
;; Version 1.00 29 April 2005
;; AuthorSteven 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 Ring modulation effect after Oberheim Matrix-1000 patch 8.30
;;
(require 'definst)
(require 'xmix)
(require 'xenvelope)
(require 'saw-16)
(require 'hpn)
(provide 'obx830)
(current-file "obx830")
;; Amplitude modulation effect
;; asig - Sound. Source signal.
;; f1 - Flonum. Initial LFO frequency.
;; f2 - Flonum. Final LFO frequency.
;; dur - Flonum. Duration in seconds.
;; return - Sound.
;;
(defun obx830:tremolo (asig f1 f2 dur)
(let (envsig floor eamp)
(setf floor (min f1 f2))
(setf eamp (abs (- f2 f1)))
(setf envsig (ramp dur))
(mult asig
(xmix (fmlfo (sum floor (scale eamp envsig)))
(rgate dur 1)
envsig))))
;; @doc function obx830:mono
;; (obx830:mono step dur [:i][:attack][:bw][:t1][:t2][:tab)
;; Ring modulation effect after Oberheim Matrix-1000 patch 8.30
;;
;; step - Step. MIDI key number.
;; dur - Flonum. Tones duration in seconds.
;; :i - Flonum. Modulation index, Controls osc sweep depth, default 1.00
;; :attack - Flonum. Attack time, default 4.00 seconds
;; :bw - Flonum. Filter bandwidth, default 200 Hz.
;; :t1 - Flonum. Initial tremolo frequency, default 0.001 Hz
;; :t2 - Flonum. Final tremolo frequency, default 30 Hz
;; :tab - Wtab. Carrier wave table, default *saw-16*
;; return - Sound.
;;
(defun obx830:mono (step dur &key i attack bw t1 t2 tab)
(let (hz decay hold ampenv fmenv hpenv bw)
(setf hz (step-to-hz step))
(setf i (or i 1.000))
(setf attack (or attack 4.00))
(setf decay (max 0 (- dur attack)))
(setf bw (or bw 200))
(setf t1 (or t1 0.001))
(setf t2 (or t2 30))
(setf tab (or tab *saw-16*))
(setf hold (+ attack decay))
(setf ampenv (xasd attack 0 decay))
(setf fmenv (iramp hold))
(setf hpenv (ramp hold))
(mult
(reson
(obx830:tremolo
(amosc step (fmosc step (scale (* hz i) fmenv)) tab)
t1 t2 hold)
(sum hz (scale (* 16 hz) hpenv))
bw 1)
ampenv)))
;; @doc wrapper obx830
;; (obx830 plist dur [:arpeg][:pos][:comp][:i][:attack][:bw][:t1][:t2][:tab)
;; Ring modulation effect after Oberheim Matrix-1000 patch 8.30
;;
;; plist - List | flonum. The MIDI note(s) to play
;; dur - Flonum. Tones duration in seconds.
;; :arpeg - Flonum. Arpeggio interval, default 0 seconds.
;; :pos - Flonum | sound. Pan position, 0 <= pos <= 1, default 0.5
;; :comp - Flonum | Symbol. Amplitude compensation. See definst.lsp
;; :i - Flonum. Modulation index, Controls osc sweep depth, default 1.00
;; :attack - Flonum. Attack time, default 4.00 seconds
;; :bw - Flonum. Filter bandwidth, default 200 Hz.
;; :t1 - Flonum. Initial tremolo frequency, default 0.001 Hz
;; :t2 - Flonum. Final tremolo frequency, default 30 Hz
;; :tab - Wtab. Carrier wave table, default *saw-16*
;; return - Sound vector
;;
(defwrapper obx830 #'obx830:mono)