;nyquist plug-in ;version 1 ;type process ;name "RFT-(LFO)-Ringmodulator..." ;action "Ringmodulator..." ;control m "Ringmodulator Mode" int "Add Mult Sub" 2 1 3 ;control f1 "Oscillator Frequency" real "Hertz" 1000 1 20000 ;control o2 "Waveform LFO" int "Sin Tri Saw InvSaw Square" 1 1 5 ;control f2 "Frequency LFO" real "Hertz" 5 0 10 ;control i2 "Intensity LFO" int "Percent" 50 0 100 ; a ringmodulator creates two bands: ; sound1 added to sound2 and sound1 substracted by sound2. ; You can listen to one of the bands each by filtering away the other ; but you need lots of high and lowpasses to get good results. (defun Multiplikation (sound) (cond ((= o2 1) (mult sound (fmosc (hz-to-step f1) (scale (* f1 (/ i2 100.0)) (sine (hz-to-step f2)))))) ((= o2 2) (mult sound (fmosc (hz-to-step f1) (scale (* f1 (/ i2 100.0)) (osc-tri f2))))) ((= o2 3) (mult sound (fmosc (hz-to-step f1) (scale (* f1 (/ i2 100.0)) (osc-saw f2))))) ((= o2 4) (mult sound (fmosc (hz-to-step f1) (scale (* f1 (/ i2 100.0) -1.0) (osc-saw f2))))) ((= o2 5) (mult sound (fmosc (hz-to-step f1) (scale (* f1 (/ i2 100.0) -1.0) (osc-pulse f2 0))))) )) (defun Addition (sound) (highpass8 (highpass8 (highpass8 (highpass8 (highpass8 (highpass8 (highpass8 (highpass8 (Multiplikation sound) (+ f1 20)) (+ f1 20)) (+ f1 20)) (+ f1 20)) (+ f1 20)) (+ f1 20)) (+ f1 20)) (+ f1 20))) (defun Subtraktion (sound) (lowpass8 (lowpass8 (lowpass8 (lowpass8 (lowpass8 (lowpass8 (lowpass8 (lowpass8 (Multiplikation sound) (- f1 20)) (- f1 20)) (- f1 20)) (- f1 20)) (- f1 20)) (- f1 20)) (- f1 20)) (- f1 20))) (defun normalize-mono () (setf s (scale (/ 1 (peak s NY:ALL)) s))) (defun normalize-stereo () (setq pA (peak (aref s 0) NY:ALL)) (setq pB (peak (aref s 1) NY:ALL)) (if (>= pA pB) (setq pMax pA) (setq pMax pB)) (setf s (scale (/ 1 pMax) s))) (cond ((= m 1) (if (arrayp s) (setf s (vector (Addition (aref s 0)) (Addition (aref s 1)))) (setf s (Addition s)))) ((= m 2) (if (arrayp s) (setf s (vector (Multiplikation (aref s 0)) (Multiplikation (aref s 1)))) (setf s (Multiplikation s)))) ((= m 3) (if (arrayp s) (setf s (vector (Subtraktion (aref s 0)) (Subtraktion (aref s 1)))) (setf s (Subtraktion s))))) (if (arrayp s) (normalize-stereo) (normalize-mono))