Main Page       Index


obx830.lsp


 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

 (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

 (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


View the Sourcecode :



;; 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)


Main Page       Index