Thread: [Audacity-nyquist] solution for using the Nyquist 'shape' function in Audacity
A free multi-track audio editor and recorder
Brought to you by:
aosiniao
From: <edg...@we...> - 2008-02-11 11:59:46
|
Hi list, To save extensive typing I will explain the problem by using the examples from Roger's Distortion Tutorial: http://www.audacity-forum.de/download/edgar/nyquist/nyquist-doc/examples/rbd/02-distortion.htm I have modified the last line from the code in the 'Implementation' section of the 'Distortion Tutorial' for use in Audacity: ;; define the distortion sound (setf distortion (osc (hz-to-step 0.25) 2.01 *SINE-TABLE* -90.0)) ;; define the distortion function (defun distort (snd) (shape snd distortion 1.0)) ;; changed for use in Audacity: (distort s) If you apply this code via the Audacity Nyquist prompt you will get: error: maximum table size (100000) exceeded - NIL The problem in Audacity is based in the fact that the Audacity Nyquist Interface sets the 'time-stretch' value in the *warp* variable to the length of the Audacity selection, so: (osc (...) 2.01 ...) doesn't produce a sound of the desired 2.01 seconds length but instead a sound with a length of 2.01 multiplied by the length of the Audacity selection, what usually is a multiple times longer than 2.01 seconds, and then in turn causes the 'table size exceeded' error. The workaround solution is to enforce a local 'time-stretch' value of 1.0 seconds using: (stretch-abs 1.0 (osc (...) 2.01 ...)) This will produce a sound of 2.01 seconds length. So if you copy this code into the Audacity Nyquist prompt, you will get the distortion sound of a tube amplifier: ;; define the distortion sound (setf distortion (stretch-abs 1.0 (osc (hz-to-step 0.25) 2.01 *SINE-TABLE* -90.0))) ;; define the distortion function (defun distort (snd) (shape snd distortion 1.0)) ;; changed for use in Audacity: (distort s) In principle all you need to do is to transform your desired amplifier characteristics curve into a 'distortion sound' wavetable, then create a 'distortion' sound via: (stretch-abs 1.0 (osc (hz-to-step 0.25) 2.01 *distortion-table* -90.0)) and you can have any highspeed DSP fuzz-box you want. How to create the distortion wavetable will be the next thing to try. The basics of wavetables are explained in the Nyquist Manual in Section 2 under 'Waveforms': http://www.audacity-forum.de/download/edgar/nyquist/nyquist-doc/manual/part2.html#12 In principle you first create a Lisp array with a length of *sound-srate* [the Audacity track sample frequency], write your characteristics curve into it, turn the array into a sound using: (setf *distortion-table* (snd-from-array 0.0 *sound-srate* your-array)) then turn the sound into a wavetable by writing: (setf *distortion-table* (list *distortion-table* (hz-to-step 1) T)) Now you can use the wavetable to creat a distortion sound like this: ;; define the distortion sound (setf distortion (stretch-abs 1.0 (osc (hz-to-step 0.25) 2.01 *distortion-table* -90.0))) ;; define the distortion function (defun distort (snd) (shape snd distortion 1.0)) ;; changed for use in Audacity: (distort s) So far the theory, I will try to rewrite my own fuzz boxes now and tell you the results. - edgar -- The author of this email does not necessarily endorse the following advertisements, which are the sole responsibility of the advertiser: ________________________________________________________ Bis 50 MB Dateianhänge? Kein Problem! http://www.digitaledienste.web.de/freemail/club/lp/?lp=7 |