next up previous contents index
Next: Pulse trains via wavetable Up: Pulse trains Previous: Pulse trains   Contents   Index

Pulse trains via waveshaping

In the ring modulated waveshaping formulation, the shape of the formant is determined by a modulation term

\begin{displaymath}
m[n] = f (a \cos(\omega_m n))
\end{displaymath}

For small values of the index $a$, the modulation term varies only slightly from the constant value $f(0)$, so most of the energy is concentrated at DC. As $a$ increases, the energy spreads out among progressively higher harmonics of the fundamental $\omega_m$. Depending on the function $f$, this spread may be orderly or disorderly. An orderly spread may be desirable and then again may not, depending on whether our goal is a predictable spectrum or a wide range of different (and perhaps hard-to-predict) spectra.

A waveshaping function that gives well-behaved, simple and predictable results was already developed in section 5.5.5. Using the function

\begin{displaymath}
f(x) = {e ^ x}
\end{displaymath}

and normalizing suitably, we get the spectra shown in figure 5.13. A slight rewriting of the waveshaping modulator for this choice of $f$ (and taking the renormalization into account) gives:

\begin{displaymath}
{m_a}(\omega n) = {e^{a \cdot (\cos(\omega n) - 1))}}
\end{displaymath}


\begin{displaymath}
= e ^ {
{ -\left [
b \sin {\omega \over 2}
\right ] }
^2
}
\end{displaymath}

where ${b^2}=2a$ so that $b$ is proportional to the bandwidth. This can be rewritten as

\begin{displaymath}
{m_a}(\omega n) = g ( b \sin {\omega \over 2} n )
\end{displaymath}


\begin{displaymath}
g(x) = e ^ {- x ^ 2}
\end{displaymath}

Except for a missing normalization factor, this is a Gaussian distribution, sometimes called a ``bell curve". The amplitudes of the harmonics are given by Bessel ``I" type functions.

Another good choice is the (again unnormalized) Cauchy distribution:

\begin{displaymath}
h(x) = {1\over{1 + {x^2}}}
\end{displaymath}

which gives rise to a spectrum of exponentially falling harmonics:

\begin{displaymath}
h(b \sin(\omega n / 2)) =
G \cdot \left (
{1\over 2} + H \cos(\omega n) + {H^2} \cos(2 \omega n)
+ \cdots
\right )
\end{displaymath}

where $G$ and $H$ are functions of the index $b$ (exact formulas are given in [Puc95a]).

In both this and the Gaussian case above, the bandwidth (counted in peaks, i.e., units of $\omega $) is roughly proportional to the index $b$, and the amplitude of the DC term (the peak of the spectrum) is roughly proportional to $1/(1+b)$ . For either waveshaping function ($g$ or $c$), if $b$ is larger than about 2, the waveshape of ${m_a}(\omega n)$ is approximately a (forward or backward) scan of the transfer function, and so this and the earlier example (the ``wavetable formulation") both look like pulses whose widths decrease as the specified bandwidth increases.

Before considering more complicated carrier signals to go with the modulators we've seen so far, it is instructive to see what multiplication by a pure sinusoid gives us as waveforms and spectra. Figure 6.5 shows the result of multiplying two different pulse trains by a sinusoid at the sixth partial:

\begin{displaymath}
cos(6 \omega n) {M_a}(\omega n)
\end{displaymath}

where the index of modulation $a$ is two in both cases. In part (a) $M_a$ is the stretched Hanning windowing function; part (b) shows waveshaping via the unnormalized Cauchy distribution. One period of each waveform is shown.


next up previous contents index
Next: Pulse trains via wavetable Up: Pulse trains Previous: Pulse trains   Contents   Index
Miller Puckette 2006-03-03