Collage of Max and FL Studio software UI elements.

Algorithmic Music Composition Series

Programming Improvising Drum Sequencers in the Max Environment | Algorithmic Music Series

Concepts, Tools & Techniques

Michael Filimowicz, PhD
Sound & Design
Published in
7 min readOct 17, 2020

--

It can be hard to get rhythmic variety using a step sequencer when you want a bit of breakbeat or improv feel in sections of the drum tracks. Yes, there are DAW tools like flams and note choppers, not to mention the tedious hand drawing of notes while zooming into ever more narrowly arrayed grid lines. And there are sample libraries of beats of course, which you cannot use if you ever want to monetize your music with YouTube Money, for example, which disallows any use of audio sample packs whatsoever.

A workflow I find productive is to use step sequencers, piano rolls and midi files to lay down the main through-continuing beats of a song or instrumental piece, and introduce some customized Max sequencing to push the drum patterns beyond the strict grid of pattern building within the DAW.

Software user interface showing the step sequencer in FL Studio.
Step Sequencer in FL Studio. Image Source

The Max patches detailed in this article are not the most complicated, but they get the job done. Generally I like large and sparse patches that do very narrow tasks because I like user interfaces where it’s very clear to me visually what’s going. I don’t like hiding data in tables or lists where I can’t parse out real-time behaviors. If you like super compressed patches that have a lot of functions like algorithmic Swiss Army knives, these drum sequencer patches may not appeal to you.

I’ll ground this discussion with some examples, two patterns of Max-driven drum section rhythms — in isolation, and in context of the full mix — to give a sense of how annoying these patterns would be if they had to be made using a step sequencer or piano roll (at least, I would find them annoying to make in the DAW).

Even aside from the labor of hand notating these rhythms, the main point to make is that I wouldn’t have come up with these short rhythms on my own using the DAW tools. Max programming generates ideas that I don’t have, producing material outside the more limited scope of what I might be compositionally thinking at any point of the process.

Pattern 1: Solo’d

Pattern 1: In the Mix

Pattern 2: Solo’d

Pattern 2: In the Mix

Yes, as soon as I get my freer drum patterns I tend to loop them, but that’s an aesthetic decision : ) I find that a very fast way to work with algorithmically generated material is to record a lot of it, most of which will sound awful, then pick out the best bits for use in the composition.

I’m not a believer in putting the program in the driver’s seat of the music, and prefer to continuously make decisions about the usability of the output. I might take a different approach in a live context but I don’t do live music so I use tools like Max in a more assistive rather than prescriptive or deterministic manner in a music studio environment.

MIDI material algorithmically generated out of randomness functions.
Most randomly produced material sounds awful, but there are some gem moments worth mining for. These ‘sonic gems’ then go into their own Selects patterns for actual use in the music.

To hear these patterns in the context of the whole song, they show at up timings 4'27 and 5'04 in the music video below.

Two Types of Drum Sequencers

Strict Improv

So far I’ve developed two general types of ‘improvising’ drum sequencers, what I call Strict and Free. The strict kind is based on creating mathematical divisions or multiples of the BPM. In this example, the BPM clock is replicated, divided in halves, by a third and a fourth, and also multiplied by two, three and four. These clock variants of the BPM are used to set the timing of various metros that can be used to trigger the drum sounds, which in this case are samples in FL Studio’s FPC drum pad plugin. Gates (actually, gswitches, but they are serving a gating function, hence the ‘g’) are used to randomly switch certain drums off and on based on a random function.

Software user interface showing a Max patch detail.
Overview of BPM clock variants and gate randomization. There are five gates as there are five drums being used in this patch.

Note in the image above that my BPM mult has a ‘roaming BPM’ option triggered by other objects which set the BPM adrift into other metronomic spaces if I want to explore tempo. This roaming BPM is similarly set up in a strict mode, where a switch is used to alternate between multiples of the BPM that include 3/4ths and x1.5 options.

Software user interface showing a Max patch detail.
Dividing the BPM into a variety of clocks based on simple division or multiplication (60000 = the number of ms in a minute).
Software user interface showing a Max patch detail.
Switching between BPM multipliers for a little exploration in strict sequencing space.

I like randomizing gswtiches as a method for either passing or ‘derailing’ midi triggering info because I like their UI aspect for understanding what’s happening with a pattern. I find the UX of working with these gates provides more useful information in this regard compared to toggles and buttons. I also tend to limit the number of drums involved, in this case 5 (even though a drum pad like the FPC has 32 sample slots — 2 banks of 16 each). When you’re algorithmically producing drum patterns, I find that more than 5 drum samples being triggered randomly gives me a headache, which is more a biological than musical rationale!

Software user interface showing a Max patch detail.
Five drums being ‘metro-ized’ independently by the various strict dividing and multiplying of the BPM.

At the improv-heart of this strict sequencer is the ‘drumBanger’ patcher which essentially switches between these tempo options based on a random function. Each drum, then, is doing its own random but strict thing metrically with one of the mathematized BPM options.

Software user interface showing a Max patch detail.
The ‘improvising’ occurs by randomly, for each drum in the set, switching between the various tempo divisions.

A Complete Content Guide to Sound & Design

Free Improv

Software user interface showing a Max patch detail.
BPM-based tempo randomization

The ‘free improv’ approach uses the BPM information to trigger random metro timings for each drum in the set — each drum gets its own timing, and each timing is a random number generated with each BPM pulse. These timings have no mathematical relationship to the BPM itself. In this example, ten drums are set up so keep the ibuprofen handy. A global speed limit control prevents timings that are too fast for musical comfort. Gates for passing or derailing the midi control data can be randomized for each drum as well, which makes the output of this algorithm a lot looser and more chaotic in overall feel.

Software user interface showing a Max patch detail.
BPM-driven randomization of each drum’s tempo, w/ global speed limit.

Velocity Rules

Both patches make similar use of pitch note/velocity/duration formatting. The velocity is randomized but a value of +60 is added to ensure that no beats are too quiet for the mix. Drum samples are short so the same duration suffices for all note triggers.

Software user interface showing a Max patch detail.
Since the MIDI velocity range is 0–127, adding 60 to the random velocity ensures audibility of each drum hit while also producing velocity-variety.

As you can see from the image below from the piano roll, there is quite a lot of velocity variation with each drum hit!

Software user interface showing MIDI notes and velocities in FL Studio.
Uh, there’s no way I would ever try to draw this note velocity information in the piano roll by hand! I wouldn’t draw the note values either, of course. I assign Max the tedious job of micro-drawing in the piano roll. That’s what algorithms are for — doing things that would bore us.

Full Manual Control

While these Max patches have been designed to add the power of random values to your drum sequencing, they also allow full manual control of the parameters. You can switch back and forth between the two ways of organizing drum patterns with either patch, and add intentional modifications to the randomly produced patterns.

Patch Code

You can find the patcher code for each of these models, Strict and Free, at the bottom of this article.

The Max compressed text code for the two patches described above can be found at the very bottom of this article.

Related Articles

Change Something! An Approach to Infinite Parameter Management with Interactive Time-Based Media

Phenomenology in the Design of Melody Generating Algorithms

Roll Your Own Cthulhu: programming a chordal sequencer in the Max environment

Harnessing Randomness in Drum Sequencing

Strict Improv

<pre><code>
----------begin_max5_patcher----------
6605.3oc6c0zjaiij8r8uBE0wtqQM99i81L6r6sNhNlch8RGS3PUI4xraURU
Hwxs6ch4+9PQPJQJAHkfDfhrW3C1AojEvKQlIRjuD.+yO9gGdZ62Vs+gY+Gy
94Ye3C+yO9gOT9pCu3CUO+gGdcw2dd8h8kesGdd6qutZS9COZ9r7UeKu78+0
cu+5reZwxY+TV9yeY1+c1lkq1U+sxVV9c19zu7mD0uay6ulsY8p7xeVb0Kea
Qw+4rMu7ocqdN2zsvDlXN5wYRL4v+f4nC+Co3um8ON8Ss8875eKzgW9u93GO
7WOBDUE+BOYs6pd3XOa2hWWkuZ2mVsYwSqWU1RdCEZITTxRLTgDhSjPpdq4U
4+9aqL+NO7viyd3oEad4gY+iN.18qyrO1vBKXQ7FiajRvhYtG2vNQamPoygT
NhDTbhQ345F+QJoEvUHtmCwaV8aEP8BizBrtaaQmBgrJWPVsMIWA6HJdN+wY
zBQPANE5afVmCwAGo6lku8kWJFQsnkq0VwI513jPK0kYcFmcCiWAJg0+TMLM
JuDV8e6KLyJlfHril61t30+xO8iVkABeGNk3RjIY8SoMnPb+UgH26YMQZ7b1
4dkDF6TI9FPFERb4.SBuiDff4yUzS+gvUEnvL8BiECH4ZJDllFR6Nstr2yLJ
j2q4Ld5877sarhVbDPKkQ6mSlfOmw2OCaC8JsuSKVOdRkkXSW5SkLjtQcp3p
B7DF17xvErQXrO6VrY41WmwsJUDccHFUpDy67bHcdH105v9wEYab4xUw7dZD
oZN8bWtXiyVLgeqUh0ny8KuuOO6yYOuHOqvIygVMr507PpWaclFrjLBUq2+a
kq21tZM053svaCZhYIbX9.Gpj6g6fNiDlRUyIMQMQVXaKtqqR2M3k5vtNcIe
JAdYXAewRAlPfmG1LWTfvID3ogMzEkb7Ad693+tYDqBDr24q4vJ6kW.5J+52
g3TcgW7bqSnI8OCUjB.4BwTZWmO6yq2tH3X15pj8dwGXrBMIFiK5kVGjEJ+g
LQ4DxLzXZPFYWwVH8O0qV8eM9Tr24LAPT+SCqVeIlqRj.iLrAm5NcI7vtFar
gyHhXjktjqkhcp2oXWQYkLInuGIX2IBeYQ9JqFrTuS5rPWBPkIiAFNMGCZqz
fFPcMJo2sj68hYEwViXh5uk4UbAKKV03I1bMZtzNFyXDzaYVk.He0a4b1br3
zejLxXTKNnIDvNlGo5zjPpSy0x4hKPtmZ3kwJdsA+3nvSsIdHReU3oJ9nzQM
IngUTixwoRMQGRk5hetwoi58qVOCYE+zNrPWoIq7TC6ZcMCFkCnA2.0P9hcK
TVWwpRbmHewIW2NiWj3OC90CnULMoh.A2WwYiHroYsBKb0HaQLNs.wb+yBgI
4gSOKPrnqXcbZAZMxWr7A+W4M59YAhCcVDPSMKPcGxIlXhNGHpqXcbZAZGjX
+qhspAz6ybfj.S3jXpYA5OASH7DMJTLoqXcbZAZcYUXp+Vf36XTn3vtiDpwx
nyBbm6gLjx27WPHVJdoQW1LPAsHVri4wYtMvnPlaChPeYE5MgxzAxalO0F99
ldSwfDcDpisYXLtqrVuBHt2j5ZBi893e5pSgZGfdWCs05q2kYPQgciJTAk62
DnWAogsjPMZkixYPnZcXo7ojHfQOGOFOqDt0MuHU6c95pp3.r1rmnFduqNKe
BpNnYesBnR13ZS8Y1LpTjiwSYWGO47Q1dQ86mIrCQuI9PqjGfnPKqsRGKK47
qqVaEhdufSohOWVpsJ.UIang.EDeQgPHmO1.g2YeiorTEDiJHg7ERTSAvNl.
gisW30OFItSfXmSP3cVJzEwaT.BtYSUQwih39WVrJUtU74+pTMCRBS79T934
jQvDGk8oj5vFgzLNVgSgXvmRx4JBngcOAVCTz3qNbOLjZS.H8uJbMUdKy.xt
W57CE.81sir.Y7C0IOZZ.PuqdMNUdY9.mLv06pplJo2ywSWaVMZX2odUKso5
3mYrsCjcOb5cz+0.UyAskNPChRIw+TZJGgNYpxehi0a6+lITgTlS4B0cJ+Ic
DndWpEUKliYR94jAn9u0AYZyr+SMf58FFjZbyL4.p+6RPy5cGe.08dGix8+7
7hWsHK1nZyicEH5MKYBboOnIDDY9BQlAUSHH58FXknXSrQQui8QpGeHb+0Pn
2oEkZbiVeb.gGxCdNJKnLCU43jqFiGVo1ON1nLumDrFkUZiili.gpY6wVmqm
o5JLMGA.2gLw41HioifVKUqlRDZxQcb.kY72bWHzzsenfVsEUQ2Ls7C4cACW
ixokeHZWg4XzODKBZsSL+PLdGGPGk9gnAMdnpkfLo7CQ8NdnZTNo7CQUcEli
P+PTcDzZmZ9gPcb.cb5GJnwCUkmfokeHuiGpFkSK+PztBywneHVDzZmX9gn7
NNfNN8CgB5Js0SN2PD+yahd54EhH6HJGgNgB6QMRU9mmV9f7+Hvw.y6oKH63
7sYK289q+kheV69m7+L.nJKXBUY51U84HnuYiTz8LfqBce3gOmsd0WWsae88
SviUuewau030enw+kChjeYa4Oj5wiuJai4U3iuZ2pulU++me7sK1U.07Bb99
tx93CeSTqFb3mY6xU617d1wqJgxAmptT4vvlBak8us3Yy+4CiV0e7IgWoK6x
+RXJCElpw00PwX7Kq297utZYCKsBQ2aq1js4scq1uZS9w6qgie7xUedw6qy+
zm2tIee1+WYyWdI7X4y+bU2y5Gd..k88+7trEqO16eYW1xsaNzIZMLb300M2
OOy3G6veeBLkeiMKdyx+4BcuBYhiObeAHee+SK1cXTpxsCo9Cy2tcc6O53+u
0q9bd0G+V1lMmIEy29l6ObW1Ke4J+eeZawG9509sK+j8e58MlO8SEJD4eZ+h
u1VZmuX85JC01+7eawlrWWjuJOyLDPPG+Piq2ur+4caWutEdMexWs7IKKTve
d0uksL+KkMTSkghud1a0JQObbTdY1Kq1m29c4KdYe62rO+2MB8Fu58mpLf+T
9pWeacAJZ+EJLMx1mu+Ka+s8UewZEslBfS25kMMna50q06ul2uKnS8KY6V17
yZ3.jb7FayIqpNqkCMeNWc9kRBpw11qoaQ2tFuJgqendlfJGNwQ9ra0JWxmi
aGBukOzCd3bHeXzIj74yaeeWggjKEHTWEPDFdttwF5QKOIejSL4iSoCoypOZ
7bB+jE0TRhj+aacJPncVcQKme3pBs9ODxI8kK2OKiXoyWVr9yNEOrN6NtHtT
mtimRhmSGO+WJc3cV5fzyY3y16f0NaHiLoSyrobgLPzZBoqrDUmqpw4V0vbh
7gbbky3NCKfxxR7Ucpt5wjtjbb2g5n.IYXFynhU9wGS5KkvvAnonNG+BuwtE
fd7u6JjquHOZ7cpux.aFsr4nbX4pu0XclAQHY5PtjRX2Aw.xno57jEjXB0WQ
voUXtNaiq0MT1UO741kM6KhY445wliJJyZ2uKVrTd1liq39ma3A5v2Dzniu8
ixEj.qebvddFMZ8CtW8Cbz5GLu5Gjn0Ond0O3QqeP7peHiV+.4U+fEq9gR6U
+PDq9gvu9Qz7evg5+nzoui9Q0Kqyv4CGxj0xOYxZ2mVjmuK6o2yMtdalxVux
tzKq29zh0mkRHaIe5im5bdlT7kmxiY6rdShP8uJH5SALvP2Li30IOUVmctaE
zvgTYW9CLOnmIYTBMBRCIVOx1W92hJDr2WI.GJDuKtbVRDijHFIQLRhXjDwH
IhQRDijHFIQLRhXjDwHIhQRDijHFIQLRhXjDwHIhQRDijHFIQLRhXjQGwHXQ
n2P9Wle7oJMImtvRilrYBRZh5gts6nSzjjnIIQSRhljDMIIZRRzjjnIIQSRh
ljDMIIZRRzjjnIIQSRhljDMIIZRRzjjnIIQSRhljwGMIw37Bc5t+QPQPZLAo
Bw6ak3BeOWd2.lHFoKDivM2AHHVhajD2HItQRbij3FIwMRhajD2HItQRbij3
FIwMRhajD2HItQRbij3FIwMRhajD2HItQhE2HzvdGFYKE4S1sPBK5xlIHuI9
eEjTdYqjHJIQTRhnjDQIIhRRDkjHJIQTRhnjDQIIhRRDkjHJIQTRhnjDQIIh
RRDkjHJIQTRhnjDQI2ShRbjV78sRIT6Hrk9lQbdwJSufJ.hnLl5hE3e8DjiB
KnNkGm14vw6SJJgPOW4BT7gDTsR9RaT4+PkBWF4ZENzCMNrgBo1aJXvFBlLn
fNnn3ThMZCBuGJDD9kmAa0PRNjPpQ1HZiIuuSZXZ5b7n.SmRgPaHg53IFWsE
CKBfvAY1DQPOy+p3sbhxdMQfBuvXLRWcgh6yGX.8GeectM4.mZUClbSMXrzj
jK0sTgkWEsO54+9+6o4FSLEIfDIS7bm34Nwycz34tXRgctXcByby5D4542Sn
Kmrfw4ggW6AMi3WWlv5rLgh9ipLg2UYBWvG6xjqQqDlIhEsRBc4LgTkXTyqz
0kNxnIcH7ouzQEMJIEnIfzoHlv8KdYkU2MDlj3Tto69rRFaJJb4x.RH40jGX
Em4RdvQcVdTYEMAkGDpvo7.28YiPiX4wUlc9OMSfbJN5bPbDgnQoMPz8k+9r
CT1NPRjuala6EdO8ePzSRAB0o.QzSGHSTAhyYX3xd5AYRJPJS.b91WbJUTcs
ZOpxpCw3QUfA3WEMBVVifzY0.L0v40e3VpmnyylvL7.7GQYRmSI.UpG6xjqt
DFAOVKggoUS9E3IhVxAXFFol1Rmnkb.pfMwW9K18p8Dcd0u0lTSuU6QPNWrm
ryK9s1FZ5INNq5jaIN57ZeqMZlbq88GbuROIom1JSx33+A2qzSR6o0xDUf3b
kdRVOsWljBjkqVOi6Tjz4rAPjlx4WxBytmZniHQFsHRpkLTwDcSBsa66aV5T
to5qFyja6OecKHc2cpXl1oJzD9jZMxe+URBspygogKlItr5aKyZDs2a5vv6m
8p9TT3X4SoVvXxI8zbMfJRzVCHh2vRZrJc1uNa4UjNzHq6fKhggWWkwJ7TXs
OhC6gcmBrNGMGotr90ixs17Uhs0orf2yIkq73NBir8p5G3VAibXKP8bQrK4m
i6VhpNGwKtZUQHiDSVZMwm.pMWMe1pNGOWkeVNZrlN67su7x5UNAdrOj.zT6
0N+c2j5ZaFdBiMN1L7FT6Xef+2W7qq1O6ue43aL1V7WWb04iaipBtHTxqaIr
N+HCoVRQFpCP.BSzuCP.Ns+Gf.+3hrMNEE3gSTH6pnnhDwPHK9Ax8Vgny0XP
E8xAQJPsJEnCmTP2YyBSgGDDo.ypTfMXRAd2OcQLUUdHjBemcKB9vIEvcUJT
seCBhTvtEgX3jBjNKEL6DkfHEraQHGpCalxHK.cHMTVzmw6vhfA8vUAqh4gd
CF7g3Q4RZN6atc2RyNqTdu6bBl6NG+t24nt6br6dmi3tyQu2cN9Uz4D26NmE
WIG6bj6dm6JFD36dm6JFDnH04.e3dcXAUQzeqvK+s3n0O.OOnTEU4A74A4Qs
ePA2OPQseP7RdfGVKbvcN4k9BdMa4aay1jWEIGEWRbBgapnNy4bxYOgMOIKS
Jb4SCqOCL3wBxsfKAYvBQYxhI+xmv7pjZRu7IBtLsV0BsCOEMMPDXTiiokfD
djoraprUoBwklCGrp8RQqmpeogRXLKdRXoBrYjLpRXIXIr3BeMmqeqDkL2Hn
lpzw7OsdhHpXFDY4Ij4qv0W9T0oeK1vR+YOoklWJO9zftBE3hPoXvCk0iN2M
sfNN9ZJLMCWusehHMN0jzRKHIe9vtfLOfK0W3JZAWgAtlMnD03v3vSC5R77.
tDvv0XuVwdRqmHRroLPLdRk34C6hFgCWtz2QWYqQWYCkYtPeCkYxcGtBnv0L
e2QvWU69FTW8T04lo4IA0DswgmFz3L8.7beGqQsFqqTsQlSJqJGWnANNSovq
4gg.WFpJ.SrgMzlOQMVxzpz415oZmZDwkOg0UGIgJKOwpXmGa4IylHBabTV9
zvNMHXwqDO3YQziNGZvyhH7Nmkyf4nOg.3NGGO3IpyiNGZvSTG7NGSO3IpSx
7xZMZIHSR8xvLd8ChW1fwqe.NYHh3tnUvomPD0D4JfyvRTSboP5EGYQS+PH7
hNr30O3dw7U75Gfu8LXQ0dQ.91yfE0D8K.e6YvhJg2boWgMDM8CteQHDu9A2
qfAhW+.NALznpe.ddt3ZuvAOOWb8evfypaTmuko7hW9nomxjdQAe75GBuXaO
d8C32VUQk3TF7aqpnRaEC9sUE4O52BP0U924W2.+ssKdMayKNtsLvZr2WpIl
TLUQMT0Ipm6aYBTiNzu7dwfymyd93vCNf.8+4m9y+m+W+MqXz6aDjhYpKKIW
YIT0jgFiNuiLvrvdGYTyGK5dcIYbEjhCIRseWOMJwMIn315UPz8C2s1QasOu
FAg6md44sqMWCH+7gqBAIhqTDJmnYXbwPJZtlTDuuRPjLNRW9FR8CHZwGJdb
FtMh84RBBSnmtyyXX+Ecm1Kb9dcxzbqo2VxwhfOAL1wg+g8sg9M2B5Ay9fqC
IZquszFidBB68gj8qvuQItCpme6WXY2Ob6J9kxM12OdXiN2dag1Vz38kbHCU
REnYq7dGBWy8vrJn28Y0Wha2uA116y+F6wekEzSU9dGeIM0qoT53D7BJ.CL3
z1.GyWvIvxKCSYjA0S2UhMgpni2UaiMvQsANjufinzWNIycBpNt+8VucwRy0
W2ktj7dwvXDpL9AoorK4paDsz.Nexe88cFG2VtgA8dAwEwNWdn6XJXKk9Vyh
DPb7+tZ81myx+cqqr2abfHMvAmNf33mxJ5MVWvmufPYlcKlfvgsyls4qJ9ks
gB6pTzqfBVYJVTlh+CiHQ3ZW0k2N7oSkolfP5q6til+lh2hx6p4eXcliw1B4
f6K5zDZCvMZlohXalJuilxb6vNplY50E+5pCVX1Lu5p0koj+wRdWWFu4p+8w
S2AvMva4uU6sLtA9mmI+JgvEYvuE+Nt3To36PbHlg1NbDAPKwQMX+sGsEBPa
wzMXFo6sEP4WewDSqAgIU.vzweE.iU8usDPjfbVPZKJDYXSF26QagA0VsQe6
5uM5MN1diiFhFu8Fd6rp.M5MtzdiSFjFmauwoCRiSs23r903JXdmBhkkRAps
3AosDfLjzAosfLWBqYcd1i1BlmvfLahBC1qKuuskTCtsX8tsjfaKZuaKN31h
z61B9rj8NpFoWST0y1B4y7R8qsDZelFpmskxmYc5YaI8YRld1VfzCkwIHFfM
NJJAw.qwE5nDDCvFWEkfX.13xnDDCEhQKUGjIfoplmw.WYgim5Oms2Gkhx8l
r1brgnLmiiseRgKS5fxbaAV9Tu62fb.PCRfCTPAeQChSTJouiGBh7RVt0Ui.
FNQa+jxTlGGGcXAXzAzzoTRPjXflNkFjotI59N5vLmzIZrr03gr03QvsVHfl
ZlDjPNHfrLIAwxj.xxjDjPNHLPsUPB4f.Z5GRPlAfP.0Vgw9AjsJNH5gXPg9
RBhOHLH6KbPlg.CRmGGDcdLnk6gChsLFj8ENH1WXP573fnyiAMWHNHIVFi56
7SDs5xpitNZNjtUrc5HE8.BjkKNHo8GAxxEEDORHPyLhBhFNBjWBTP7Hg.4k
.EDqIDnYFQAwZBgAsNrfna.nkTQIAC.4ML3IWvH25kuJUk6HcKmSMeJ7gRS0
vBukc0Nt4Je.qnMbjd1SDyRBT7KeRTu+CJOzgZdNQEJsBnnDABklIHpp+f1O
YNiiTUGqfsdp5HNBoKKeAgZdvSwDPTdV.WtPoouala7rmL6TDkBe4SUikXyI
dl8wR7ffRhGiklcDxYOQwFbIu7ISw0fQjRM1lG0WgJic.QIB1Xooz.IDKOUU
wcZKOYt9f0bRIHYyCdlAgARplGCx7ofpPhicwd1VbvsE9FilDyNc3v3G+7mv
l5zq1+Sya.uv4JEDTbQFees8gL+NO.LnQAwFNUEhkkRURfnp+sDLcdVPZKPJ
JJYTTT.13hXDCJUANW98VMEDw7z5C4r.iSXMNGYuw64HrDjApDEGjCpwY73f
bPyZJzwA4fZbVjFyA49RnhCxA03zHMlCaV2PjqEpj.RJKiiTFTiSXQQJK.Sq
TucbyAoMwBQxXnbPJOrfLqOmAxJIL3hBpsBCtfoWJBRag.MdEBZJnL3yg2+1
B1rlAYEWLXySEjwKFHa4fPMGkAyVNHSDvXfixo+sEHaYVXjgfrkY3fzVfR5N
NL5gf7aPCieCvUDSumpDV8iwBhKJPqciFjZihBplunzfnZ.JzFZPpTASHv2F
WAwEEkANn792VvB2HHtnnfbQEjp.iRg4hJLiWPbQQDAw9h.yVNH9M.UkXzfT
kXTh.7Rj5eaAx9hDlwKP1WZZTxYGrFWEkjURfs1hfXrS.YrGjx9iBp73nZbb
FPA03hnLfBpV8nAoNynfpUuiRid1Vv3qiDkATXMNKNCnvBeJHgY.pHEoAo3K
ofJRQpFEmATPMNJNCnfb2iCRrbfpNSZPpXRJnpyjHBh2.D3xZr2KADRKwiRA
kQAWybAOczDP6JPZPJq2ipD2H9GcLjw.a7X3Hf.JGxXUH71ZZqaVhfBbvZKx
MaKTvZK5MOqQzAqsX2psBRdBMsE+lsU3FuD2rsBw3EFT8lPjAosDflPJH6hZ
LH2HjfTQWG0ludaoBSaAIPoidW5YaAJXEdTpgZXM94trCzjPXPrBPBxYK.FD
q.jfbNgfAwJ.IHmOCfh9TFkQOL7RnKvJsPheHHtRgD7vkQaaNJ6V71aec0t8
Ue6x13gWW7Kl6a.0ikOlsw7X4YB3C6V80r5uOu7MK187WxxW8b966LWyKeSX
NgOe30sEhxMumUIMKuwYdn7TA7vUBy92VX.R4gG3G+We7eaPiNBC
-----------end_max5_patcher-----------
</code></pre>

Free Improv

<pre><code>
----------begin_max5_patcher----------
5234.3oc0c08aibaD+469qPv4wb0fjCG9QdqejlWZJBZB5KMAA5rUupTaoCV
x4CDz+2q1kbkkr3pa3tyJQd.12QcFd1e6v4SNyve+su4l2u9WWr4lYewr+0r
27le+su4MseTyG7l352byiy+06dX9l1eraVs3WV+9e5l2E9u1t3W219wOM6C
y2t3aW7P2+yx6a+7c+r+Amr6CW87iKW8vhss+pDwO7iy2d2+Y4pO7iOs3tsg
GEo16tU7tY11ui1luqT2Jl8Cu7KZ8ya69MIieZ3i19aebQ3WyM2L6GZ9e9eu
8sMe6cSHDE4CQk4Vg1u+OVksh.r0mMfATVU7TqKaHpr95Bh17gnnx3hlrgnT
A2pvZBiX1XTfh5hMpyEhdGTWHDxFghJSaiJWD5zU1tzr8zwZLEGB2bFDZRa2
W1OBQA1hJcKPQ+m.hhgfime78KdJ0S6dS3eb9Syebw1EO8iKVM+8Or3P1RtH
QztoLn.8LHQ0Ky5cyt48yW8ggwzta8iOtX01S3Ze6hsy9pc7sY+i4qte8ie+
ptehGVtZwcqed01CenN7kjIWVpVpucm8QkLHc1xR0VdYo8I7s4iKVb+ea4io
314aFzpBO7FUyeYbEhFlyAxrMDJQq5Vq+UQZTSPFFPvUtaU0LjUCH1CScykk
CvQcrQOTMAxrySf2ZpLMTX1oFvob0FFyN2.Fupx1qhYmb.TVaVSwryN.f5Zi
OhCH8qkGF2bVLpy0GV.B9vFBKwJlfvR5yS8u5g0ue9Cy91F3LaGdVtkty5Hj
KPU67LepcVuu3uPEmwe0wxttwe0y1yOelBEodEj1hu5bAkDxqCJzM+E3Gp32
xlcQW.Hp8YCQDSDRR8.XW1.VKRDPR8.Xa1.VglZlCaxFvRQavH0CDwbgnGM0
kdIctHzIb0EBgbQnwXqqcopbQn1WYVOk4hvneP0CBy2EHkuHQ3Sy9SeyW255
3onTkeEQDczCBwfX7ERrjmAi4WRDHBUFFyulHR5bWEg37KQhjd2UQHN+ThDc
uqhvX9ULQv+tJBhYevPQG7pHHl8AAE8vqhfX1G7SzEu5AhxrsaF8wqhf3.Jk
Pe4AwMmChYWnDxcN+zjwxXQ9HmhZeoOV010e3COrHELFP0BJZfgzzB.8klS0
W1kk.mYWVZgC.YoUcOwyLHTaOy9tk6vzG54TCfSeSkeQaoBmY.7xYFXDrtu8
8Ouc65UoNhbVYpQAP098rCamK6GWvNf8z5TFCyOyxl1ssdbbgJyNB2r3gYhj
UyS9ISVistsICGHInGprYPwN2VECxjpjX0MXrpPR0K4EK2GgpBUJSByrUvzA
SEzphA0Sfow9Uw7RFoXQISGKyGpeWc22KXYvrSbrDbI5WoJThTyDxKT4yzra
La4yjftSZEunRq.utDjlcVOxtp7OtcPJqT6mhAi0xT9zmDkx7EOCnLJPpcWV
AREuBjQNVEIBh4ehVAWyqOQPkYvXsLEAcIQoMaQvHJuNhfJV6ro8brJRDTle
E5XpTqfJ0fwZYJBZShxrKs0NTdkDA0rJB1wwpGQPY9IxQ3BsVeQKCBIAqa3f
sLEBMIgY9YxoClWIoPdSkyddVwIF9zYx+lH+dmC8s0yfSDhnWcYOSm94mBdi
snClg8lWC14G17KK28bkzvtH+Sv5bJbLAu3bgtYIr.F3QXwrBmeN8zDPjce6
HMNys1loyR3biiL1Kzgp1XgHINFPqmGNhQv0ZbPKJiS3O5EpPjzhuvLzlYQG
N6MaAUJm8d.4FQ90xfAOrjTtzGQd+P4E6ErnNsCl1QZcjatY6woNC5YaqL+3
mh.ECBolqvwp1uIxWJfCN4o1Py6dMLQ93hMal+gEmvUeYtVcD7MCkaZis4oO
TS.EwfDJ4A1ft7mxGZvenCcPg3PG53c2ZGLKRG5PmgUG5zgYXVtNzsLTHPxq
t+cnyNfRlSTb92gtAz3Cdcs4eG5FRm7B0l+cnO+o0JJfRz+tcax3Mb4HLqJ+
61Eie9aailIKP+6PuaJ3okn+c5jv2OTtYI5emO4TmYHEKu9zNtJ5rWPoTI3r
mg4ikLInKSW+dYxXxhqe.jnmBqmL6gVAOkbVQ4Fnc.Sx9c9JbZugVSNEZU7L
sSpJWDyeZLKAr+t.tbbX7kQ9NO0tURPWWtOZy+ncSB6hzYRmb542knqkPxWF
Jd3zkniltji9u7izUpgDNdTZNZh7tsNMnKSGMGvP06rUJlKwnbndy3X9CHQo
poWqKZ+NQ8.hWzlXBcTS9chHOCctpxuSb.yhEQ+yhkxwuSCu0oUZPWW9cZxu
DlSB6hzuSid542knemoyMDxCmtD86LUsbiP9WlQ9VszEmil.q6i6PYY5YIfr
5Yo.B0dY05KIXFbwPWTtOB1ADEX6XknpbXb.Cag3TcqpbQD7C3196vgWW43T
nl2I3SGLqK2.yeLE2AzhzwOscJ3oknqdxjv2MTtYI5bWpdDBkl7uGGUGTahk
iycRV2q1gxxz4NoiSm6bNSc0pIX9c1leGir3pDQU92fXgVYqpbkK+t6NN7Zq
JO4xe3t5ElhrLDUrNhd5PYc4GmJ61gNhyhzMNPLAbzRzKtzgRJGHu7J4D2Yb
wg07WoTRYCxLdyUq8n68xFSxZqCqj1foDKbMGHradX488.WAuvMLjhMcWx0s
CiBs3RsCtuAe6e4omeb12L+9Y+80aWr4K99Ue+puD+9U+0lu9rce6qZ91er4
ql+weZ2W+Yytu9rce6uz70mYRNjbkXpqpMW146K1EuAodcPbnYFyeIl8AZzw
7DHo0kdko3l7A853gN+jgYjsyGeq6Z3AU+7Rf0PQMdc4FJpFXMTTK3txghdF
tJqkoDh5a2old+erZU4xiYsJkvcwvZNA4kHGm2AyVSP6kqbrh0VdPqJ0oWRO
C.KsJ+onrHbM7VcyfNsROXrVli+JLIJyePIGQ4UY5Wo4MuK64XUyLnSKy+VL
UC0oDX9y8hNnVlBf5jfL6AFPDjWG4OIqV663WUj3W18pqy3qTCfhgB0xT7CR
BxrmD4QPdkL+wZF+53WUj3mL+a35J0+y7mgWcPsLE+RCxradkHHuRV+X8rE5
3WWOwu9Qpvy6onf2tKj98+QgthMF+AbJCmQlTsSEKbBxqmH9EYeFu1P5zqOE
t4OqO6fZgdyHkDjYO+Yif75nvUvZ8x1wuJREtLO2RK2tt.7ddyT9P54hoWk5
4K3KH+Q3U7b7Tf3JUvW8dnjfm0rxEApTBUT0PAd6.YnxvbSzTN2joe9LSZHl
cJwUBHV9L1NAyRwDY5plE7YGQh0gWqplseTnxEEFSnJAJIPjctYztDmWbQAo
rGRXPnx5JIP37CXhSb60ptx6CDYOfaUBYaMlfgxjCjEQcke+tH2vj.L+KqHe
PGfI3jOfEiAonuTosJ4L4aUJvIi.0Xt3Vk5MN.f2oG9djJJuZbqmF9.r9761
JeA1vG8CvrU8XEwlS1WG.L61uFA6ooIqZfa1sGHXgqI+ruBJGr3DDGmxJul0
Sdud2zK6L6H.h.EDgRrUU.sMGXU4ek9XKPkLmOKJ1Abdftxrs49D.M6CiOFP
WsATS1EXg16qQNpI69lG.cUxQyOPjPLu0TqsB4OG6rn6J1ZqCAh3.a8jJBhY
O2I0ZekwEydRkob5JiKlsuOVe4gvMmCgxAlBt3gpfxIvG09eb0rVMIcJNqpt
kGvr8fKhyqX2xeFNpdBhTrx3n5gdDtEIGEXUFsyrXkwQyVFMhyxjix6jPH5E
PcwQgrkQi3rH4n718SQmdpKFZ9skW.lk3LmATvD3WzUblyzOR4cvy0XG8jti
tHwsRLAVUKSNLyVaRT2zkHtU7Nm+CJqth.suwRy29M+w+7W9OR7BPleMsnj5
Pkugs.LLhvU8O4cDG7v7SOuY6x+8x6luc4N9QCc3zBqDU7NE+C08h3JYgsOl
4WOe4pYecqc1uq2WElrGNPt1wAp9vtP5RxU6ahmY7IKzhAFN9UZfm0K3bICj
YHQldpE0BCpljGuv.CYqz.Wxh3RjezKoraVTCZ4GVO+9Py8bpNmrSqoRnCyR
5PQEhtKu688NH2d9of5rDNMjuISQv7gS2FsV3L5OmxUFAx+bwCqua41eKow+
ryCsOjj8HPP3BBjuookTRghraJJoy3lZTzi3yp0aWr62bJXjdWEbNX3hcOSq
wZoXJJck9z3ISGguM+p4LpBHL2JGdYqxqBcY5gl6PKJ2H5JFyUoFlIvvRMSY
Yd5w4+2EMxXoDvFr7Ub5hZwgVCb+6cVM21THbg+wQ.t82U6z9bS3mtC+sOQM
e9wuE1r94mtq6WbCtZtxbm8xiz8K14L9p8thG+gLMdLOS1yqZxjRPhTZFHUS
cDSfTBNHkiBoZxd63IkkDoTbPJCERI4XaQSgm9IIU6HYa7jRSgTRV3U.ITwx
NPEITwx1BJZKZ6l9wSJBTp4oQMR5XHI+F0mLNJQYiNxwNBillpVVPEIYJOGn
BHwp.KGnBHoqs687HoEIks.xBszjnEvBs.RzxvBsTjnkjEZQR5RwhzEIyHbX
Fd+y6m3MnhCTon4zDKRxJRRWJVjtTHIZ4XgVjjjUrHIqHIcoXQ5RQJhjNzOR
ZQRRVxhjLIuzrbHIKIIcIYQ5RRKlDVrSJIII2L2fX3cHII4W8Ds9olqujdOB
KlItPml3hQRbRx5RVzWJIIqKYwlCoPW3HxEifjLgjEskBC0fJFOonsqjmWgQ
g3OY3eu7773x6+35kq1toqkFMtl7u4CyCKoKjn98KMgCSoaYnQxZWN5mcEY0
TimVjDfDrH.QwVYScQOdtOkP+4HpAzSwmWzwwVZzSwp7qehXxhBQh6rSgEEz
SJwGdGKbTMIZgrPKAIZoYgVTD93HGonySMgNiFTNZ6J8r.KynsnfRUvhBFsn
XCVTvisnXO1hh81w+dBIqlZ7zhj.jiEAHGEKkngG9ujDtTSh5WZD2JlD0uTD
xzG6u0q14aCEG.1bklOV9fklLOGNGijNvr8OQijV.IZYYgVJpYEb7jh1NWNN
bIzR5Hy3fRcpTFgw.Xm5dq+k+XU1CMMHOxzPXNF3TxwK+P57pPVNvJzPR9wv
xFMZmNFxC6mjMtW8Dwks.ZDGgIwV.orfr+Qbjzhj6wFVzzaHcD3br2gDo1i8
QRKjZNiGOonsqDY4UnZzZeURysp909pOV6qH3It9XGy0iWYLJIqzZ7zhj3Dx
h3Do8cbToBnlj4Lfk8cZRlyd0SDWp8oQbvLIp80jjt4QShljivZVLw.jxemF
XgVNpGfv3IEs8Jbbr+6EsFgxXgAC5agn5WyQKCy.xoHuHjJlEjkBmAIULK6e
hFIsHYVQxC+mjYkW8DwkRQZDW5mDkhJZRYr3IGohPAYofWPREqw9mnQRKI0C
EZ7jhzdEEKN4S5MHKh5cBwCW8aiatsYkN5dKpBZeiKMwTOHNV6KCYxiToefR
VxN.oR+.YojVPIIqJrTTBHohsXZNUNRjdZT6KEWt2vBxUXxn0ZP784Xoi1S9
HNGMobjSf9nIkkb1hFMoLjiPYzjBIa2ezjhhZKfk9KPSJtq1qFrQK.qgQagz
FZiRuzs212oq7GZerc4nevIcdFfikWRiNkZFk8z6OoXJzbRwAITa+JywuxLL
7Jij6jrTC5jRSAvR8LoUi93lzXrX1hAQGF1AuZ4DDhslTk5qYoWGzjBRRyRk
5qIU87ZVpd98+V9DzhEskjB9SyRk5qIEQlVxydCRRqrXbSRp.nTrnDhTo5qY
ItFsj1gjwh3EoJXWyRrgZIst5kEQYIsdskEwKREG+dzORZIFqEJk2c587dzI
qcFn7G3y09jRHUGauRMd6UTdmArbbRZAI8DRNxenlTKEnYolx0jZof8OQijV
jLMJXYONoZkG7rXthhkQfkYZP3AdThtN+Qg.YfDKccGldmrJNZY01qMYhydj
yF1R6bUoUUhoaJFc3JY.AlP849pUhveoCgH1tj6LsQEmZR3rMstnGOckzDtL
oC2okuZU3puRB69QQ8qpah1+StSxGUTKxA05SWIMAdcXnb8pUhvdXPIBbWeJ
bptD37Uw1zGNMAj4Nc098sPhUQtqR6B3LI+DtH3TQBmgQmlGNc098s1Dqh7S
o8b7S8k.mRZZkfijVObkL3RjwbzJ6Q7SgW0d8h2CCEu..80AJOD0uliDPOZU
GPk9yrw0bQvofNC0HfSWICbRi0lXU.mN64jOcWBXJooGJ7vKjmtZuFVchUAX
5Q0Yfo8h.SUNhm9SWICEMnwJRrJnFxI7mQKj+R.SAMtoLv+vSW0YGwlZUH03
V.2e6QkvIgKguQfuuRwdr9nXHQcNB0AH0EjAZI+TbznUQQKm43URq9PEOV8T
3PKInXmj5mGn0gmbDYEo1SDXoU3.mkHpFOknsmWyBsHsQou1NVdQH9jTwszJ
VTVpfSfzvtr85RlAZQRjvJXgVjLMvR2gBjl2ks2auLPKZZO4HWd.oNEr8Z5k
AbIo1i5iGVBp8z5nIkwSsqDGOobT6howSJK0N7X7jh7AHO5cfj5MKfkYW.Pp
GY.d1tSp4r.fGbQptH.dvEIsSrbv3.RKk7rnyfTE5ArLUl.RUXFvxIHCzJwL
VJ2af3Qnvy6PxUcznUQQqx43QyKPaqAKhxfl7AuNZZQpNg.VlPj.o5DRwR69
BjpSHvOIcFNQhOI8FIPpPh.ubZ.NIhOIC5QPRK6WpIA3zHtdZ.NI0Edwz.bR
DWLI.WPtlQFsoFRclkaRdCStPKjb+Bl1TrVvgKkJ5SurQSJK4ovynIEow1A3
ljdxjHwmBISZcnIxgCLjlR3HKMF.I2WPVJGXZNPXYgTJxYgbzjRRNIjilTTz
bw.cHUyw.KS0IZtXX3H3TIsjIvx7QgT0MygxXIPjPi0YAR0Z7jzGpjn7jbRh
THLKUuqjRAZdpKeg61s4e7i+7hm1D+oaowMON+mVGJYj20tb4pvx1aIuadZw
Our6mGa+j4Oc2+Y41E2s84mZett4Wi2ge2735cuJW87x3aycnaGIaum7VM+w
Ea937.PZuN8d6+6s+eH7LlgM
-----------end_max5_patcher-----------
</code></pre>

--

--