next up previous
Next: Making synthetic formants Up: Phase bashing for sample-based Previous: Introduction

Synthesis algorithm

Figure 1 shows a block diagram for a packet-based formant synthesizer. Phases are generated by a phase accumulator (at the top) which repeats at the rate $ \omega/2$ where $ \omega$ is the desired fundamental frequency of the output. The table on the left hand side holds a packet, which is considered as a sampled period of a (real-valued) waveform with period $ 1$ . The phases of the partials of the stored waveform are all assumed to be aligned at $ n=0$ :

$\displaystyle p(t) = \sum_{k=0}^{N-1} {a_k}{{e^{2 \pi k t i }}}
$

where the coefficients $ a_k$ are real-valued. The parameter $ S$ is a shift factor; if $ S=1$ each period of the phase generator swipes through the table twice, so that the wavetable is scanned as a phase increment corresponding to a fundamental frequency of $ \omega$ . The notation $ p(t)$ reflects our assumption that the wavetable (and others below) are sampled with sufficiently high resolution and/or interpolated so that their values may be regarded as depending on a continuous parameter $ t$ .

Figure 1: GRANSAMP: Synthesis by windowed wave packets.
\begin{figure}\psfig{file=fig1.ps}\end{figure}

The right-hand side table lookup is a windowing function, necessary in case the value of $ S$ is not a half-integer. The windowing function is assumed to be zero outside $ [-0.5,0.5]$ . In these units, the Hann window for example is $ w(t) = 0.5 + 0.5\cdot \cos(2\pi t)$ .

The Hann window provides perfect reconstruction of the waveform $ p(t)$ if we make two overlapping copies of the diagram of Figure 1, one-half cycle out of phase, provided further that the parameter $ S$ is an integer so that the two copies make an in-phase cross-fade of the waveform $ p(n)$ . This can be done as diagrammed in Figure 2.

Figure 2: Combining two out-of-phase copies of ``GRANSAMP" from Figure 1.
\begin{figure}\psfig{file=fig2.ps}\end{figure}



Subsections
next up previous
Next: Making synthetic formants Up: Phase bashing for sample-based Previous: Introduction
Miller Puckette 2006-03-30