You can subscribe to this list here.
2004 
_{Jan}

_{Feb}

_{Mar}

_{Apr}

_{May}

_{Jun}

_{Jul}

_{Aug}

_{Sep}

_{Oct}

_{Nov}
(40) 
_{Dec}
(29) 

2005 
_{Jan}
(7) 
_{Feb}
(12) 
_{Mar}
(28) 
_{Apr}
(27) 
_{May}

_{Jun}
(13) 
_{Jul}
(4) 
_{Aug}
(7) 
_{Sep}
(1) 
_{Oct}
(2) 
_{Nov}
(32) 
_{Dec}
(49) 
2006 
_{Jan}
(31) 
_{Feb}
(16) 
_{Mar}
(15) 
_{Apr}
(15) 
_{May}
(21) 
_{Jun}
(1) 
_{Jul}
(1) 
_{Aug}
(5) 
_{Sep}
(2) 
_{Oct}
(21) 
_{Nov}

_{Dec}
(6) 
2007 
_{Jan}
(21) 
_{Feb}

_{Mar}

_{Apr}
(5) 
_{May}
(1) 
_{Jun}
(3) 
_{Jul}
(10) 
_{Aug}
(38) 
_{Sep}
(21) 
_{Oct}
(38) 
_{Nov}
(23) 
_{Dec}
(3) 
2008 
_{Jan}
(72) 
_{Feb}
(45) 
_{Mar}
(46) 
_{Apr}
(5) 
_{May}
(2) 
_{Jun}
(33) 
_{Jul}

_{Aug}
(9) 
_{Sep}
(6) 
_{Oct}
(1) 
_{Nov}
(17) 
_{Dec}
(73) 
2009 
_{Jan}
(20) 
_{Feb}
(28) 
_{Mar}
(7) 
_{Apr}
(24) 
_{May}
(8) 
_{Jun}
(59) 
_{Jul}
(38) 
_{Aug}
(25) 
_{Sep}
(19) 
_{Oct}
(40) 
_{Nov}
(43) 
_{Dec}
(53) 
2010 
_{Jan}
(22) 
_{Feb}
(12) 
_{Mar}
(14) 
_{Apr}
(4) 
_{May}
(29) 
_{Jun}
(26) 
_{Jul}
(7) 
_{Aug}
(14) 
_{Sep}
(16) 
_{Oct}
(34) 
_{Nov}
(13) 
_{Dec}
(8) 
2011 
_{Jan}

_{Feb}

_{Mar}
(1) 
_{Apr}
(1) 
_{May}

_{Jun}
(5) 
_{Jul}
(10) 
_{Aug}
(2) 
_{Sep}
(3) 
_{Oct}

_{Nov}
(1) 
_{Dec}
(1) 
2012 
_{Jan}

_{Feb}
(1) 
_{Mar}

_{Apr}

_{May}

_{Jun}

_{Jul}
(4) 
_{Aug}

_{Sep}
(21) 
_{Oct}

_{Nov}

_{Dec}

2013 
_{Jan}

_{Feb}

_{Mar}
(1) 
_{Apr}

_{May}

_{Jun}

_{Jul}

_{Aug}

_{Sep}

_{Oct}
(6) 
_{Nov}

_{Dec}

2014 
_{Jan}

_{Feb}
(2) 
_{Mar}

_{Apr}

_{May}
(1) 
_{Jun}

_{Jul}
(3) 
_{Aug}

_{Sep}
(1) 
_{Oct}

_{Nov}

_{Dec}

2015 
_{Jan}
(2) 
_{Feb}

_{Mar}

_{Apr}

_{May}

_{Jun}

_{Jul}

_{Aug}

_{Sep}

_{Oct}

_{Nov}

_{Dec}

S  M  T  W  T  F  S 







1

2
(1) 
3
(2) 
4
(1) 
5

6

7

8

9
(2) 
10

11
(2) 
12

13

14

15

16
(3) 
17
(1) 
18

19

20
(1) 
21
(3) 
22
(2) 
23
(4) 
24

25
(3) 
26

27
(1) 
28
(3) 
29

30

31






From: Roger Dannenberg <rbd@cs...>  20100528 15:55:48

Hi Paul, The binomialdist function is defined in lib/distributions.lsp. If you don't load this file, then the function will not be defined. Please see the documentation. I believe the function is correctly implemented to return random numbers with the distribution described by the graph, but from your comments, I think you are assuming that binomialdist computes a different function. If there's a difference between what the documentation says and what the function does, please let me know. Roger paul beach wrote: > I tried > (binomialdist 5 .5) > from the command line but got "unbound function". The graph in the > document, (Fig 18) seems to be nonsense. I think this should be the > output. > > 0.0313 > 0.1563 > 0.3125 > 0.3125 > 0.1563 > 0.0313 > >  > Sub bn0() > p = 0.5: q = 1#  p > Cells(1, 2) = q ^ 5 > Cells(2, 2) = 5 * q ^ 4 * p > Cells(3, 2) = 10 * q ^ 3 * p ^ 2 > Cells(4, 2) = 10 * q ^ 2 * p ^ 3 > Cells(5, 1) = 0.01: Cells(5, 2) = 5 * q * p ^ 4 > Cells(6, 1) = 0.012: Cells(6, 2) = p ^ 5 > End Sub > > >> Are you refering to the probability distribution? Here's the code from >> lib/distributions.lsp: >> >> (defun bernoullidist (px1 &optional (x1 1) (x2 0)) >> (let ((u (rrandom))) >> (if (< u px1) x1 x2))) >> >> (defun binomialdist (n p) >> (let ((suc 0)) >> (dotimes (count n suc) >> (setf suc (+ suc (bernoullidist p)))))) >> >> Roger >> >>> http://mathworld.wolfram.com/BinomialDistribution.html >>> >>> >>  >> >> _______________________________________________ >> Audacitynyquist mailing list >> Audacitynyquist@... >> https://lists.sourceforge.net/lists/listinfo/audacitynyquist >> 
From: Steve the Fiddle <stevethefiddle@gm...>  20100528 10:38:44

;nyquist plugin ;version 3 ;type process ;categories "http://lv2plug.in/ns/lv2core/#DynamicsPlugin"; ;name "Text Envelope 0.83" ;action "Applying Envelope..." ;info "Text Input Envelope by Steve Daulton. Released under GPL v2.\nhttp://audacity.easyspacepro.com\n\nIntermediate Control Points have time values from 0% to +/100%, or as the\nabsolute time between the start and end of the selection.\nPositive values for distance from the start, negative values for distance from the end.\n\nWhen Amplification Units are dB, silence is achieved by entering 'inf' (without quotes)\nor use a large negative value. Other than 'inf', all entered text must be numerical.\n\nIntermediate points must be entered in pairs separated by a space or comma.\nEach pair of values must be separated from other pairs by spaces or commas.\nSee help file for examples." ;control extra "Show Help Menu" choice "No,Quick Help,Examples,More Tips" 0 ;control tunits "Time Units" choice "milliseconds,seconds,minutes,%" 1 ;control ampunits "Amplification Units" choice "dB,%" 0 ;control Linit "Initial Amplification" string "" "0" ;control Lfin "Final Amplification" string "" "0" ;control text "Intermediate Control Points as pairs of\ntime and amplification e.g. '1,0 2,2.5'" string "" ;; version 0.83 beta ;; HELP FILES (setq help (format nil "HELP (overview):\n 'Initial Amplification' = how much to amplify the start of the selection. 'Final Amplification' = how much to amplify the end of the selection (relative to the original sound level).\n When Amplification Units are dB, silence is achieved by entering 'inf' (without quotes) or a large negative value. Other than 'inf', all values must be numbers.\n Intermediate points must be a 'time' 'amplification' pair, separated by spaces or commas. Each pair of values must be separated from other pairs by one or more spaces or commas.\n Time values for intermediate control points: When time units are set to '%' the Intermediate Control Points have time values in the range 0% to +/100%. Positive values = time after the start of the selection Negative values = time before the end of the selection. Decimals are allowed but must use a dot as the decimal separator.\n All fades between control points are linear.\n Remember to deselect Help before using the effect.")) (setq examples (format nil "EXAMPLES: Fade out from full volume to silence:\n For % settings: Initial Amplification = 100 Final Amplification = 0\n For dB settings: Initial Amplification = 0 Final Amplification = inf\n Fade from silence at 0 seconds, to full volume after 2 seconds, then back to silence at the end:\n For % Amplification settings / Time settings in seconds: Initial Amplification = 0 Final Amplification = 0 Intermediate Control Points = 2 100\n For dB Amplification settings / Time settings in seconds: Initial Amplification = inf Final Amplification = inf Intermediate Control Points = 2 , 0\n Remember to deselect Help before using the effect")) (setq tips (format nil "TIPS:\n Commas or spaces may be used to separate values. Intermediate Conrol Point times may be written relative to the beginning or end of the track selection. A 10 second track with 6dB points at 2 and 8 seconds can be written as either: 2,6 8,6 or as 2 6 , 2 6\n Intermediate Control Points are automatically sorted into the correct time order. If you wish to add an additional control point 'time/amplification' pair to the current list, you can just add it to the end of the list. For example: 1,2 3,12 8,12 9,2 5,15 gives exactly the same result as 1,2 3,12 5,15 8,12 9,2\n Remember to deselect Help before using the effect")) (case extra (1 (print help)) (2 (print examples)) (3 (print tips)) (T ;; Initialise variables (setq errmsg "") (if (equal Linit "")(setf Linit "0")) (if (equal Lfin "")(setq Lfin "0")) ;;FUNCTIONS ; function to convert a string into a list (defun stringtolist (string) (read (makestringinputstream (format nil "(~a)" string)))) (defun checktimenumbers (var) (if(not(numberp var)) (setq errmsg (strcat errmsg (format nil "'~A' is not valid.~%Time values must be numbers~%" var))))) (defun substitute (new old text) (do ((i 0 (setq i (1+ i)))(newtext "")(new (string new))) ((= i (length text)) newtext) (setf newtext (if (char= (char text i) old) (strcat newtext new) (strcat newtext (string (char text i))))))) ; Time conversion functions (defun mstolin (var) (if (< var 0) (+ 1.0(/ var(getduration 1000.0))) (/ var(getduration 1000.0)))) (defun stolin (var) (if (< var 0) (+ 1.0(/ var (getduration 1))) (/ var (getduration 1)))) (defun mtolin (var) (if (< var 0) (+ 1.0(/ var (getduration (/ 60.0)))) (/ var (getduration (/ 60.0))))) (defun pctolin (var) (if (< var 0) (+ 1.0(/ var 100.0)) (/ var 100.0))) ;;;;;;;;;;; START OF MAIN FUNCTION ;;;;;;;;;;;;; ;; Main function to convert and check string list (defun convert (inlist tu ampu) ;print input data (format T "inlist: ~a~%time: ~a~%amplify: ~a~%" inlist tu ampu) ; Split time and level (setf newlists (let (time amp) (do ((i (1 (length inlist)))) ((<= i 0)(vector time amp)) (setf amp (cons (nth i inlist) amp)) (setf time (cons (nth (1 i) inlist) time)) (setq i ( i 2))))) (setf times (aref newlists 0)) (setf amps (aref newlists 1)) ;test (format T "times: ~a~%" times) (format T "amps: ~a~%" amps) ; Amplify conversion function (convert amplify values to linear) (defun makelinear (var) ; var=input to check, unit is dB or % ; Nested function to handle 'inf (defun convertsymbol (val) (if (not(eql val 'inf)) ; check for invalid value (setq errmsg (strcat errmsg (format nil "'~A' is not a valid Amplification value~%" val)))) 0) ; returns 0 as linear value ; End of nested function (setq var (if (= ampu 0) ; dB (case (typeof var) (symbol (convertsymbol var)) ; if symbol, sets to 0 ((or fixnum flonum) (print var)(dbtolinear var)) ; if number, convert to linear (T (setq errmsg (strcat errmsg (format nil "'~a' is not a valid Amplification value~%" val))) 0)) ; Returns dB value or 0 and error message ; If not dB, then convert % (case (typeof var) ((or fixnum flonum) (if (< var 0)(setq errmsg (strcat errmsg (format nil "'~A' is not valid.~%Amplification must be greater than 0% (silence).~%" var)))) ; check for negative % value (/ var 100.0)) ; if number, convert to linear (T (setq errmsg (strcat errmsg (format nil "~A is not a valid 'Amplification %' value~%" var))) 0)))) (abs var)) ; return var ; End of makelinear function ; Convert times to linear (mapcar 'checktimenumbers times) ; test that all numbers (if (= (length errmsg) 0) (setf times (case tu (0 (mapcar 'mstolin times)) ; milliseconds (1 (mapcar 'stolin times)) ; seconds (2 (mapcar 'mtolin times)) ; minutes (3 (mapcar 'pctolin times))))) ; percent ; Convert amplification to linear (setf amps (mapcar 'makelinear amps)) (format T "times after conversion: ~a~%" times) (format T "amps after conversion: ~a~%" amps) ;; sort lists (setq n (1 (length times))) ; initialise counter for length of list (setq loopnum 0) ; initialise loop counter (setq inputmsg (format nil "List of times before sort: ~a~%List of amplifications before sort: ~a~%" times amps)) ;; perform a selection sort (dotimes (i n) (do ((i loopnum (setq i (1+ i)))) ; initialise couner i to the loop number and incriment on each pass ((>= i n) amps times) ; repeat do loop till i=n (if (< (nth(1+ i)times)(nth loopnum times)) ; if nth+1 value is less than the nthloopnum (progn (setq temp (nth loopnum times)) ; set temp to nth (setf (nth loopnum times)(nth(1+ i)times)) ; set nth to value of nth+1 (setf (nth(1+ i)times) temp) ; set nth+1 to temp ;same for amps (setq temp (nth loopnum amps)) (setf (nth loopnum amps)(nth(1+ i)amps)) (setf (nth(1+ i)amps) temp) ))) ; end of inner loop (setq loopnum (1+ loopnum))) ; end of sort routine (setq outputmsg (format nil "List of sorted times: ~a~%List of sorted amplifications: ~a~%" times amps)) (format T "~a~%~a~%" inputmsg outputmsg) ; Combine back into one list (setf newlist ()) ; initialise newlist (setf newlist (do ((i (1 (length times)))) ((< i 0) newlist) (setf newlist (cons (nth i amps) newlist)) ; add amp (setf newlist (cons (nth i times) newlist)) ; add time (setq i (1 i))))) ;; End of function ;;;;;;;;;;; END OF MAIN FUNCTION ;;;;;;;;;;;;; ;;  END OF FUNCTIONS  ;; Initialise input values (setf initial (car (stringtolist Linit))) ; initial amplification (setf final (car (stringtolist Lfin))) ; final amplification (setf text (substitute #\space #\, text)) ; substitute spaces for commas (setf cplist (stringtolist text)) ; intermediate values ;;check for pairs (if (oddp (length cplist))(setq errmsg (strcat errmsg (format nil "Intermediate Control Points:~%~a~%Text must be pairs of values (time amplify) separated by spaces.~%" cplist))) (progn ; get end time (setf endtime (case tunits (0 (* (getduration 1) 1000.0)) ; milliseconds (1 (getduration 1)) ; seconds (2 (/ (getduration 1) 60.0)) ; minutes (3 100))) ; percent ; Create list (setf cplist (append cplist(list endtime final))) ;adds list from text input to final point (setf cplist (append (list 0 initial) cplist)) ; adds initial point to list (print (convert cplist tunits ampunits)) ; Convert value range to linear (if (= (length errmsg) 0) ;; Convert string list values (setf cplist (convert cplist tunits ampunits))) )) ; end of check for pairs ; test (format T "Error Messages: ~a~%Output list: ~a~%~%" errmsg cplist) (if (> (length errmsg) 0) (format nil "The following errors occured: ~%~a~%" errmsg) (controlsrateabs *soundsrate* (mult s (pwllist cplist)))) )) ; End of 'help' case 
From: paul beach <sniffyraven@fa...>  20100528 09:38:05

I tried (binomialdist 5 .5) from the command line but got "unbound function". The graph in the document, (Fig 18) seems to be nonsense. I think this should be the output. 0.0313 0.1563 0.3125 0.3125 0.1563 0.0313  Sub bn0() p = 0.5: q = 1#  p Cells(1, 2) = q ^ 5 Cells(2, 2) = 5 * q ^ 4 * p Cells(3, 2) = 10 * q ^ 3 * p ^ 2 Cells(4, 2) = 10 * q ^ 2 * p ^ 3 Cells(5, 1) = 0.01: Cells(5, 2) = 5 * q * p ^ 4 Cells(6, 1) = 0.012: Cells(6, 2) = p ^ 5 End Sub > Are you refering to the probability distribution? Here's the code from > lib/distributions.lsp: > > (defun bernoullidist (px1 &optional (x1 1) (x2 0)) > (let ((u (rrandom))) > (if (< u px1) x1 x2))) > > (defun binomialdist (n p) > (let ((suc 0)) > (dotimes (count n suc) > (setf suc (+ suc (bernoullidist p)))))) > > Roger > > > > http://mathworld.wolfram.com/BinomialDistribution.html > > > >  > > _______________________________________________ > Audacitynyquist mailing list > Audacitynyquist@... > https://lists.sourceforge.net/lists/listinfo/audacitynyquist  paul beach sniffyraven@... 
From: edgar <edgarrft@we...>  20100527 13:57:24

Hi all on the Audacity Nyquist list, I apologize for the same rant as every year, but I have tried to write a notso ranted version under: http://forum.audacityteam.org/viewtopic.php?f=39&t=32118&p=87835#p87835 Thanks,  edgar 
From: edgar <edgarrft@we...>  20100525 15:21:47

Hi all on the Audacity Nyquist List, Not a really serious issue, but Steve and me have started another round of a rather enless topic, this time in the Audacity Forum: The Nyquist Transformation Environment http://forum.audacityteam.org/viewtopic.php?f=39&t=31414 It's mainly a summary what I have found out since the last discussion with Roger a few month ago here on this list, and second I would still like to find some general strategies how to handle timeshifts in Audacity 'process' plugins. If you're interested you can answer either here on the list or create your own account for free in the Audacity forum. Thanks,  edgar 
From: Roger Dannenberg <rbd@cs...>  20100525 03:37:09

paul beach wrote: > Xlisp has a function and, also a graph for Binomial Distribution. Since > the graph is not symetrical; I assume, a continuous formula is being > used, or Sterling estimate. > Are you refering to the probability distribution? Here's the code from lib/distributions.lsp: (defun bernoullidist (px1 &optional (x1 1) (x2 0)) (let ((u (rrandom))) (if (< u px1) x1 x2))) (defun binomialdist (n p) (let ((suc 0)) (dotimes (count n suc) (setf suc (+ suc (bernoullidist p)))))) Roger > Since 70! = 70x69x68... is about 100 digits, you can see that using the > binomial coeffiecient might be rather awkward. > > The binomial distribution should be discreet integers. This could be > implemented, "honestly" with the use of Pascal's triangle, which Edgar > has posted. > > http://mathworld.wolfram.com/BinomialDistribution.html > 
From: paul beach <sniffyraven@fa...>  20100525 02:15:47

Xlisp has a function and, also a graph for Binomial Distribution. Since the graph is not symetrical; I assume, a continuous formula is being used, or Sterling estimate. Since 70! = 70x69x68... is about 100 digits, you can see that using the binomial coeffiecient might be rather awkward. The binomial distribution should be discreet integers. This could be implemented, "honestly" with the use of Pascal's triangle, which Edgar has posted. http://mathworld.wolfram.com/BinomialDistribution.html  paul beach sniffyraven@... 
From: Roger Dannenberg <rbd@cs...>  20100523 16:02:54

edgar, That's an excellent suggestion. Integers (FIXNUMS) in Nyquist are implemented with C's long int type and will generally wrap on overflow (although technically, the behavior is undefined in C), but floats (FLONUMS) are implemented with C's double, which will do exact integer math up to 53 bits + sign bit. Roger edgar wrote: > Hi Paul, > > A Common Lisp version of Pascal's triangle goes like this: > >  start of code  > (defun pascal (n) > (genrow n '(1))) > > (defun genrow (n l) > (when (< 0 n) > (print l) > (genrow (1 n) (cons 1 (newrow l))))) > > (defun newrow (l) > (if (> 2 (length l)) > '(1) > (cons (+ (car l) (cadr l)) (newrow (cdr l))))) >  end of code  > > then just call: > > > (pascal n) > > where 'n' ist the number of rows you want to compute. > > Nyquist has no BIGNUMS [integers bigger than a CPU register], > so if it crashes with Nyquist, try to rewrite it using FLONUMS. > >  edgar > > > >  > > _______________________________________________ > Audacitynyquist mailing list > Audacitynyquist@... > https://lists.sourceforge.net/lists/listinfo/audacitynyquist > > 
From: edgar <edgarrft@we...>  20100523 15:06:29

Hi Paul, A Common Lisp version of Pascal's triangle goes like this:  start of code  (defun pascal (n) (genrow n '(1))) (defun genrow (n l) (when (< 0 n) (print l) (genrow (1 n) (cons 1 (newrow l))))) (defun newrow (l) (if (> 2 (length l)) '(1) (cons (+ (car l) (cadr l)) (newrow (cdr l)))))  end of code  then just call: > (pascal n) where 'n' ist the number of rows you want to compute. Nyquist has no BIGNUMS [integers bigger than a CPU register], so if it crashes with Nyquist, try to rewrite it using FLONUMS.  edgar 
From: paul beach <sniffyraven@fa...>  20100523 03:47:06

Whoops, meant to send last message to [audacitynyquist] list.  paul beach sniffyraven@... 
From: paul beach <sniffyraven@fa...>  20100523 03:44:42

Is there a function/subroutine for Binomial coefficient. [m/k] = m!/k!(mk)! This is suppossed to be an integer; but m!, might get too big for integer arithmetic.  paul beach sniffyraven@... 
From: Gale Andrews <gale@au...>  20100522 13:26:45

 From edgar <edgarrft@...>  Sat, 22 May 2010 13:34:28 +0200  Subject: [Audacitynyquist] Text entry envelope plugin > Gale Andrews wrote: > > > I've offered to check the help screens for Text Envelope on Ubuntu > > 800x600 (and Windows). At that resolution, the help screens seem > > to require no more than 60 characters per line (including spaces), > > and no more than 25 lines. > > > When I formatted Vocal Remover that way it was OK on Fedora > > apparently, but if Debian uses especially large fonts it would be > > good to check there as well. > > Please excuse, but what I do not understand: > > Is there no wxwidgets function to determine the number of > characters per line? Or how is this window specified in the > Audacity C/C++ code? > > To write a formatting routine it needs *exact* specifications, > not vague guesses. Everything else makes not much sense. Edgar, I've commented in the Forum thread: http://forum.audacityteam.org/viewtopic.php?f=39&t=30929&p=86373#p86373 Gale 
From: edgar <edgarrft@we...>  20100522 11:35:22

Gale Andrews wrote: > I've offered to check the help screens for Text Envelope on Ubuntu > 800x600 (and Windows). At that resolution, the help screens seem > to require no more than 60 characters per line (including spaces), > and no more than 25 lines. > When I formatted Vocal Remover that way it was OK on Fedora > apparently, but if Debian uses especially large fonts it would be > good to check there as well. Please excuse, but what I do not understand: Is there no wxwidgets function to determine the number of characters per line? Or how is this window specified in the Audacity C/C++ code? To write a formatting routine it needs *exact* specifications, not vague guesses. Everything else makes not much sense.  edgar 
From: Gale Andrews <gale@au...>  20100521 21:57:30

 From edgar <edgarrft@...>  Fri, 21 May 2010 22:54:46 +0200  Subject: [Audacitynyquist] Text entry envelope plugin >> Volunteers to assist with this would be much appreciated. > > I only wanted to say: > > Please do not think that I'm not interested, but I'm just > switching back to Debian Linux, it will still take a few > days until I will have Audacity running again... > >  edgar Hi Edgar, I've offered to check the help screens for Text Envelope on Ubuntu 800x600 (and Windows). At that resolution, the help screens seem to require no more than 60 characters per line (including spaces), and no more than 25 lines. When I formatted Vocal Remover that way it was OK on Fedora apparently, but if Debian uses especially large fonts it would be good to check there as well. When you've got Debian reinstalled, it may be an idea to go to the Forum topic: http://forum.audacityteam.org/viewtopic.php?f=39&t=30929 and check the latest position/download the latest version of the plugin. Thanks Gale 
From: edgar <edgarrft@we...>  20100521 20:55:40

>> Volunteers to assist with this would be much appreciated. I only wanted to say: Please do not think that I'm not interested, but I'm just switching back to Debian Linux, it will still take a few days until I will have Audacity running again...  edgar 
From: Steve the Fiddle <stevethefiddle@gm...>  20100521 15:26:00

Here is a Nyquist plugin that allows envelopes to be created via text entry. This plugin is basically complete, but requires a bit of tidying of the code. This is a version 3 plugin and requires Audacity 1.3.x New features in version 0.8 beta: Intermediate Control Points do not need to be entered in time order. As long as they are entered as valid pairs of values they will be sorted into the correct order automatically. Help screens included (see text file in attached zip) To Do: May need some minor changes to the formatting of Help screens for compatibility with 800 x 600 screens on all platforms. Volunteers to assist with this would be much appreciated. Thorough testing on all platforms, particularly for sensible handling of invalid data input. Comments, feedback, bug reports and suggestions welcome. Forum thread: http://forum.audacityteam.org/viewtopic.php?f=39&t=30929 
From: paul beach <sniffyraven@fa...>  20100520 21:48:53

Help wanted: There should be a subroutine for (bernsteinlist p0 .... pn, dp) ; dp means number of data points. http://mathworld.wolfram.com/BernsteinPolynomial.html which would be used for (pwlvlist bernstein) This is trivial for 4 points, which was mentioned by Steve. There is a little problem with that version. The Bezier curve is a parametric equation. x = B(t,x) y = B(t,y) Just use Berntstein(t,x): Otherwise, the piecewise function could have 3 or 4 values for one value of time. WHY Roger explains: "If the first derivative is continuous, the signal falls off at 18dB per octave, and each additional continuous derivative gives another 6dB of rolloff. Since we are sensitive to higher frequencies, it's better not to introduce discontinuities." This is contrary to the envelope tools in Nyquist, which introduce triangular notches. Sub bernstein() bt = 0# t = 0 p1 = 1#: p2 = 3#: p3 = 0#: p4 = 1# For i = 1 To 11 bt = (1  t) ^ 3 * p1 + 3 * (1  t) ^ 2 * t * p2 + 3 * (1  t) * t ^ 2 * p3 + t ^ 3 * p4 Cells(i, 1) = t Cells(i, 2) = bt t = t + 0.1 Next i End Sub  paul beach sniffyraven@... 
From: Roger Dannenberg <rbd@cs...>  20100517 14:20:06

Continuity is not just a curiosity. The magnitude spectrum of an impulse is a constant. The spectrum of a step function (the integral of an impulse) falls off at 6dB per octave in the limit. A second integral eliminates the discontinuity and falls off at 12dB per octave in the limit. In general, the spectrum of a continuous signal falls off at 12dB per octave (or greater). If the first derivative is continuous, the signal falls off at 18dB per octave, and each additional continuous derivative gives another 6dB of rolloff. Since we are sensitive to higher frequencies, it's better not to introduce discontinuities. Linear cross fades and linear breakpoint envelopes result in continuous signals with discontinuities in the first derivative. The artifacts you get and what you can hear depend on other factors, so linear breakpoint functions are not necessarily bad (consider a good linear approximation to a smooth "S" curve), but it's easy to see that smoother envelopes are going to reduce artifacts at higher frequencies. Roger 
From: Stevethefiddle <stevethefiddle@gm...>  20100516 17:47:07

Forgot to say  you will also need to run as "Debug" to see the text output.  View this message in context: http://audacity.238276.n2.nabble.com/Versatilefadeamplifyeffecttp4993235p5062242.html Sent from the audacitynyquist mailing list archive at Nabble.com. 
From: Stevethefiddle <stevethefiddle@gm...>  20100516 17:44:49

The spectrum should be virtually unaffected by the plugin unless you are using very large changes in amplitude over very short time periods. There are practical considerations with connecting multiple Bezier curves in that it requires a lot more controls in the UI, so I have restricted this effect to a single 2 point curve. I've not really investigated multiple points much further other than to establish that it makes the GUI more complex and confusing. If you just require a list of values to be printed you should probably comment out the line: (controlsrateabs *soundsrate* (pwlvlist (cdr (reverse coords)))) You also need to add a line at the bottom that will call the function, for example: (bezier P0x P0y P1x P1y P2x P2y P3x P3y)  View this message in context: http://audacity.238276.n2.nabble.com/Versatilefadeamplifyeffecttp4993235p5062238.html Sent from the audacitynyquist mailing list archive at Nabble.com. 
From: paul beach <sniffyraven@fa...>  20100516 16:06:18

If Bezier curves are connected, that is, P0(x,y) of the second is connected to P3(x,y) of the first; then there are conditions for it to have a first derivative, C1. http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/Bezier/bezierder.html How would that affect the spectrum? From a graphics point of view, it is an interesting curiosity. Is it more than a curiosity with respect to sound files? The plugin seems to do the calculation; but it does not want to print the list, instead, "Does not return audio". ;nyquist plugin ;version 1 ;type generate ;name "Bezier_0 ..." ;action "Bezier_0 ..." ;control P0x "Start" real "Fixed" 0.0 0 100 ;control P0y "Start" real "Fixed" 0.0 0 100 ;control P1x "Cont" real "Var" 4.0 0 100 ;control P1y "Cont" real "Var" 4.0 0 100 ;control P2x "Cont" real "Var" 5.0 0 100 ;control P2y "Cont" real "Var" 5.0 0 100 ;control P3x "End" real "Fixed" 0.0 0 100 ;control P3y "End" real "Fixed" 0.0 0 100 ;; Function BEZIER ;Returns a bezier curve with relative length 1.0 ;Variables used: P0x,P0y,P1x,P1y,P2x,P2y,P3x,P3y ;all values should be positive. ;Equation for Bezier curve: B(t)=((1t)^3)*P0 + 3*((1t)^2)*t*P1 + 3*((1t)t^2)*P2 + (t^3)*P3 ;End points of curve are P0 and P3 ;Handles are P1 and P2 ;Returns sound from (pwllist ....) (defun Bezier (P0x P0y P1x P1y P2x P2y P3x P3y) (let ((coords ())) (dotimes (i 51) (setq var (/ i 50.0)) (setq f0x (* (power ( 1.0 var) 3) p0x)) (setq f0y (* (power ( 1.0 var) 3) p0y)) (setq f1x (* 3.0 (power ( 1.0 var) 2) var p1x)) (setq f1y (* 3.0 (power ( 1.0 var) 2) var p1y)) (setq f2x (* 3.0 ( 1.0 var) var var p2x)) (setq f2y (* 3.0 ( 1.0 var) var var p2y)) (setq f3x (* (power var 3) p3x)) (setq f3y (* (power var 3) p3y)) (setf coords (cons (+ f0x f1x f2x f3x) coords)) (setf coords (cons (+ f0y f1y f2y f3y) coords))) (controlsrateabs *soundsrate* (pwlvlist (cdr (reverse coords)))) (print (cdr (reverse coords))) ))  paul beach sniffyraven@... 
From: Stevethefiddle <stevethefiddle@gm...>  20100511 22:44:36

Paul Beach23 [via Audacity] wrote: > The Nyquist Manual lists these constant definitions. If a 3dB jump is > spread over three or four notes, that should be just fine. > > lppp = 12.0 (dB) > lpp = 9.0 > lp = 6.0 > lmp = 3.0 > lmf = 3.0 > lf = 6.0 > lff = 9.0 > lfff = 12.0 > > FadePlus is a wave editor. Could this utility act on a piece wise linear > (pwl ) function; which in turn, is used to control other things, such as > frequency modulation. Example: make a ramp warble upward, > (fmosc midi_number (warbleramp)). A "tight turn" might be like a > guitar snap or violin slur. > > > As a specific question regarding this effect, I would be interested to > > know > > if anyone has a preference for the start and end amplification to be > as a > > % > > or as +/ dB. > > > dB is familiar to the ears; however % is easier to see. Try viewing the > waveform as dB. It is not very helpful. >  > paul beach > [hidden email] </user/SendEmail.jtp?type=node&node=5034409&i=0> > > >  > Thanks for the feedback Paul. The "Bezier" function produces a "control signal" that is in the range 0 to +1.0 It is formed using the function (pwlvlist ...) with a list of values that are derived from the equation for a Bezier curve: B(t)=((1t)^3)*P0 + 3*((1t)^2)*t*P1 + 3*((1t)t^2)*P2 + (t^3)*P3 You could use that control signal for just about anything. In this application it is calculated at the sound sample rate so as to avoid producing glitches at the end (if the end amplitude is nonzero). For other applications it would probably be sufficient, and more efficient to calculate it at the control rate. This can be done by simply omiting (controlsrateabs *soundsrate* from the end of the Bezier function. Here is the Bezier function in full: ;; Function BEZIER ;Returns a bezier curve with relative length 1.0 ;Variables used: P0x,P0y,P1x,P1y,P2x,P2y,P3x,P3y ;all values should be positive. ;Equation for Bezier curve: B(t)=((1t)^3)*P0 + 3*((1t)^2)*t*P1 + 3*((1t)t^2)*P2 + (t^3)*P3 ;End points of curve are P0 and P3 ;Handles are P1 and P2 ;Returns sound from (pwllist ....) (defun Bezier (P0x P0y P1x P1y P2x P2y P3x P3y) (let ((coords ())) (dotimes (i 51) (setq var (/ i 50.0)) (setq f0x (* (power ( 1.0 var) 3) p0x)) (setq f0y (* (power ( 1.0 var) 3) p0y)) (setq f1x (* 3.0 (power ( 1.0 var) 2) var p1x)) (setq f1y (* 3.0 (power ( 1.0 var) 2) var p1y)) (setq f2x (* 3.0 ( 1.0 var) var var p2x)) (setq f2y (* 3.0 ( 1.0 var) var var p2y)) (setq f3x (* (power var 3) p3x)) (setq f3y (* (power var 3) p3y)) (setf coords (cons (+ f0x f1x f2x f3x) coords)) (setf coords (cons (+ f0y f1y f2y f3y) coords))) (controlsrateabs *soundsrate* (pwlvlist (cdr (reverse coords)))) ;(print (cdr (reverse coords))) )) Steve  View this message in context: http://audacity.238276.n2.nabble.com/Versatilefadeamplifyeffecttp4993235p5038639.html Sent from the audacitynyquist mailing list archive at Nabble.com. 
From: paul beach <sniffyraven@fa...>  20100511 05:03:27

The Nyquist Manual lists these constant definitions. If a 3dB jump is spread over three or four notes, that should be just fine. lppp = 12.0 (dB) lpp = 9.0 lp = 6.0 lmp = 3.0 lmf = 3.0 lf = 6.0 lff = 9.0 lfff = 12.0 FadePlus is a wave editor. Could this utility act on a piece wise linear (pwl ) function; which in turn, is used to control other things, such as frequency modulation. Example: make a ramp warble upward, (fmosc midi_number (warbleramp)). A "tight turn" might be like a guitar snap or violin slur. > As a specific question regarding this effect, I would be interested to > know > if anyone has a preference for the start and end amplification to be as a > % > or as +/ dB. > dB is familiar to the ears; however % is easier to see. Try viewing the waveform as dB. It is not very helpful.  paul beach sniffyraven@... 
From: Stevethefiddle <stevethefiddle@gm...>  20100509 22:10:40

I agree that only having a few choices of amplitude (pp, p, mp, mf ...) is rather limiting, but this effect allows start and end amplitude settings with precision of at least 4 decimal places. The "handles" define the shape of the fade. Although there are only 2 handles to each fade, these define a series of 50 "control points" that produce a smooth transition from one level to another level. Depending on the values for these handles, the shape of the transition can be adjusted to produce a very wide range of fade types. The number of control points that are generated could be increased to thousands, but in practice increasing the number above about a dozen has negligible affect on the sound as the volume level from one control point to the next is not a jump, but a linear extrapolation. 50 points is a generous number of control points that is likely to exceed the most exacting requirements. The settings are analogous to the speed at which you move a fader on a mixing console. For example: you could start fading out quite rapidly then gradually slow down as you approach the target volume and produce a logarithmic decay type of fade, or you could start slowly, then speed up, then slow down again, to produce a smooth transition from one level to another, or you could move the fader at a constant speed to create a linear fade. For simplicity, a number of useful "preset" fade types are available, but if none of these are adequate the user can customise the fade shape. For more complex envelope shaping, the track can be processed in sections, for example, a smooth fade from 100% to 50%, followed by a linear fade from 50% to 73.6217%, followed by an exponential fade from 73.6217% to silence. As a specific question regarding this effect, I would be interested to know if anyone has a preference for the start and end amplification to be as a % or as +/ dB.  View this message in context: http://audacity.238276.n2.nabble.com/Versatilefadeamplifyeffecttp4993235p5028017.html Sent from the audacitynyquist mailing list archive at Nabble.com. 
From: Steve the Fiddle <stevethefiddle@gm...>  20100509 21:40:39

Noise Gate plugin for Audacity 1.3 Features: * Gated audio can be reduced in the range 0 to 96 dB. * Attack/Decay variable from 10 to 1000ms. (up to 10 seconds with text input) * Stereo tracks may be processed individually or as linked stereo. * Includes utility to show peak level of audio, ignoring DC Offset. * Optional frequency limited gating (for hiss removal). * Includes optional HP filter. * Includes inline and plain text Help files. Available from the Audacity forum: http://forum.audacityteam.org/viewtopic.php?f=20&t=29867&p=84824#p84824 Steve 