Paul Beach-2-3 [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  (warble-ramp)). 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]

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 (pwlv-list ...) with a list of values that are
derived from the equation for a Bezier curve:
B(t)=((1-t)^3)*P0 + 3*((1-t)^2)*t*P1 + 3*((1-t)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 non-zero).
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
(control-srate-abs *sound-srate*
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)=((1-t)^3)*P0 + 3*((1-t)^2)*t*P1 + 3*((1-t)t^2)*P2 + (t^3)*P3
;End points of curve are P0 and P3
;Handles are P1 and P2
;Returns sound from (pwl-list ....)
(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)))
   (control-srate-abs *sound-srate* (pwlv-list (cdr (reverse coords))))
;(print (cdr (reverse coords)))


View this message in context: Re: How many control points?
Sent from the audacity-nyquist mailing list archive at