Filter Tutorial 5: Parallel Filters
In this tutorial, we'll look at creating networks of filters to make complex, time-varying timbres using an oscillator input.
Look at the tutorial patch. It contains a few sound-producing objects connected to a network of filter objects: three reson~ objects in parallel and a lores~ object in series with their outputs. The audio input for the filter network comes from a receive~ object named , allowing us to generate signals for our filters remotely.
The click~ object generates a constant signal of . When you sent it a message, it outputs a single sample of value , then returns to sending 's. This is called an impulse, and in an ideal world generates an even spread of energy across all frequencies; we could think of it as the shortest possible burst of white noise we can create in our digital system. Sending a click through a filter returns a sound that has the exact frequency characteristics of that filter. We call this taking the impulse response of a signal chain.
The saw~ object in our patcher is in a signal chain where it has an envelope (controlled by a function, a line~, and a *~ object). If we adjust the function object, we can change the shape of the note that gets fired each time we click on a key in the kslider object.
A network of filters
The coll object in our patcher contains ten lists of frequency values which correspond to the average formats for vowels in the English language ("ooo", "eee", "ah", etc.). In human speech, our lungs project air through our vocal chords, which modulate the air pressure into a regular waveform. Our mouth shapes this waveform, filtering the signal based on the shape of our mouth. These vocalizations can be modeled as sets of three bandpass filters tuned to different frequencies, creating a simalcrum of the sound our voice makes. The shaping of a sound in this manner is called formant filtering, and can be created in MSP using the circuit in our tutorial patcher.
Tightening the Q on our format filters makes the sound more obviously 'vocal', as the resonation of the filters cuts out any extraneous energy from our sawtooth waveform.
The output of our formant filters feed into a lowpass filter controlled by a lores~ object. This cuts the treble from our sawtooth after it passes through the bandpass network of the reson~ objects. Changing this value also changes the quality of the vocal model.
The filter objects in MSP can be connected into networks of filters that can be used in all manner of interesting ways. Bandpass filters (such as reson~) can be used in parallel to simulate the 'formants' of instruments or human speech. The click~ object allows you to test the impulse response of a filter network by sending a single positive sample through it, generating a pure impression of the frequency response of the filter.