Wooden Instrument Body Filters
Up until now, the model hasn’t sounded much like a violin, or a cello, or anything else. The reason is that we’ve only modeled the bow and string. That’s just not enough. The resonances in the wooden body are what make these instruments so interesting.
Resonances in instruments
Most instruments have some kind of unique and characteristic frequency response. Brass instruments, for example, have a kind of bandpass response, where the size of the bell determines the cutoff frequencies: larger bells = lower frequencies.
Wooden instruments such as violins, cellos, and acoustic guitars, have among the most complicated resonance patterns of all. The frequency response of a violin body, for example, may have hundreds of peaks and troughs. And, no two violins are identical.
Below is the frequency response of a particular violin.
What are our options?
Sheesh! How are we ever gonna model that?
The only way to precisely match a response like that is to use a finite-impulse-response filter, or FIR filter. It’s like a convolution circuit: a long series of multiply-by-a-constant-and-accumulate-the-results kind of thing. We’ll need thousands of stages to successfully model something like this.
But the G2 doesn’t have one of these, and probably never will. Unfortunately, that means we won’t be able to precisely model that response. Instead, we’ll have to settle for an approximation. So then, what options are available to us, given the modules we’ve got? Three possibilities jump out:
In theory, all three can approximate the above response. In a decision that may be surprising, we’re going to choose the bandpass filters.
Why not use parametric filters?
The parametric filters on the G2 have one omission that’s going to disqualify them: their center frequencies are not voltage-controlled.
Why is that a big deal? Because we want to do more than mimic just a violin; we also want to mimic violas, cellos, and contrabasses. And maybe guitars and mandolins. We’re going to end up with close to 50 filters in this patch, and it would be really nice to be able to move one knob and just “dial” the frequency of all the filters up or down. After all, what’s a cello, but a bigger violin?
Yes, a morph group could tie a bunch of filters together. But only 25 parameters per patch can be controlled by a morph group, and we’re going to have a lot more than 25 filters in our patch.
Why not use comb filters?
Because they’re difficult to precisely control. Also, their peaks tend to be harmonically related, and we want to avoid that.
Which type of bandpass filter?
OK, so we’ve settled on a parallel array of bandpass filters. But which kind? The G2 has three different ones:
The third one is disqualified for the same reason we disqualified the parametric filters: the center frequency is not voltage-controlled. The remaining choice is tough. Do we need the first filter’s 4-pole response, or its voltage-controlled resonance?
Well, we’ll bite the bullet and choose the first one, the Nord filter, even though it uses more DSP cycles. Why? Because voltage-controlled resonance is cool. If we tie all of the resonance inputs together and wire them to a single Constant module, and then assign the Constant module to the front panel, we can control the “peaky-ness” of the entire patch with a single knob.
Our strategy
We’re going to make an array of 48 parallel bandpass filters. This array will have the following features.
Observing the patch’s output
This patch will have a lot of adjustable parameters: Starting Frequency, Resonance, Spacing, and 48 Levels. If our initial goal is to match the frequency response of that top picture, what’s the easiest way to proceed?
One way to feed white noise into the patch, and study the patch’s output with a spectrum analyzer. Below is a performance that contains two patches: Slot A contains a white noise generator, and slot B contains the filter array. The filter gets its input from the white noise generator, so the filter’s output is filtered noise. The picture contains a fragment of the filter patch. Below the picture is a spectrum analyzer’s view of the filtered output. Notice the 48 evenly-spaced peaks.
<patch>
<spectrum analyzer>
Tweaking the patch
Now we can begin adjusting the knobs and try to approximate the top picture. There are four basic settings:
The modified patch is <here>. Below is the spectrum analyzer’s view of the filtered output.
<spectrum analyzer>
Let’s listen to it
Now, let’s listen to it. <Here> is a performance that includes two patches: slot A contains the bowed instrument model. Variation 1 is controlled by the mod wheel, and variation 2 by a breath controller. Slot B contains the filter (all variations are identical).
Customizing the violin
As mentioned above, no two violins sound exactly alike. We can mimic this behavior by simply changing the body size slightly. For example, just tuning the filter up or down a half semitone will produce quite a different sound. This is useful when laying down multiple violin tracks. Each track can have its own character, even when playing the same notes.
Simulating other instruments
We can use these patches as springboards to simulate other instruments, such as violas, cellos, or contrabasses. Some guidelines are:
Some other hints:
The performance <here> is designed with a string quartet in mind. Variations 1 through 4 are designed to mimic violins, violas, cellos, and contrabasses, respectively, and are controlled with the mod wheel. Variations 5 through 8 mimic the same instruments, but use a breath controller. Note: both the bow model and the filter should be set to the same variation.