next up previous contents index
Next: Phase-aligned formant (PAF) generator Up: Designer spectra Previous: Resulting spectra   Contents   Index


Movable ring modulation

We turn now to the carrier signal, seeking ways to make it more controllable. We would particularly like to be able to slide the spectral energy continuously up and down in frequency. Simply ramping the frequency of the carrier oscillator will not accomplish this, since the spectra won't be harmonic except when the carrier is an integer multiple of the fundamental frequency.

In the stretched wavetable approach we can accomplish this simply by sampling a sinusoid and transposing it to the desired "pitch". The transposed pitch isn't heard as a periodicity since the wavetable itself is read periodically at the fundamental frequency. Instead, the sinusoid is transposed as a spectral envelope.

Figure 6.7 shows a carrier signal produced in this way, tuned to produce a formant centered at 1.5 times the fundamental frequency. The signal has no outright discontinuity at the phase wraparound frequency, but it does have a discontinuity in slope, which, if not removed by applying a suitable modulation signal, would have very audible high-frequency components.

Figure 6.7: Waveform for a wavetable-based carrier signal tuned to 1.5 times the fundamental. Two periods are shown.
\begin{figure}\psfig{file=figs/fig06.07.ps}\end{figure}

Using this idea we can make a complete description of how to use the block diagram of Figure 6.3 to produce a desired formant. The wavetable lookup on the left hand side would hold a sinusoid (placed symmetrically so that the phase is zero at the center of the wavetable). The right-hand-side wavetable would hold a Hann or other appropriate window function. If we desire the fundamental frequency to be $\omega $, the formant center frequency to be $\omega_c$, and the bandwidth to be $\omega_b$, we set the "stretch" parameter to the center frequency quotient defined as ${\omega_c}/\omega$, and the index of modulation to the bandwidth quotient, ${\omega_b}/\omega$.

The output signal is simply a sample of a cosine wave at the desired center frequency, repeated at the (unrelated in general) desired period, and windowed to take out the discontinuities at period boundaries.

Although we aren't able to derive this result yet (we will need Fourier analysis), it will turn out that, in the main lobe of the formant, the phases are all zero at the center of the waveform (i.e., the components are all cosines if we consider the phase to be zero at the center of the waveform). This means we may superpose any number of these formants to build a more complex spectrum and the amplitudes of the partials will combine by addition. (The sidelobes don't behave so well: they are alternately of opposite sign and will produce cancellation patterns; but we can often just shrug them off as a small, uncontrollable, residual signal.)

This method leads to an interesting generalization, which is to take a sequence of recorded wavetables, align all their component phases to those of cosines, and use them in place of the cosine function as the carrier signal. The phase alignment is necessary to allow coherent cross-fading between samples so that the spectral envelope can change smoothly. If, for example, we use successive snippets of a vocal sample as input, we get a strikingly effective vocoder; see Section 9.6.

Another technique for making carrier signals that can be slid continuously up and down in frequency while maintaining a fundamental frequency is simply to cross-fade between harmonics. The carrier signal is then:

\begin{displaymath}
c(\phi) = c(\omega n) = p \cos( k \omega n) + q \cos( (k+1) \omega n)
\end{displaymath}

where $p + q = 1$ and $k$ is an integer, all three chosen so that

\begin{displaymath}
(k + q) * {\omega} = {\omega_c}
\end{displaymath}

so that the spectral center of mass of the two cosines is placed at $\omega_c$. (Note that we make the amplitudes of the two cosines add to one instead of setting the total power to one; we do this because the modulator will operate phase-coherently on them.) To accomplish this we simply set $k$ and $q$ to be the integer and fractional part, respectively, of the center frequency quotient $\omega_c/\omega$.

The simplest way of making a control interface for this synthesis technique would be to use ramps to update $\omega $ and $\omega_c$, and then to compute $q$ and $k$ as audio signals from the ramped, smoothly varying $\omega $ and $\omega_c$. Oddly enough, despite the fact that $k$, $p$, and $q$ are discontinuous functions of $\omega_c/\omega$, the carrier $c(\phi)$ turns out to vary continuously with $\omega_c/\omega$, and so if the desired center frequency $\omega_c$ is ramped from value to value the result is a continuous sweep in center frequency. However, more work is needed if discontinuous changes in center frequency are needed. This is not an unreasonable thing to wish for, being analogous to changing the frequency of an oscillator discontinuously.

There turns out to be a good way to accomodate this. The trick to updating $k$ and $q$ is to note that $c(\phi) = 1$ whenever $\phi$ is a multiple of $2\pi $, regardless of the choice of $k$, $p$, and $q$ as long as $p + q = 1$. Hence, we may make discontinuous changes in $k$, $p$, and $q$ once per period (right when the phase is a multiple of $2\pi $), without making discontinuities in the carrier signal.

In the specific case of FM, if we wish we can now go back and modify the original formulation to:

\begin{displaymath}
p \cos ( n {\omega_2} t + r \cos ({\omega_1} t)) +
\end{displaymath}


\begin{displaymath}
+ q \cos ( (n+1) {\omega_2} t + r \cos ({\omega_1} t))
\end{displaymath}

This allows us to add glissandi (which are heard as dipthongs) to Chowning's original phase-modulation-based vocal synthesis technique.


next up previous contents index
Next: Phase-aligned formant (PAF) generator Up: Designer spectra Previous: Resulting spectra   Contents   Index
Miller Puckette 2006-12-30