# Mathematics and MAX/MSP

Hi. I’m new fairly new to MAX/MSP and I’ve been playing around with it quite a bit lately. I’m really interested in generative music and would like to apply some complicated dynamical systems and algorithms to some patches. What is the best way to go about this? Should I stay within MAX, (I feel like its mathematically limited in some ways)? Could and should I integrate C++ or Java Code into MAX? Whats the best way to tackle this? I know a bit of C++ its been awhile since I’ve used it though. Thanks!

I don’t think max is that mathematically limited…

On 23 sept. 08, at 16:29, Nathan wrote:

> Hi. I’m new fairly new to MAX/MSP and I’ve been playing around with

> it quite a bit lately. I’m really interested in generative music and

> would like to apply some complicated dynamical systems and

> algorithms to some patches. What is the best way to go about this?

> Should I stay within MAX, (I feel like its mathematically limited in

> some ways)? Could and should I integrate C++ or Java Code into MAX?

> Whats the best way to tackle this? I know a bit of C++ its been

> awhile since I’ve used it though. Thanks!

[expr] can do a lot, [vexpr] for lists, [jit.op] / [jit.expr] for

matrices. And if that’s not enough you can do some math inside Max

using, JavaScript, Java or C.

ej

Cool. Yeah I haven’t really probed deep into MAX’s mathematical structure. I’d like to do some things with Automata over Algebraic Cyclic Fields, L Systems and the like. I know things like Markov Chains can be done with ease in MAX. Some stuff with the automata becomes computationally intense and often deals with large matrices, I didn’t know how MAX handles these things.

How is C used inside MAX?

C is everywhere: any max object is written in C. If you want to use

markov chain, have a look to the prob object.

ej

On 23 sept. 08, at 18:33, Nathan

>

> Cool. Yeah I haven’t really probed deep into MAX’s mathematical

> structure. I’d like to do some things with Automata over Algebraic

> Cyclic Fields, L Systems and the like. I know things like Markov

> Chains can be done with ease in MAX. Some stuff with the automata

> becomes computationally intense and often deals with large matrices,

> I didn’t know how MAX handles these things.

>

> How is C used inside MAX?

Lots of people use code-based elements for the things that code can do more easily than the standard Max objects. Really is a matter of taste in many instances (could do things either way), though there certainly are some things it can do more easily. .js is quite straightforward to implement, if you’ve got skills in that area…probably most of the math stuff is straightforward to translate into it.

As mentioned, there’s a wealth of functions already available, like the expr and jit.expr, vexpr, and table functions (calculating on the whole table set without needing to do for loops to iterate). I’ve only needed code elements a couple of times, since I try to figure out how to do things graphically first, and have *usually* been successful, but at times it would have been better to go with code from the start. As you create new ideas and challenges, it’s often a learning experience deciding which route (or what mixture of both) will be best, and of course, this is often not known without experimenting quite a bit.

My advice is to use Max’s graphical elements and objects for their strengths and use bits of code for pieces that are giving you trouble with implementation. For things like UI, automation, presets and interpolation (pattr), controller input, etc., Max is really straightforward and powerful. You can then take these numbers as parameters to more complicated functions, some of which will be easy to create in Max and some you might want to write in code. (Having them in Max means more immediate results, but an open .js file that you tweak and re-save isn’t bad.)

Using numbers generated in this way relieves you from having to manage tons of abstract variables in your code—the snippets just take numbers in (labeled, for example, param1, scale1, xposition, or whatever you plan to do with them)—and perform the desired calculations—in such a setup, all variables in the script are local and it’s just a "black box" with a set of named functions.

Seeing all the possibilities of a particular function is really simple in this way—like easily being able to try all possible parameter numbers for a function (say 1-1000) at a settable rate? Metro–>counter–>function, at whatever speed you want, or in either direction. Or trying patterns of values? Counter–>table–>function. Use things like preset on tables to store banks of whole-table settings, then flip through them to see what happens. Lots of possibilities there, and with the ease of hooking things up (data, functions, and logic) you’ll come up with all kinds of new ideas for interaction and experimentation which could be quite laborious to create using only code.

Also definitely check out jit.bfg if you’re into mathematical patterns, I’ve used that to great effect for generating interesting flowing patterns to run LEDs, create textures, and morph GL vertices, among other things. It’s a really interesting way to get a lot of appealing generated patterns of data without a lot of work, and there’s a bunch of useful parameters you can apply. After you get your pattern/matrix out, you can then apply some of the jitter effects on top of it.

Dig in! Maybe the best way for you to experiment is to keep in mind "how you’d do it in code", if you’re more familiar with that. This *could* be a good structure to fit the new techniques in. However, keep in mind that the underlying methods for getting things done are rather different than code (as you’re probably aware), so you need to understand the differences to be most effective. Hopefully you’ll quickly get a feel for where the strengths of each lie. I do know that if you like math, and you want to experiment with mathematical ideas, you’ll definitely like Max.

–CJ

Quote: seejayjames wrote on Tue, 23 September 2008 11:23

—————————————————-

> Also definitely check out jit.bfg if you’re into mathematical patterns, I’ve used that to great effect for generating interesting flowing patterns to run LEDs, create textures, and morph GL vertices, among other things. It’s a really interesting way to get a lot of appealing generated patterns of data without a lot of work, and there’s a bunch of useful parameters you can apply. After you get your pattern/matrix out, you can then apply some of the jitter effects on top of it.

—————————————————-

Hey CJ, jit.bfg is pretty cool! I had no idea that it even existed.

So let’s say that I have a pattern that I think is interesting.

How do I access those values and map them to musical parameters?

I am not very familiar with jitter. Would I just step through each

pixel? Also are there other similar jitter objects that one

could use to generate control data?

A pretty big question, but a simple place to start is jit.spill on the resulting jit.bfg matrix. Hook that to a multislider and you can see the lists generated in one dimension (if the jit.bfg is only one plane, that is, luminosity-only per pixel). Nice to insert a jit.op * (from 0. to 1.) after the bfg but before the spill, to be able to scale the overall levels of each pixel. (Possibly this is better computationally than a vexpr on the resulting list? Same idea, as I understand it.)

You can always do a getcell for individual values too, but I like seeing them in multislider. Even a low-res bfg (like 16×2) will generate (under your parameter control) 32 shifting values, then use *as controls*. I like mapping these to things like volume and frequency of cycle~ etc., filter settings, delay levels…well, you get the picture. Good parameters for bfg include scale, resolution, and offset… use a counter to move the offset and you’ll get an overall "motion" of the values in whatever direction you want… very effective. I did this with a pictslider for x and y control, it was a little tricky to get the parameters right (some needed to be negative when I thought positive), but once I had it I used it all the time: smoothly moving fadey colors of a large LED installation at Burning Man, hours of nice ambience. I also used a joystick’s two thumb controllers for it: one–> hue/brightness, one–>fade time and overall speed. These took some more work, but the objects were jit.scalebias, jit.xfade (back into itself thru a speedlim, great trick for video too), and the offset speed to jit.bfg.

Having a nicely-tuned oscbank~ whose volume levels get affected by this shifting set of values sounds awesome. You could also get great mileage out of applying a subset (say 8 or so) as a constantly-shifting EQ setting on samples. If there are certain "snapshots" of the bfg you like, use jit.matrixset to store them, or (perhaps better yet) a pattr on the resulting multislider list. Then you can morph between as many stored list settings as you want, without the bfg running, and without creating the lists with the mouse.

Definitely look into the Jitter objects, there’s a ton for video (obviously) but there are some more esoteric gems like this one hiding in there, plus all the creative ways you can combine them.

–CJ

Go the Max way.

When/if you find the limit, post the (precise) question on this list.

The good thing with Max is that all the interface with audio world (MIDI,

audio…) is available to you. You don’t want to program that in C++.

J-F.

–

http://www.jeanfrancoischarles.com

>

> Hi. I’m new fairly new to MAX/MSP and I’ve been playing around with it quite a

> bit lately. I’m really interested in generative music and would like to apply

> some complicated dynamical systems and algorithms to some patches. What is the

> best way to go about this? Should I stay within MAX, (I feel like its

> mathematically limited in some ways)? Could and should I integrate C++ or Java

> Code into MAX? Whats the best way to tackle this? I know a bit of C++ its been

> awhile since I’ve used it though. Thanks!

Quote: jeanfrancois.charles wrote on Wed, 24 September 2008 15:51

—————————————————-

> Go the Max way.

> When/if you find the limit, post the (precise) question on this list.

+1

If you are new to Max, it is probably best to _try to do _everything in "native" Max first. This includes objects like [expr], [vexpr], [if] and such which allow you to evaluate c like expressions. This way you’ll learn the basics, the possibilities _and the limitations of the program/language quickly and thoroughly.

If you are not sure how to do this or that, post to the list. You’ll quickly see that A LOT is possible with vanilla Max.

The only external library you should probably get relatively soon is the Lobjects collection for dealing with lists, although in max 4 the native list tool "zl" is extended too, so it might be less necessary.

Then, after a few (2-6) months, if you still feel the need, start integrating some java(script), or develop your own externals in c using the SDK.

Good luck, enjoy the ride :)

Klaas-Jan

Here is what I was able to whip up. I must say, jit.bfg is amazing. I think I will get a lot of mileage out of it.

**all**of the following text. Then, in Max, select

*New From Clipboard*.

```
----------begin_max5_patcher----------
2838.3oc0bssbqhiE84zU0+CTtlmlJsKzEt0O08WP+v73olJkLHaqS.jOfHm
jtq4eezEvFrgXQBXbR4.FIgYqk1Zq8dII9me8WdX0F9qzxUN+ty2bd3g+Qlx
C5zTo7PSBOrJi7ZbJoTWvUw7rLZtX0i0YJnuJzY7ehIoziImWkwxSoB8MAZR
kknKJey2+MHtcY4UhlB61j7Vdtnj82T8uf65ioefHh2yx28TAMVXDdrmmLeG
DHRexWcDDt104+19GKmjo+wV8mELR5JcN+ue8WTmkmdzZHHm9SYM3RD3fiFC
9qsaKoh9QBXOHgGZ.j.bMjvTVwaGnFXX0pSU3dPIDLv.OH0o.WqPolr1yRRn
4cDK8ifVTCUMXk7WgkRegVTx3cJ+CqNIJgXcaDTWab7w5S3P2VBirYXWJO9Y
ZRashGVkP2NxeG9AZ9oaQWjNGNqnr7CEzRoNNQTWC57vIUohmFnEoaA1RhoC
e68iyOrZWAKgmqDjt2qJ8lG42b.ZEd0wVRutH4jC8c6BNOcCo3EVIaSJsa6h
TemjyxHBpfYDJn6o6jkcnfkK59ykQEjDhfXjl1MZsMozVsnS+ptY7t8u51Gq
T0CS1n4.VqNB87W2ofc5s42NmV83vgmeO8zq68540euusobh3TWvg5FBvl1N
Ws9WXzEcCeWCVObxnU8We7NFnCVRf1yXgyEr33bU1FocxAgOv.vG78zSgeX3
S0Y9QmUaH46rFDgHikUqAwNJUELs5j1Dx5n6G7MZ4w2FqA22.76Xn3.4YGt1
kGGWG2gaDPCzHfbmEaDVqYaNEgVNyCZLZXfyc.fyyZf6i.NZsRi+TPulicus
lPATBz8Cp.lQToVYYIgEiTOdacdv2AWbsRa.BC+r06VNJlxxGzQQsHnJv.HR
IupHtoYqwHhyYxSBsTvxO5D+2NgCmWxSw1zAHxXIG3Ri4kMN4Zei4nq.J0V6
p.JmWuGq.V2BnbJ7NrBzGt1eEP41v8XEHv5Jv8oJTe3Z+U.c2c3GoB.7vq8j
Czi0AE.PniWMuUsvQU0.ejplWjotnI4Ix+3ECVwZxPUGqozoj7BM4IobHM8+
DQH8qbSkvXltKEOWkdiKycPNS1kx2PRqYS5nyVqFEqIWkXlAcjqAS9HLA98x
J1QFxNTvEbk6DGeLu9lylTR7yNj7D42pnWgTvuWRJ1UoFDsQa0EH0ycQJOS8
kJPlOm3qqcrLmXQTw+1QYPIhOASdQ1fxKhEEoq+d4.7MBGlWwGsjaQXfILa.
VGys6QsuOB5JCyWJfifR4fNbxFyS4E03nVnZe3TkYytVE7LxA6TvA.KqIm0v
ZwEAF1Ke1l3.QHMZ54tL7Y+clXM+fyeH++eaOc1PuUSEhIEfmxHRiPudcEP.
FY7QEpYBFNuPVlzVCqLkkbh1gqqedBX9r5befNnPSDtnPCLALyQhY7giV+qa
Tfd9GShJj0JYcukr1QBkEnT7VWFkWYPlN0QTnKJBppiAX.Hvu82.eJyDum5a
4AVZpyejxJk.V9NwdUcaDVTlLUYaTfMwUYF+F.VnN8RiTIYzxRoEc6wIvMZF
r77pIKSq85G7QmAqa1PR9qVtQO7MigfGEH0GSh2BfJXQ.J.5KGPEtD.EJX40
nFbV2IO6H87VGGkZlpze5GOw8fmQ2pIe23eRjA7bilWq6iUqB3tHpUt3ub8+
.fk.ofAv09x+BC9pAWvEAtvf0H4evv6XiVMSZ1nMYAtUKXn5kUSiMqELLzbd
QFIUUirWyCuHwg1LGInaQXnB9tciYQ2A7tllSuSl86G2BHr0DXCcaNdCI9A3
uLNE0dh6iVD6KpH0H6nW1oQ1YYWty+BXOuMffakmPAGodPhaFaK9270pYA8.
MOwQdNloWoh1qsEdi.Jbnomkw9aX37ZKQw6b0pVhinHimzkWmqiMC4NMZzXS
8pn45Vbw0KsK+nAGlhInYks6gqH2vY0ipC5q8wqrqeqT95NUX2DhsWDuy8Ba
Ec78l8seRY61KjF3LeFA8z2LtpBaEvW8zhLal4FDmRXYxgnBM+aOJgtUnDxs
dTTCLAWPXB54OL6v8BRvake3HPKPxegGxbCojUZuwKzMa6MDE0ZA8E.9BLbI
Bu.CWVO.oQYBfBe+gKSXkBRdLcMsJVMqNj7iibdYVqK+QEoflbYQxH46kXTe
28wrVWPRzChbdIh2S27l7vK8byr7m4uT97amFOmkJnEq2H6pSSuHU9qmmTLQ
jUklVvyNOG4C44ySaGoprj0pZTmdpTZ9atLq73yyJioVXCoWHK8UV43lxwkU
gzUmtnfjWtUUZA8POolw4h88m2FFo7xTiq1vh64Gh7yKS7GURsp9J8NBK+xT
OTkVRGRFGJS0hn4hTUKsFRQOklmRJzr.TmSNmUJ0OZit0IsmF+Ls3rTUpM7B
QKETS56TZdTSOnVIWxxNjRe8rTegWvke67TIoUTC5VdHscspS977W3oU507y
YOqCjhx9Kv1BRrfjtNS9XuHw8TodykIqmf59Sc8921TvRFHSYN6nWlonpXSU
JMWsndtecTF4sDNJCB89xQiMZQnLA3gzzXG.+pAWKx7SBfPMM1H+6YZrKX6X
ejYdCcq3QIBbGvhcgyls65Gbb6CbtUyKYjYg.Eoi7BFsbT7KgGGfSM6LuevX
80CE6tjz8aHAF.l6kc1fz8VI3wRGXnEihLD7sJL+lIIvP5a.ZdifcrV2wKxj
ThMc8tO4Wyr8eGO8Z3aUz90nWM8ZyLkHicd1v3oed1fsVBNSxrrMjw3ejQEE
bGj6HZ08lrVcKlb+vSM7d340fqZfosGJ20ZY9e8k4a3MbUiZ.COy1YIz0rpw
mKzXv28KkUGNHiqtzI+2TLoRUA6pWPVO5nig9MGRRh5elJQRpSYJKlV5rkW3
rmsaubXKdQh73o6zgHbD6oNw7RgCea6aVJFGpLK3qStapB4NlWY1+gP6Wflt
S3qgl5g2.gvVqdekOU23lCXhFHGwxTELgn.zrR2.XMJfmYdXGDDPiFDfSHHf
L6CgaDHnLSc3mr7D9OGgcpnYXe.U6ObfY2.44e7TqMbCI94cExtpI8sVrMkq
6tCtFDNeW20.EWtSH6tWTGZWP50sTWtK6FX2O1aKj0B24O1ADtkQ1BrF3.8I
bfYU3rqUErHHGFZivo7NdADN0pxncCV+BGHbrBmmYDNfgfEbTfdOmFcksyi0
hsZ1wttXiFMlhqWoH0q.I2vy2preRw1pN3J1ubPiQrUqCHofFV+lJAzbwzHz
9VKzvQIz9n0fZFeqkbO7zJ4AVK4fQI4Hv5PDBgwGkbnVAOLZhjbfUJJ3kwfF
vJEBPvxXs0pgBTq.3EP3PgV0r5NVgSQcsxPkYQxfBNdwzzdilGoFBhlSodlv
55wxfFZKQmtXZ7jALORsWDTCulM2aMVaXEaJzqmIoFA7mQMDDblzqwyYuQzL
0arwYm4QpwyjFR8.uykTOSXsmq2b1aLZtFkwaFs7ABlI854zDxLgzHu4zZ84
N+LvaCsnkw+MqDN7xPPC1adZumllUqFNS6L2nh1A54pi1QsiIqeEgX5SMcQ6
.rVxGUDlvPnNBS0VisVxCPSZDl.Wqkbz3b7AcJfdjw69ISnsxw3nwplfBCZI
xgvIUCIvVQdT5GXH7jHiAvIEk8sUjGkhA1qEJiwSqHaU2PzfgNODEud93Vu9
47ZlCnNWAqe6oZhH7ZSes8gSY0HcisBUySEz7VlA4BOd0jHzdnO0z.LjTiPZ
q10uvNPM9Vz9pl4mqt9gmJEKHxF5Z8PKyjGXEb6gFKdOM5BV4goW3m1iCUBx
S+efehLUx
-----------end_max5_patcher-----------
```

Yet Another Plug for maxlispj today — if you want to do some serious

mathematics, you can apparently run Maxima in maxlispj:

http://maxima.sourceforge.net/

brad

http://music.columbia.edu/~brad

On Sep 23, 2008, at 10:29 AM, Nathan wrote:

>

> Hi. I’m new fairly new to MAX/MSP and I’ve been playing around with

> it quite a bit lately. I’m really interested in generative music and

> would like to apply some complicated dynamical systems and

> algorithms to some patches. What is the best way to go about this?

> Should I stay within MAX, (I feel like its mathematically limited in

> some ways)? Could and should I integrate C++ or Java Code into MAX?

> Whats the best way to tackle this? I know a bit of C++ its been

> awhile since I’ve used it though. Thanks!

Hey Brad, is there a good LISP editor/environment out there

that would help in developing LISP code that I could

load in maxlispj?

OK so I took the jit.bfg a ways further. Check it out:

–dimension controls (2 to 256)

–automatic movement using XY and a scale

–stripped out the controls and function types that didn’t really do much (don’t understand why, for most of them :)

–normal and inverted weights

–controllable fade, biggest effect towards maximum values (try on video too!)

–record/play back/save every control you change with the good ol’ mtr object

Hopefully this will provide a lot more ideas. I especially like the motion control, this frees you up to tweak other things…

have fun!

CJ

**all**of the following text. Then, in Max, select

*New From Clipboard*.

```
----------begin_max5_patcher----------
5008.3oc2c08iqhaE+4oR8+AZz9zpYlh+F5SsRU8spJscenUaWcEIgLC8RfT
BYt26tp+uWarIARfXSHfcpz8ljAHA6emO84b7ge829adZwx7uFueg2ev6m7d
5oekejmpNl3HOUefmVrM5qqRi1WcgK1FueezawKdVcxx3uVVcB+iGJ6v1jrz
3xpu.r9numrdcbl3Pf5Ckrt5alu7e+RH63WeWQ793rxnxj7rOUDupTN.QL+W
8e1CGHd0W8h2O23llenr9td7VrIOqbexuDWcPw2Rcb40V9scwxe8EKN8SsKp
b06IYuc4MmT8JB9J4YO.s4sWbexh1V8qs3OUjDktn5L+2e6uQ7N+smMFhWku
cKG.tDh+SGJy2FUF6she2JxS22Mj2E9FDb7Z2T71R4rBHlMsdoAHzMUffpf.
PPnIjA+NICvSjgNf556Pn7Mel3Mn+rC1+0nrC7eXyQX18AgwTr3RCISE.ioj
S2.IG8zAuYwegCNWhteuXVAFkJCldUFnJtTDAMM5L1jlGUpQwgDrUL0HlT34
QDsoKlSXy2eFgscIqJ2mlrNtPGDkWj7K7abTZYQzpOyGyUBguBIcgX.c7mAR
kaHfQJSONJJy28QT5g3VJ.t.kSDJ0juc5W7i3hxjU8O76fT.kJJfL4a.oxiv
liyhj2du73PB3ebPsLujawp4YtYZDmogCGlqNlPzh93JzO.LHvWv2sIZUb+r
9Psr9bxxxHA3eMQ.pDoA3pgFEcod5xhj8bZojO30voPxXnnNEqC0YAPWF0IR
Ch1E06SM9tnO6kuYy93R9cl+utoKntnKg5oKRkr9Ta3ecMrSqdiQmV888tFF
9.JuX8nrSBojAYnDdyXFS46Frx5AVpsHrWL6Gidmu3g6OSYAeXG6wGVZzRnC
15y+B3vgsm0AczvlPGIPZYaxftIZMyPJaPrZfWIgDP.6VkQaAZPV0hfmeYTv
HwrfYEynvlXFbZwr9DQ2FWVjK79Zr7ag2MUal3+SPCniAmXYz9vt8wod3wAa
L+6lpsJXSq5MBj1.5PjIF5RiWqQ2ed1p7z7hFwDQrdTBMf17SsFgs.PfN9tk
oIYetLQNgf9WeUQW2pJUhc9g01SO2p5x2ZLY7ekDfQ.7y87olyn2xx42mzjU
etM3rYSqePLIH.hO4Cl3EFihY.ue9loQkQK0Pi3WgJTvK1kF8MAW1d9JMEuW
DGsV79WJRJikGX0hdHUvEmVrrX0lb4nVyN+lSrVT7Abos4BN5v66C3mnhNvm
ystb.l3GFHtb.mFfHcE1tAsTjkb2IiKZw9yIlbtcH64d9TiaUeqo+LM.mOKX
PBN74N9P6vO1anWU79PD7R2vkD0a.1jHQaIGePHE7bOep4M8Vtgb+RyVGWwZ
Re0+JlaayQnmC59adtrvCP5Q7jZpQFbe5Ho2lCz25+utQc057BTqVAHbHZBM
M0az84Xzx3BurCkkIYbWMG0hWv2ojqv7kWJdxRthZMi.nD+8QVJ4J6iW4cX2
5nxXyisDlcuP4.YTWmLPVhtjpWogVBh+yIhQDepO.DldmRRnzGJ.DOYIITlV
E.rxDk7Or.F+CCiAFcefWJt5RmLvkh8a.tHpcxP3u6EuW32TeBbTq9BCmy7V
wBTgOVk0O6jtuRukdaFmEMvfVxpuAKYc.nmTdFMwQKY6gzxjyR6293RNXwuL
4.Rx.9r7cexoww9cQqToOCXr7OJTeJopDpg8DCdQYevsYFc9ssK5ysDUTU.k
kZSwROD7uxReqV8d8KsWK26beoq7qheo3IHe1fWGkVAj1ZGfQk5i8IVq1AXn
4TbnOrdEecTk8kYbhgvcfgvcfQnMdvncyEN+rAQAhpVfBTlOJjsJaiJEOiKh
2HpNrmBkr5Dp0Y0k1MwzGY7lLmNbPClSfankC.Re4.n70z2QKBCI7RZfts8D
lC.Ia4PRUw.3CcfhD36qRzyHMOhlUmlkYnPB0Xnsj8GqKE.aH2OO9FTl+1ao
CXktP816YxxMALHSNCOcNJbR4SaP8qSPTb+OxrrBGWNVQ92MtHi0tozwYIit
2C+Kg8U7Hygmh9GWnzz6oXuUEgnlv9tQVZD9CRqe3MW3RPU3AoUhiXkymSWl
8qB0+wo1GQEG+okm5mf+7.Ts4i0EZjKSCY.ymDTkupK+z.StHVOuqdAeHk0n
JGQR0hn97qQiSMbvt9RAfYs1L31V1Ems1aYz9jwkAGH.OO79HUcEHEAj6pH.
ax38OrMN6vwY1ZN8qUkFfBgfp32b4mNOe6ZjJZj+RtyBsSyKAFhkI28hOYRV
84nXYw170sEJdO0zL82m3yQoTn9HwaXl3UwGCVOn3pTCgviiLLAGxWif17vi
.MKBYP.9R4yjx3s0kqwljTtAzW2mjsRLddV7RYQT19MhiF8kiGLKOYe7qqhS
SO6PbFix7hx30mc72JhVmDKmpMN7G4E47Oc9QEk4+qqxy9HO8fLwSpyuoHZU
YT5qa4eqKN36w7A+kGtJ5ru992VVjrtmSxOyawWdxxCEKOjFmIzhdhInfKR0
lg4h5OpmJQpKAxi7PbNBEYXDtTNQ0GJPqW3To+2DaTx2TISNYN1QkWofu4NN
oAjahnZCaLgUIrZmhnWtEcjHpzQT5i0VlBnsHvat2mdgL869IhLvZ00KgeGI
Eo8tehz2le5zIRi2T1bRLAaTX9Lkyu6srZrYP8szjFPtSEA.DICc1zUD.0Am
SRb.3oMQ06hxhGv9AV6t+qFfPzAAPcVuupzMq3UIZKZUbHNDUsLjK+TeUQGZ
91EYZidDRwaQGeXi4qpgudozXi3BG0VKqtrfjASti809pnL92h+Cc45+l5nv
7uSJeEscTqgRqsQJaHTsgG5FyKCQleSRAIzRakEkPo22AT+ajgfF3aJIfArh
KeJGTjK6MjMwK9cRLOFNTyii2NmSalKrufFdsYzfsWQ.AgPzyc9I6auJDtvo
s77+4FdBAKleSHp9SyLYBoWUY+kn0wdoweLDQ1fvYWEFi1TTOHvR0q6eiqvO
IKJ0aaDW36qC.xnyNjAagX1pJxE7Wq8d4Euxhu4sOear21bgOEdk4d6iGPJg
Cle6ljVPHzeha0QWM2bfwlct.7h4wIMVc5f8aTQQTKVDtJuTCCGY42FbxSkg
THsxA246eUSySfAqEInU+0QZclvthyPWYKTdeJ61d4j+5Fg4lwxICmINYLso
al3vokSdnNMF.V3JU4lhETATnPck4VGY9UHeNEnpv8vceIIac9WF.zpcC2eC
xo0VSTxoxfXT81DTLQ62EGuNMYqGYbo.hENWxZflqwP1BCm+ZIRvsToiZbfV
vcayuvGPep1WSSgPk5JxzBg86irrASINeT1ZgedBTc+tjzzm+WY7+LZ0Jt8A
unzTuzj8k68Rx79Gd+yi+RoIYwUE0UKHSqPKaJbPDbUGDQp.PnxyNAnxE4bC
4+36I64.8Nu7rXuuvAZOAEn783J.NMN6sx28DDipxuwaWQ9t3hzu8r2l7BuJ
Ji2u2qKOotURAd1IEgmRcITt8mlN5Put2z.sGoONLzLo2E1xackdWpy0TlZB
Myk6e0kOir0AYsRLXjFv8mqk8IAKvrTOFCNgfTmwWYUKJTsAeAVo+PdODCoj
4RCEng+LNqTXSjYtzcW2ji8eXPlYak6Px7gLmUe35UFAtasyMiKX6l6RN0tz
Fzy5ygcr5b9xTm2FaI.FL.1p4xFG4DHZsmgC+P+UbXmswZ1rG1brpJ2Hm1Nd
SWPyWdnrbHsnFh11P+MrOnTOcOTbFz5WGQbcFb2JG6LN3nxSh5AdB3gnsiSb
mXopV0gUguq0+vkgPXfsObxrslMTimMIrINDXCpmXlkWrMJUVSwh5Htm9eYe
waEc09NILTz1Cq1UXXD.U0GHCw..iZ3dY4F6TjXHh.q5PjW9IcaREkNy5F2P
GUURm8JRiukuOJPZNDkVmrk6GA+elKHAmMAIY7flm1Wx.cfFO+9Oq1l7DGy+
4ghbn4G4TNE4ZHWu9W+2qru8xKdG1G6kE+VTYxGw+qrjMdR81M5U02Xzwgye
zwAgjlOSz.roM.48pzyqBckYHRiRuqGVSxrEiEUR0jgeRYyRmlvV+dwEJnpF
qdRrgKi47R6E6wwFi4mVzXQT0sR4pHxiTsbzVabHQccjlu5yxpU0+3QWGuYf
+N46hyN8UNq.Qt7RSxZVc3WbyiNjV9odf+1WPsC0ce1tA0mV7VQx57Lw.o82
Ub75a4OoV9Yq1Bf5Rxh100WuLOOcYTwGI6SVlF2ltv42i3pohJiurGwy4K2t
qHQpE3zA2FWFUWhPhM2YyeqSOyLaxVzRtp8INS9pRb4HfbgLjeyyz0NJ5JxM
FzlT5OPsRU8MaXJsfeYkSI06JFSKNdbkRF0Ge9lAl1JdNqjHpW3BPr1kpJun
eHj1CDdpSMqCC6S.vjF1SupwkFPkZwkkzYKcQWUQ9iENyrINKU16.vbK2652
6h9aeRWwWugidc5yWuwJU0CfQmdn6dIH1crLbe7Mz93qpi843.7UzSz7gQmm
e+DATODAj+jnhvXNaktXj8TObitAP7uY+.LT+I05NBbqPCXpgFU.JsI1HG5C
Wq2of3dkUk1+CnQYoYEL14cCOoEq+tOOoqFBhKnGDYe9ghU0ztZ0IdmMdVGu
uLI63pb9oS3v4W4oUq1BH1lrdWNWsd6V7hQDyAOADFkLaBTMUg2xD.PvUo8T
0y0Pni+0zN0BFzTCbKSM0NvSFG5P5w+XRmXB2bMah0ED3.LcDikZ5Zp5.S.r
wrVcIe4BT.fwT.2jEZXie7C73mc2G+0mPLUp2tYQeDu9S76G2z6mDc9tjkGJ
klIaGCRswe6xy1aP8dKMeYTpJbmGc6cwfBqm1HG1qK00XxbTo.PlqUo.0ajb
jcdL6H1bG4679i7++8iq8wRrxtlQswxkNjSm3lGto6VUCZdl7u19xu0NP0s7
VewP2Wp9uhEOKDq5MFW9owtMUgxTPgT8Sa.8XZ+arsbOJgDX7VWcRXnk6Il+
Xi8yArcgiM7FD6ci41.nVsmNT0+Bv2sdnND3NkpVXir500SmAKWqUE4xTrMz
xsZt1zlPJ5T0VEPbK1Lf6TSe3lYOlhdHJIR.zYfOkMCqBeWSLsNJ1CSHELak
vPPyZhjZucVsrDHESnwXIEfshehx5IPkiaJzdn3xMu4A7pDePPgqRd8tYI5r
347sH7cr.jl382+PedyfwKt6O4XZjCYYYbS.S4yMFz31mnXxL9bigz7Yb5Dy
JHDY1ra+aGRFv1AHXwEM4e8MOGieZdPfDbUcKCN6C8Wp1TyWPP6mg.WswK2a
5opWNLV0OWXH.i0S+D5Z2gYYCH9kXQW3z6kQ17Sor4pzpYMSfLYh2x881gXh
S878.ixTLMP2tUXvOkeqe2nMaNweNdnEpiwaj7cPvbw2UWRjMrIMc7c2TiWh
DNAMdoonuKMasj4P7roU5NzakkWb6Dyq.zyyqRMrdQ9TBamnv9xFm3wLPyKq
CXr6rnzI413QmHLf5GcmOGloAGHvjAm3gorGZ1GbhmkqFPWE8NHtNpYe3c4M
tGzCaER6YYe95nG1VnGV6.LzJnGxHcJD6nRAALYvQsCemnomZLe20Upb9ZFZ
tVJLCS.M2TXSFKJR2b47Y7.mIHLwOLXZmJLPqpb55DEnSOUtbP18j47orqRU
LUTA7HPU.FQUbbYEyT8izxdYOAYlc7ljQMF47sCxocvc9TXtrnODm07eDzDn
eQEgNul.wCGPSsZF9.PTB0MUNeB6pzDCkTBd.nIAFQSba4DpQZuv91I9KDiV
rTXqc3vbM3nXiGbyuuFfA3dJ6APTioUTy8cNE.MmlPe.nITszDnySSfLyoIj
G.ZBQ+Tw4oIAlSRvO.jDsgIMv4oHjADMezC.IQaXAIX2mlL.K7OBQETaPAIt
uE9gD97Gg.AnMN.O.12MzoK6r.mKtu8L7nA1Y3QMyVLMzhnm9f7PYVB8XNM5
QMLvk.KQbglQboVB8LKXVThEGdFF+SGWENkXtYUGepXVI6XGaQHCMEYmAGxX
jC3nHGxN1vwF4.DF3v4NCCsCxYT9ZQTqvygMZ4e.pKibD6HsZjg6phHyBCt.
iGb1voBiFbVRUBw3AmERGC0XUI91Yv4ajzpuiVHwHjCWB1UhMPGs30AVRUB.
6v4c9h8aPODVe6v1cw8sugG1hnm90dBF7vC6K2J1T4ydYPf7wxllsZ6.vUrK
uaTLSaikb4a.CNKX90n.wAryBzXFgb1QMsYlPriRZfQq51NNixLQAnkDTMSG
mcTwwLKjz1wrlQ9DvrTlZXFSUANJKGwNoAAalinVZCnZj7.wRQVzHVNnUV7C
x3w17KNXVkaPrzfCa7fyUWRK0N9iPMhrhb3wlcVtH0nDT.ft7fyNdYZVAECP
NbEnWM3rPs6aj8A6XV0nkCN3cU.xu5g4Pf5QBHQ7Gg36TfSLqVHH1QJwvAG1
g6vHTnKO3Pt7fyN9saVIqXoRWppn9zGcBl8FbFDBVGturXoh0zvRIMzgkVsT
U3RPtaTmnFQUoVJLmFVb0tLKmkpsHyBdskVQFyoyMqKugkgtLx4xCNLwgGbl
E9DlkZNJtr0KfwcUl4OH..jCyx4xskACyXcnCmBQVfUBJlYMXu.63MWfQBqA
1QSR.zgy9pYBDA9tLY0RcbRiR2TfkpyNiLdYGyCFUg8gPGtDSBsiVtPyFb1g
iKzHVtvwKqJN.+s+GutVGnB
-----------end_max5_patcher-----------
```

don’t use jitter (yet) but am admiring your patch with ignorance and awe, seeyajames. though – why not use presentation rather than lock/unlock?

ps – never knew about the mtr object. quite awesome, thanks for showing me that.

thanks!!

I never have gotten used to the shift back and forth with presentation mode, so I still patch like 4.6. I like to have things stay where I leave them. Still, probably should get on that… there’s good reasons for it :) maybe my brain can’t keep track of dual placements of objects, I dunno. Probably I’ll just practice encapsulating more… tho there’s pros and cons with that too. ack!

yep, mtr is pretty awesome. I use it all the time!

–CJ

Quote: Nebula wrote on Tue, 23 September 2008 09:33

—————————————————-

> Cool. Yeah I haven’t really probed deep into MAX’s mathematical structure. I’d like to do some things with Automata over Algebraic Cyclic Fields, L Systems and the like. I know things like Markov Chains can be done with ease in MAX. Some stuff with the automata becomes computationally intense and often deals with large matrices, I didn’t know how MAX handles these things.

>

For L-systems, automata, and large matrix processing you should definitely look into the Jitter objects.

The suggestions to start out doing everything in Max is good advice. It will certainly ramp up your Max skills pretty quickly. If you do use other programming languages in the future, chances are you will want them to interact with your Max patches so you will need those skills.

Depending on your background, if you are comfortable with text programming languages, many algorithms are more easily expressed in standard code than in a Max patch. When things start to get really complex, I definitely can work best in an object oriented language like Java or Ruby, so I tend to use those in conjunction with Max a lot. And most programming languages have comprehensive libraries for all kinds of things (like mathematics algorithms, see Brad’s post on the LISP stuff). The important thing is to find the tools you like the best, learn their strengths and weaknesses, and figure out how to make them work together. Then a whole new world of possibilities will be open to you.

If you are interested in Java, this might help get you started:

http://compusition.com/web/articles/maxmsp-eclipse

For C, I believe if you download the Max SDK (check the downloads pages) there’s some instructions in there to get you started on developing your own Max objects.

But spend some time with Max first! It will be worth the effort.

Seejay James schrieb:

> I never have gotten used to the shift back and forth with

> presentation mode, so I still patch like 4.6.

Its even better then unlocking/locking, just open a second view of the

same patch, while you patch you see what changes in presentation…

(no need to shift at all…)

Stefan

–

Stefan Tiedje————x——-

–_____———–|————–

–(_|_ —-|—–|—–()——-

– _|_)—-|—–()————–

———-()——–www.ccmix.com