You are on page 1of 13

<ae>lIii3.

3 - Max/MSP - patch - by - Autechre


Thanks to Aspen for kindly sharing the patch and the Russian translation from
bablefish. Both have been improved by me (sice) to make it easier for us to
understand, I hope this is useful!

Supplier
Protection
System
Date
Size

:
:
:
:
:

TEAM H2O
COLLECTIVE
[x] Max/MSP
04-01-05
1 * 32 KB

"When I first encountered Max, I thought it was totally headexploding, recalls Booth. "We came up with some pretty
interesting stuff as soon as we got it.
It was almost exactly
what we needed. We initially got it for making MIDI applications,
and it was a way for us to make sequences in which we could
manipulate and generate data on the fly. We could do any
combination of things. For instance, if we wanted to have a snare
sound late, and the bass note as well, we could have the tracks
sync'ed and variables sent across. Before then we had to do this
manually, but with Max we could connect things in a very literal
way. This made it a lot easier to work with drum machines. You
could now jam with them during a live set, and get a pattern to
slide the timing. We began using Max for live work, and then
ended up using it in the studio.
Most of Confield came out of
experiments with Max that weren't really applicable in a club
environment."
Please note: includes os-x versions of thresher by eric
lyon and christopher penrose & chaos-navier-stokes by richard
dudas. coef_bpass3~, comb1~, gain2~ & peq2~
are
from
zack
settel's jimmies (ircam), simpleFM~ is from MSP tutorial 11.

Contents:
Introduction
Where?
When?
Fmkik Sequence
Fmsna Sequence
fmhat/fmhat2 Sequence
fmacid/fmintermit Sequence
fmbasid Sequence

What?
The conclusion
Introduction
This Max patch by Autechre has a relatively simple structure and includes
several abstractions (objects placed in the externals folder) and enclosed
windows (within the main patch). We shall examine the patch by asking the
following questions: Where? When? What precisely?
The answer to the question Where? will give the names of the supporting objects
and the messages which pass through their connecting blocks to create a
working patch. The answer to a question When? will determine the timing of
events in the general sequence which interests us. The answer to the question
What? will allow us to hear the concrete sounds, extracted from the units of the
program at specific moments in time.
The patch responds to two keys: the Space Bar and the T key. The Space Bar
carries out the same actions as the [loadbang] on loading the patch, and the T
key switches on or off the smooth frequency change of sounds contained in the
fmhat sequence through the remote connection [r twisthat (t)] - in one case
where there is an abrupt change in the frequency the program will work out a
jump by a smooth transition from the current value where necessary, while in
other parts it will immediately change the frequency. In practice this does not
always happen. By default the mode of smooth and sharp change of intervals
between sounds in fmhat is established in a condition of gradual change.
Where?
The destination of all the messages and signals of the patch is to the digital-toanalog converter [dac ~], located in the main window of the program - through it
the audio signal is directed to the output of your sound card to your speakers.
The separate audio flows are collected by the [receive~] objects, undergoing
additional amplification by [gain2~]. The audio signal (to the stage of mixing at
[fsAPa]) is the result of 7 different sound sources based on FM-based synthesis:
-

fmkik - a bass drum,


fmsna - a small snare drum,
fmhat - a hihat,
fmhat2 - one more hihat,
fmacid - melodic sounds,
fmintermit - a sound of grinding metal,
fmbacid - a bass.

The synthesis of these tools occurs in other windows, located within the main
patch. Commands for the sound reproduction of one or more synthesizers is

transferred through the appropriate receiver ([r kick], [r sna], [r hiout], [r stratehat],
[r aceed], [r intermit] and [r blinblin]. Presets containing different settings for
volume and frequency are stored within the FM synthesizer patches themselves.
The window [aerydm] presents a number of tools: in it are generated commands
for the reproduction of the bass drum sound fmkik, the snare drum fmsna and
hihats fmhat/fmhat2. The melodic part of a track is created in the window [aecyd]
which receives commands from the synthesizers fmbacid, fmacid and fmintermit.
The first message created by the program is a <bang> which begins with a
[loadbang] command. The following things occur on creation of the bang:
-

A system for processing signals is established,


The initial values of objects (counters, metronomes, envelopes, filters, etc.)
are established through remote connections with the help of a group of
receivers [r strtbang],
A mode of "random" repetition is created (the calculated value of chance is
given below in the fmsna section) by commands from the fmsna sound (in
the snarstrt window, with aerydm) through the remote connection [r
rydimon.off],
The very important parameter hub=100 (ms) is established (through the
remote connection [r hub] from the main window of the program)
The start times of numerous metronomes are delayed before the start of a
sequence (different for each object), with the help of a group of receivers [r
on.off]),
Through the remote connection [r o.in] are sets of gswitch switches, in the
initial position (1 to ignore messages from the right input, 0 from the left).

When?
The commands for the reproduction of the sounds of the FM synthesizers are
generated by the appropriate metronomes upon loading the patch (or by pressing
the Space Bar) with individually timed intervals for each section.
Step by step we will show that the sequence of commands that reproduce the
sounds are created from just one tic of a metronome, expanding to several
events with the aid of numerous delay lines. The sequence of events can be
complex, as they emanate from several different metronomes.
We will conditionally name the sequences of tools as follows:
-

Independent, i.e. simple and independent from other sequences (fmkik,


fmhat2, fmbasid),
Partially dependent (sounds from fmsna are generated by its own
metronome and from fmkik; the same applies to the sounds from fmhat
which are generated by its own and fmhat2s metronome),
Indirectly dependent (time intervals between the sounds of fmhat/fmhat2 will

be determined by events from the sequences of fmkik and fmsna),


General (the commands for the reproduction of sounds from fmintermit are
transferred simultaneously with the commands from fmacid because of a
binding to one metronome).

The dependence of some sequences on others is due of the delay lines, which
retain the events of any sequence for a specifically timed interval (more often, a
constant) after which the given event will be transmitted to the synthesizer of
another sequence.
Fmkik Sequence
The primary generator for the kick drum sound [fmkik] is the metronome located
in the aerydm window, which counts ticks with a frequency of 1 time in 16*hub =
1600 milliseconds. With each new tick the command for the reproduction of the
bass drum sound is sent the synthesizer, and through the remote connection [r
mainkik] in the window aerydm/straeki a random number determines:
a)
b)

The delay time (3*hub + 100, + 200 or + 300 ms with equal probability)
before sending a repeated command to reproduce fmkik.
The probability that after the first bass drum 10*hub=1000 milliseconds will
follow one (33,3 %) or two (66,6 %) more: one through 1000, another
through 1000 + 4*hub = 1400 milliseconds. The same probability
determines the delay time between the first bass drum and a sound of the
snare drum fmsna (see below).

The diagram shows a complete cycle (1600 ms) of


fmkik:

the bass drum sequence



Fmsna Sequence
The snare drum patch (fmsna) is in part attached to the bass drum (fmkik) part,
and is in part independent. Its independence evident in the presence of its own
metronome, located in the aerydm/straetric window and which counts ticks with a
frequency of 1 time in 16*hub = of 1600 milliseconds (notice the same happens
at fmkik!). There is a delay of 12*hub = 1200 milliseconds after each tick for the
reproduction of fmsnas sound. From the same metronome a random number (0
or 1) is generated, which depends on:

a)
b)

The position in time of the second sound of the snare drum: whether it will
sound through 1*hub=100 or 3*hub=300 milliseconds (with equal
probability) after a sound of the first drum.
The position in time of the "random" snare drum sound fmsna (owing to the
changeable presence in a sequence): whether it will sound through
2*hub=200 (or 3*hub=300 milliseconds with equal probability) after the
second sound of a sequence or will not sound at all. The "random" fmsna
sound in reality has a precise regularity and is calculated as follows:

The primary generator of the snare drum sound (a metronome in the aerydm/
straetric window) counts ticks with frequency of 1 times in 1600 milliseconds. For
reproduction of the "random" snare drum sound from the <bang> command from
this metronome, delayed to 1200+100=1300 or 1200+300=1500 milliseconds, it
is necessary to successfully pass through one of two inputs within gswitch,
controlled by two metronomes (opening and closing with a frequency of 1 times
in 24*hub=2400 (ms) and 36*hub=3600 (ms) respectively - from here follows the
full cycle of the opening / closing of each gate, equal to 2400*2=4800 and
3600*2=7200 (ms). All three metronomes (the fmsna generator, the first and the
second gates) are started simultaneously (upon loading the patch / pressing the
Space Bar). The value of the complete cycle of the "random" sound of the
sequence is calculated as a common multiple of 1600, 4800 and 7200:
1600 * 4800 / 1600 = 4800, where 1600 - the greatest common divider at 1600
and 4800.
4800 * 7200 / 2400 = 14400, where 2400 - the greatest al(common) divider at
4800 and 7200.
The cycle of the "random" snare drum sound in the sequence therefore repeats
(with randomized deviations of 300-100=200 (ms)) every 14,4 seconds.
Graphically it can be presented like so:


The horizontal line represents a timebase (the full period) of a sequence of the
"random" snare drum sound. Red points designate ticks of the metronome which
generate potential commands for the reproduction of the snare drum sound
fmsna (with an interval 1600 (ms)). Light and dark grey points are

1200+100=1300 or 1200+300=1500 (ms), commands from the same


metronome. The blue color designates the transmission bands of the first gate
(working with a time of 2400 (ms)): The gate is opened at intervals of 0-2400,
4800-7200 and 9600-12000 (ms); with yellow colour zones the transmission of
the second gate (working with a time of 3600 (ms)): 3600-7200 and
10800-14400; green color designates the points of their intersection: 4800-7200
& 10800-12000 (ms). We are interested with the two grey areas which intersect
with the green areas, this is the command of a metronome which passes through
both filters: 6100/6300 and 10900/11100; even through 2*hub=200 or 3*hub=300
milliseconds they will become commands on reproduction of the snare drum
sound.
Now let us examine the connection between the snare drum sound (fmsna) and
the bass drum sound (fmkik). Through 3*hub=300 (ms) after each sound of the
fmkik kick drum leaves a command for the reproduction of the snare drum
sound (from the top window of aerydm/snarstrt), even the same command is
repeated through 3*hub=300 (ms) (from 66,6 % probability) or 5*hub=500 (ms)
(from 33,3 % probability)
Furthermore, from the upper window of aerydm/snarstrt and aerydm it is possible
to draw the conclusion that with each tick of the metronome of the kick drum
fmkik, there are three additional commands for the reproduction of the fmsna
sound.
The form of the algorithm used by these commands is completely identical to
algorithm of the "random" fmsna sound described above, with the exception of a
certain displacement of the withheld tics of a metronome of: 3*hub+3*hub=600
(with probability of 66,6 %) or 3*hub+5*hub=800 (with probability of 33,3 %)
milliseconds:


Timing zone for both switches are the same: 4800-7200 and 10800-12000, but
due to the application of various different delays the potential commands for
sound reproduction do not fall on the grey points (two dark grey points, which lie
on positions 7200 and 12000 (ms), coincide with the timings of spaced intervals,
but since the metronomes of the switches begin to work earlier than the
generators of potential commands, then they are shut, without having time to wait
logically for the simultaneously entered command of reproduction. Thus, the
following commands will be sent to the snare drum sound fmsna:

In 5400 (ms) (66 %) or 5600 (ms) (33 %),


In 7000 (ms) (66 %),
In 11800 (ms) (66 %) after the first sound of the fmkik sequence.

The algorithm for the formation of two additional commands includes an element
of chance, which determines the state of the switches: in 6 cases of 9 every 1600
(ms) to the first switch a bang command will be sent to the second. In the
remaining cases control of the switches will be achieved by the appropriate
metronomes. In the case of a successful passage of a <bang> command through
both switches (which occurs on average each 33 seconds = 500/24*1600 (ms) it is obtained experimentally), through 4*hub=400 (ms) (and then even through
10*hub=100 (ms)) it will reproduce the snare drum sound fmsna.
Fmhat/fmhat2 Sequence
The commands for reproduction of the hihat sounds are generated in the
aerydm/tah window (and the window within it aerydm/tah/HAaT) and can
simultaneously act from two receivers [r hiout] and [r stratehat] for the first hihat
and from the receiver [r stratehat] for the second.
From the HAaT window through the [s stratehat] object (every 2*hub=200
milliseconds) the command for producing the sound of the first and second hihats
is sent simultaneously. The metronome generating these commands is started
when the patch is loaded (or by pressing the Space Bar). The precise regularity
of the ticks allows for a "straight line" in contrast to routine, transmitted through [s
hiout] which we shall conditionally name "twisted".
It is eccentric because the intervals are non-uniform and they even change every
4*hub=400 milliseconds under the influence of the random number, which
determines:
-

With probability 5/12, that the current interval will be equal (0.5*hub)
*0.25=12,5 or (0.5*hub) *2=100 or (0.5*hub) *0.5=25 or (0.5*hub) *1=50
milliseconds, and the interval following after it will be equal (0.5*hub) *4 =
200 (ms),
With probability 2/12, that the current interval will be equal (0.5*hub) *2=100
(ms) or (0.5*hub) *4=200 (ms) (when the previous interval did not fall into
probabilistic category 5/12, otherwise the value of the current interval in
view of logical simultaneity of both events will overlap by the value of 400
(ms) in size of an interval of (0.5*hub) *4=200 (ms)),
With probability 5/12, that the current interval will be equal (0.5*hub) *4=200
(ms),

Furthermore, the value of the intervals of the twisted sequence will take the
value (0.5*hub) * 4=200 (ms) with each command for the reproduction of the kick
drum sound (through the receiver [r kick]). It is obvious that this interval (200
(ms)) in a sequence will be encountered most frequently.
The action of the switch, controlled through the remote connection [r twisthat (t)]
(T on the keyboard) is described above (see the beginning of the document).
Another important special feature of the twisted hihat patch is the fact that 300
(ms) after the sound of the bass drum, together with each first sound of the snare
drum, the sound will be discarded and given a hihat sound.
The pitch of the fundamental tone of the hihats is calculated every 3200 (ms), it is
transferred through the remote connection [r scale] from the aecyd/scale window
(see below in the descriptions of the fmacid/fmintermit sequences) and it can
take values from 3*300=900 up to 12*300=3600 Hz. The same value without a
factor of 300 in milliseconds is given to the duration of fmhat [because of the
special features of the [envgen] object in Pure Data the duration of + 7(ms) is
added].
Simultaneously with scale parameters the fmhat2 synthesizer receives harmonic
factors, designed on the basis of the variable interval (transferred from the aecyd/
interval window, see below in the descriptions of the fmacid/fmintermit
sequences) as (interval+2) *400 and taking values from 800 up to 5600 (ms).
Fmacid/fmintermit Sequence
The timetable of the melodic part of the sequencer is located in the aecyd
window, which generates the sounds of fmacid and fmintermit every 1*hub=100
(with probability 2/3) or 2*hub=200 (ms) (with probability 1/3), sending to their
FM-synthesizers through the remote connection [r aceed] and [r intermit]
accordingly.
The commands for the reproduction of both sounds contains the pitch of the tone
generated by the synthesizers (in midi notes), causing a certain amount of
interest in the formula for the calculation of the values, which represents the
equation of the straight line: y=kx+b. We experience constant metamorphosis in
the course of time in the form of a random change in parameters k and b, which
is expressed in the sequential sorting of the output values y (notes) at the
moment of time x in the sections of equations of different straight lines. Because
of constant and chaotic change of the equations, the melody has no clear
structure.

The formula is expressed by the language of the internal variables as follows:


aceed = aceednac * scale + interval + mainkey, where:
-

aceednac the initial value aceed, calculated by the [counter] object in the
aecyd window every 100/200 (ms): each subsequent aceednac = previous
aceednac +/-1, beginning from one, takes values from 1 up to 13, and the
maximum (13) is not constant and is calculated every 3200 (ms) within the
limits of 1 up to 12 sum interval+scale plus 1. The direction of an increase in
the values of aceednac (+/-1 = upwards or downwards) alternatively
changes periodicity with T, established by a random number upon loading of
the patch (or by pressing the Space Bar), which lies in the range of
1*32*hub=3200 up to 7*32*hub=22400 (ms) and by multiples of 3200.
The variable interval consistently accepts even values from 0 up to 12 and
changes every 32*hub=3200 (ms). Furthermore the direction of change of
values (upwards, downwards, upwards up to a maximum and downwards)
varies with random periodicity (by lying within the limits from 1200 up to
8400 (ms) and multiples of 1200) in such a manner that the unidirectional
movement can change to two (=int (8400/3200)) values of a variable
interval, i.e. the maximal jump of an interval makes 2 values.
The variable scale is formed also as an interval with exception of the fact
that takes values not multiples of two as an interval: from 0 up to 12, and
multiples of three: from 3 up to 12.
The variable mainkey as a matter of fact is a constant and is always equal
42.

Before sending a command for the reproduction of the fmacid sound the result of
calculating the formula passes through the limiter: the values exceeding 96
decrease by 48; and at an output aceed accepts values from 1*3+0+42=45 up to
13*12+12+42-48=162.
For greater clarity I shall show a sequence of 500 values from aceed,
representing midi-notes of this melodic sequence:



The green strip designates zones of the increase and decrease (the direction of
movement changes every T (ms) where T <=22400 and it is a multiple of 3200, it
is selected at random upon load of the patch).
The crests in the diagram are the maximum values of aceednac, established
every 3200 (ms), a constant change of the maximum is expressed by the change
in height of the crests. The steepness of the crests tells us about the high value
of the variable scale, the slope (smooth) tells us the small value of the scale.
Similarly the figure of the melody created by the fmacid synthesizer is similar to
the sliding of the hand (upwards / downwards) on the keyboard of a musical
instrument and does not have a precise structure.
The clanking sounds of the fmintermit synthesizer start are generated together
with the sounds of the melodic sequence fmacid on a command from the receiver
[r intermit]. Values of the midi-notes from fmintermit differ from notes from the
fmacid sequence in terms of the absence in the formula of the constant
component mainkey:
intermit = aceednac * scale + interval.
Furthermore, depending on the belonging of a note from intermit with one of
three intervals 0-40, 41-64, 65-168, its value will be increased to 24, it will remain
unchanged or will decrease by 24 respectively. This restriction introduces
additional crests into the melodic figure of the intermit sequence: if the following
value from intermit lies at another interval than the previous one, a jump in the
melody will appear.
Fmbasid Sequence
The bass part of the sequencer fmbasid is located in the subh window. Every
32*hub=3200 milliseconds it sends (through the remote connection [r blinblin]) a
command for the reproduction of the modulated bass sound. Combined with the
bass drum part it forms basis of the track.
In the command is placed the pitch of the fundamental tone of fmbasid, which is
calculated by the following formula:
blinblin = interval + scale + mainkey - 12 - 24, where
interval and scale - variables of the fmacid/fmintermit sequences are calculated
every 3200 (ms) and accepts values of 0-12 and 3-12 accordingly, mainkey always = 42.
Thus, the fundamental frequency of the bass (in midi-notes) will vary from 9

(=0+3+42-12-24) up to 30 (=12+12+42-12-24).
Besides the pitch of the fundamental tone of the bass, the command blinblin also
determines the value of the fundamental frequency of the snare drum fmsna,
who is calculated taking into account 24 (i.e. more than value blinblin of bass by
24) and it can take values from 33 up to 54.
What?
The results of work by the sequencers is sent in due time to the corresponding
FM-synthesizers as commands, values for the height of notes and cutoff
frequencies of filters. Absolutely all the sounds in Autechres patch are built on
frequency modulation and generated in real time.
Sound synthesis occurs in the patch [simpleFM~], which represents two operator
FM-synthesizers (connected with two sine wave generators, in control units of
frequency and amplitude of waves synthesized by them). The frequency of the
first in the connection (modulating) FM oscillator (modulating frequency) is not
assigned directly, and through carrier frequency (Fc) with factors of harmony (H,
harmonicity ratio):
Fm = Fc * H,
The carrier frequency (Fc, carrier frequency) assigns the fundamental tone,
around which frequency (Fout) of the output signal changes:
Fout = Fc + Am,
Am (modulator amplitude), the amplitude of the modulating frequency under the
influence of the first oscillator varies with the frequency of Fm and accepts values
from - (Fc * H * Mi) up to + (Fc * H * Mi), where Mi = an index of modulation
(modulation index).
After simple arithmetic conversions it is possible to come to the following
conclusion: frequency of the output signal accepts values from Fc * (1-H*Mi) up
to Fc * (1+H*Mi). If these figures will be useful to somebody, please inform us!
Try to turn the knobs of the parameters mentioned above and even you will see
what a wide spectrum of fluctuations this simple FM-synthesizer offers.
For the sonic percussion sounds (fmkik, fmsna, fmhat, fmhat2) the synthesis
algorithm is limited to only one frequency modulation, i.e. by abstraction
[simpleFM ~]: the values of the fundamental (carrier) frequency Fc and the factor
of harmony act as constant values (not changing in time with the sounds), but the
index of modulation Mi and amplitude of the synthesized waves are assigned by
the functions of linear envelopes, that accept values at different moments of time
according to established presets. The resulting signal will be given to the output
for the further amplification and conversions into the sound object [dac ~].

With melodic generators (fmacid, fmintermit, fmbasid) it is little bit more complex.
In the initial stage their sounds are formed by the same FM-synthesizer, whose
carrier frequency assigns individual receivers an individual receiver, the factor of
harmony is always constant, and the index of modulation and the amplitude of
output signal changes under influence of the envelopes, preserved as presets.
From the FM-synthesizer the audio signal comes from the tuned low pass filter,
the value of resonance of which is constant, and cutoff frequency is assigned in
midi notes through the remote connection [r cutoff]. About the last value it could
create a separate work, since the algorithm of its formation is unusual enough.
First, it send to filters each hub (100) / 4 =25 (ms) (the second metronome, which
generates the values of this size, works in random intervals, multiple of 25,and
falls in time with the first which affects the small phase displacement of the
frequency envelope of the filter). Secondly, values themselves are the solutions
of the differential Navier-Stokes equations, fluctuations used for a study and
simulation of the sonic flows in the liquids and the gases.
The sequence of these values is wavy and periodic (with the period of ~95
values) and has random behavior:


In 1 second it can be replaced from 40 to 50 values (depending on the period of
the second metronome, which generates commands for [chaos-navier-stokes]).
The values are not repeated with each new period, differing from previous ones
by a small value. Before sending they increase by 2 and are multiplied by 18,
closing itself within the limits of ~19 up to ~111. I shall remind you that there are
other MIDI notes: after they will be transformed by the object [mtof] into
frequency, they will be in the range of 29-4940 Hz. This sequence has a big
influence on the sounds of fmintermit, which has a rich spectral structure, and
practically does not affect the bass layer fmbasid (because of the low distribution
of its frequencies). At this stage processing for fmbacid is complete - the signal is
duplicated on two channels and is amplified to the [dac ~] object.
The sound signals fmacid and fmintermit undergo additional filtration by a comb-

lie filter [comb1~] and a parametric equalizer [peq3~], which eliminates the
bottom part of the spectrum of the entering signal with the help of the biquad filter
[biquad~] whose factors are calculated upon load of the patch on the basis of the
level of amplification (dB), the analyzed band of frequencies, the central
frequency (Hz) and bandwidth (in octaves).
Here sound processing in the program comes to the end and the resulting audio
signal moves to the output of the sound card.
The conclusion
Let's sum up our journey inside this patch:
Behind intricate designs there is rather simple principle - each tool is assigned its
own metronome, which works at a constant frequency with small deviations,
occurring under the influence of other tools or random events. The amount of
deviation in the majority of cases is limited by such events, and on hearing it is
practically impossible to find a common sequence.
After several minutes of listening the music starts to get monotonous, in spite of
the fact that the whole thing is brilliantly created purely out of FM synths (focus
your attention on the "magic" presets!). Variability of the sounds are achieved due
to the constant but periodic change in the central frequency of the resonant filter;
however the use of the Navier-Stokes equations for this purpose is not clear. The
same effect can be achieved in much simpler way, by combining some sinusoids
and adding some noise.
The absence of melodic structures, large organizations of rhythmical groups,
introduction, conclusion and culmination of work is an obvious drawback of the
patch.
In spite of the omissions indicated, the patch can be successfully used for
reengineering (using the bare bones), acquainting you with methods behind the
creation of algorithmic music, and also serves as a good base for the realization
of your own composer concepts by the improvement of its algorithms.

You might also like