Click here to open the tutorial patch: 05fParallelFilters.maxpat
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
filterin, allowing us to generate signals for our filters remotely.
The click~ object generates a constant signal of
When you sent it a
bang message, it outputs a single
sample of value
1, then returns to sending
This is called an impulse, and in an idea world generates
an eve. 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.
tutorial patcher in the area labeled
2. You should hear a
sawtooth wave fade in and out with a smooth envelope.
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.
labeled 'Filtered Volume' at the bottom of the patcher. In the
patcher area labeled
3, click in the number box
labeled 'Vowel'. Enter
0 in the number box and hit
return. The <link type="refpage" name="number">number box</link> objects connected to the line~ objects
below should read
270., 2290., and 3010.. Click on
the kslider to play some notes. Click in the 'Vowel'
number box and enter different values between
9 and listen to the results. Double-click the coll
formants and look at the contents.
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.
4, adjust the number box
labeled 'Cutoff frequency' to
5000. Play some notes.
Adjust it down to something low, like
The output of our formant filters feed into a lowpass filter controlled by a lores~ object. This cuts the treble from out sawtooth after it passes through the bandpass network of the reson~ objects. Changing this value also changes the quality of the vocal model.
create a 'singing voice' out of a sawtooth wave and a filter network. The line~ objects in the patcher attached to the filters control the interpolation between settings. If you unlock the patcher and change the second value in the message boxes, you can make the transitions smoother or more abrubt. Using the click~ object, see how the different filter settings sound when driven by an impulse.
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.
click~ - Create an impulse