Summary: Subtractive synthesis describes a wide range of synthesis techniques that apply a filter (usually time-varying) to a wideband excitation source such as noise or a pulse train. The filter shapes the wideband spectrum into the desired spectrum. This excitation/filter technique well-models many types of physical instruments and the human voice. Excitation sources and time-varying digital filters are introduced in this module.
This module refers to LabVIEW, a software development environment that features a graphical programming language. Please see the LabVIEW QuickStart Guide module for tutorials and documentation that will help you: | |
• Apply LabVIEW to Audio Signal Processing | |
• Get started with LabVIEW | |
• Obtain a fully-functional evaluation edition of LabVIEW |
Subtractive Synthesis Model
Subtractive synthesis describes a wide range of synthesis techniques that apply a filter (usually time-varying) to a wideband excitation source such as noise or a pulse train. The filter shapes the wideband spectrum into the desired spectrum. The excitation/filter technique describes the sound-producing mechanism of many types of physical instruments as well as the human voice, making subtractive synthesis an attractive method for physical modeling of real instruments.
Figure 1 illustrates the general model of subtractive synthesis. The excitation source parameters may include amplitude, bandwidth, and frequency (for repetitive pulse train input), and each parameter may change independently as a function of time. The filter parameters likewise may vary with time, and include center frequency, bandwidth, and resonant gain.
Excitation Sources
Excitation sources for subtractive synthesis must be wideband in nature, i.e., they must contain significant spectral energy over a wide frequency range. A white noise source is an idealized source that contains constant energy over all frequencies. Practical noise sources do not have infinite bandwidth but can create uniform spectral energy over a suitable range such as the audio spectrum.
Random number generators form the basis of a variety of noise sources on digital computers. For example, the LabVIEW "Signal Processing" palette contains the following noise sources: uniform, Gaussian, random, gamma, Poisson, binomial, and Bernoulli.
A pulse train is a repetitive series of pulses. It provides an excitation source that has a perceptible pitch, so in a sense the excitation spectrum is "pre-shaped" before applying it to a filter. Many types of musical instruments use some sort of pulse train as an excitation, notably wind instruments such as brass (trumpet, trombone, tuba) and woodwinds (clarinet, saxophone, oboe, bassoon). For example, consider the trumpet and its mouthpiece (Figure 2 and Figure 3, respectively). Listen to the "buzzing" sound of the trumpet mouthpiece alonetrumpet_mouthpiece.wav, and compare it to the mouthpiece plus trumpet trumpet.wav. Figure 4 compares the time-domain waveform and frequency spectrum of each sound. Both sounds are the same pitch, so the same harmonics are visible in each. However, the mouthpiece buzz contains more spectral energy at higher frequencies.
Time-Varying Digital Filters
Time-varying digital filters are typically implemented with block processing, in which an input signal is subdivided into short blocks (also called frames) for filtering. Each frame is processed by a constant-coefficient digital filter. However, the constants change from one frame to the next, thereby creating the effect of a time-varying filter.
The choice of frame length involves a trade-off between the rate at which the filter coefficients must change and the amount of time required for the filter's transient response. Higher-order filters require more time to reach steady state, and the frame length should be no shorter than the length of the filter's impulse response.
Digital filters may be broadly classified as either finite impulse response (FIR) or infinite impulse response (IIR). The latter type is preferred for most implementations (especially for real-time filtering) because IIR filters have many fewer coefficients than comparable FIR filters. However, IIR filters have the disadvantage of potential stability problems, especially when finite-precision calculations are used.
The digital filter coefficients usually are calculated independently for each frame. That is, it is generally not possible to calculate only two sets of filter coefficients and then interpolate in between. For example, suppose a digital filter is required to have a cutoff frequency that varies anywhere from 100 Hz to 5,000 Hz. Ideally one would be able to calculate a set of filter coefficients for the 100 Hz filter and another set for the 5,000 Hz filter, and then use linear interpolation to determine the coefficients for any intermediate frequency, i.e., 650 Hz. Unfortunately the interpolation technique does not work. For off-line or batch-type processing, filter coefficients can be computed for each frame. For real-time implementation, the filter coefficients must be pre-computed and stored in a lookup table for fast retrieval.
Download and run the LabVIEW VI filter_coeffs.vi. This VI illustrates why it is generally not possible to interpolate filter coefficients between blocks. Try this: increase the "low cutoff frequency" slider and observe the values of the coefficients. Some coefficients vary monotonically (such as a[1]), but others such as a[2] decrease and then increase again. Still others such as the "b" coefficients remain at a constant level and then begin increasing. You can also try different filter types (highpass, bandpass, bandstop) and filter orders.
No comments:
Post a Comment