Interesting Paper available on Moog VCF

Eli Brandt eli at ux3.sp.cs.cmu.edu
Fri Sep 20 19:15:51 CEST 1996


Tom May wrote:
> Any polynomial with a finite number of terms will produce a band
> limited output when used as a transfer function.  But the bandwidth of
> the output will be N times the bandwidth of the input, where N is the
> degree of the polynomial.

Oh, duh: T_n has degree n, and they're orthogonal.  So let me lay this
out to see if I've got it yet:

Take the case where we've got harmonic partials and they're all in
phase.  So the input signal x(t) is a sum of cos(kt) terms, out to K.
Each term a_k cos(kt) can be expanded, using the Chebychev* T_n, to a
degree-k polynomial in cos(t).  Waveshaping their sum with a degree-D
polynomial gives one of degree-KD.  Then translate each cos^n(t) back
to a sum of cos(kt) terms, k<=n.  So we have a sum of cos(kt) terms,
k<=KD.

If we have harmonic partials but they're not in phase, each can be
split into a sine and cosine term.  After the waveshaping, each term
has a maximum total degree of KD in {sin, cos}.  Any desired
waveshaping curve can be approximated arbitrarily closely by some
polynomial, so waveshaping of harmonic signals can be band-limited.

The tricky case is inharmonic partials.  If they're related by a ratio
of integers, the above stuff generalizes.  If they're irrationally
related, I think you're hosed.

> Actually, out = sgn(in) gave pretty good results :-)

Yeah, I like comparator functions.  You may get harmonics all the way
out to daylight, but it sounds good to me...

 * The n'th Chebychev polynomial is defined as 
        T_n(x) = cos(n arccos x)
This is nice because then T_n(cos t) = cos(n arccos cos t) = cos nt,
so the Chebychevs are very useful for controlled waveshaping.  What's
a little surprising is that they turn out to be polynomials at all --
T_1(x) = x, and you can get a recurrence relation.

--
   Eli Brandt
   eli+ at cs.cmu.edu



More information about the Synth-diy mailing list