Category Archives: Assignments

Project 1: Baad

The concept for this project was inspired by Rational Acoustic’s Smaart, which is a software built to assist in normalizing loudspeaker systems. From the name, Baad, you might be able to tell how it went. From the beginning, I have had the concept, but the execution just never got there. The main feature that I was going for was the ability to view a spectroscope showing the difference between the output from the program and the input coming into the program from a microphone after having gone through the loudspeaker system. In order to reach this a few other points needed to be met. First, calculating the delay time from the point the audio leaves the software to the time it returns via the sound system. Second, averaging the amplitudes of individual frequencies over some period of time to both smooth the information and to calculate the similarities between the values giving what is known as the “confidence.” Finally, doing octave smoothing to make the amplitudes more readable for the purpose of applying an EQ to the information. 

Here is where the issues came in. In its most simple state, what I am looking for is the spectral analysis of the impulse response of the audio system. I began with putting the direct and received signals into a pfft~, doing a cartopol~ and subtracting the amplitudes, but this did not give me anything close to what I was looking for. After a few different variations to this, what I found gave me what I wanted was dividing the real numbers of both and the imaginary numbers of both and then put that into an ifft~ to give me the impulse response signal. Great. I’ve got that part. Now I need to plot it. I found the vectral~ object which is meant to plot FFT’s, great. The issue is that when I plot it, it doesn’t give me the information that I want. At this point, I don’t think I ever fully accomplished the first step. Once I got here I played around with the console’s EQ to see if my plot would react and it did not. On the way to the vectral~ object I ended up in jitter world for a while, seeing if I could create a matrix with 512 columns and 83 rows, then using a jit.gen object average each individual column and then plot the resulting list. The issue was inserting the information into the matrix because there was no way fast enough to increase to insert information to a new column every sample. From here I went into looking at nested loops in JavaScript, but my issue was not processing the lists but creating the lists in a way that I understood how to process them. I thought about the capture~ object, but saving and then reading a text file sounded like a lot of latency into the process, and it sounded hard to update as rapidly as I needed to. 

All of the research I did online on the issue would relate back to Matlab, which I have never used, but also only mentioned if one is comparing two pieces of recorded audio, not a constant sound, and that is an issue. 

I did a lot of reverse engineering of a patch Jesse gave me, but there was too much excess processing that was unnecessary that in trying to only use the pieces I needed, there was not much left for it to function. That being said, this is basically where I ended up. I have attached a googleDrive .zip file that has a folder with all of my patchers in it for every direction I went and I just never ended up in the right place. It was incredibly frustrating because I feel like I understand the concept and what I want it to do fairly well; however, I also know — for most of my iterations — why they do not work with the understanding that it just doesn’t work that way and there must be some better way to do it. I saw a lot in Jesse’s file that I liked and that started to make sense, but I didn’t understand enough of it early enough to make some sort of adaptation or headway in any way, shape, or form. The one thing that I did accomplish — which was incredibly simple — was to set up bandpass filters with different sample rates to get more FFT information in the lower frequencies, and less in the higher frequencies. 

Some other features I found on the way that I would like to implement if I were to get this working in the future — which I hope I do — would be to take the mouse data from the plot and scale it to show me the frequency and amplitude location of the mouse, and for the program to recommend EQ changes for either a parametric or graphic EQ. The former would be incredibly easy to implement. The latter, however, would be a different story. There would need to be a lot of user input and then trial and error processing by the software to find what frequencies, gain, and Q would be to flatten the response. I would not want it to apply any EQ itself, just provide the information for you to do it. 

https://drive.google.com/open?id=1pNg0h2ZyvB7unLQKF4hjsP-nD8riRMog

 

Project 1: KeyboardJohnny

For a while, I’ve wanted to get some more experience in Javascript. Whether it’s because I see money in web development or whether it’s because I am drawn to masochistic scoping and global variable practices… I’m not quite sure. Regardless, I saw this project as a good opportunity to flex my fledgling js muscles and make some dots fly around.

The product is an audio visualizer comprised of two visual systems: a point cloud (bunch of dots floating around according to a noise function generator, connecting to one another with line segments whenever they are within a certain distance); and a particle generator, called a particle jet because I want it to be. These systems are, with the exception of basis function generator and matrix to calculate the point cloud positions, entirely contained within Javascript classes. Heavy thanks to Amazing Max Stuff for teaching me how to make these systems.

Informing these two systems is an amalgamation of concepts we’ve covered in class. Starting with an audio signal, I used cascade~ objects to filter it into two frequencies, one roughly representing the bass of the song and the other supposedly representing the vocals but, in reality, just vaguely representing the treble portion of the song. Once separated, I fed the two signals into FFTs, then packed the bins into a matrix and used the average values to calculate the parameters for the point cloud (radius and line drawing threshold) and the particle jet (rate of movement/emission and color). The point cloud grows whenever there’s a bass kick and the particle jet spins in circles around it – it’s all quite fun. Here’s the gist!

<pre><code>
----------begin_max5_patcher----------
654.3ocwW00jZBCE8Y7WQFdrikgD9z9Pmo+F5ic5rSDC1nPBSHr0c1Y82dCI
f00EowJpu.xkaxImyM2bvWm43tjuiT6B9B3G.GmWm43nC0Fvo6YG2R7trBbs
NMWF427kabmadkjrSpCWwKj7LrXe+aXMk7FYAQpGFpKpIj7kJhAS2Z5ZFtvc
9geA9YWpUXY1unr0OIHYRS1god9yAnEIs2h80Of77OLD5J8ZQs99bZ+5nV9R
gFL2iVYT1gEVar2lMq8x7qSBxykJ5sG.GVB7GgWZBEfVzdKJbLdEdC4UFurj
vjefXYMRddN.WVUPkMqHdfuSj.IGPq4EXIArklssteXETFIi2vjGW2sVJPHX
K8S0WgQ5ZbPvvZQrkZAb5pwEb7pRRcMHIxa3xL7b6zGcmMLNtkogQZxiFaGP
vMj04Eb0bbgsvsMuKwr01PPScMZzV2D2CSi.WRjDwSDFdogq8acx4hRrdtiu
6aB9z9KrzawQawodIQpc7IFoYgWz4EHXz8+vsudC3LLvzkihsfyg2eNugJ8p
3aI6AKUY9sxpZ.D3Oks88bV6qAChFqs3ATzU94RtxY+lZpaz.n4b+wM0QODS
cJ6rd5AVq.V9AN5c.PiWPxXRA7+vEPOOZ+4S9hO8JoM960mZdiHqmQceTE3u
qlUjZk1fkTN6nbBM4LXE3RvAZANvqDmDK3CbJ.JvBfRl.gCYCghdWRbwJh37
FjSJxgCir+Ug7I7YXnSeXHeST6STxQJzW6NWnEshuuccpDW0jhrPamBB9uTR
zDzZZiPhFVH+3Y33ppmIh5tQqwT4lsgqSOYt9QJy7n1ixUPdl1mejNBVnbej
JqmFgw+XWp4OT4VxU.yZncXqP9sY+AvDOHa9
-----------end_max5_patcher-----------
</code></pre>
view raw fft_bass.maxpat hosted with ❤ by GitHub
<pre><code>
----------begin_max5_patcher----------
759.3oc2WkjaaCCEcs7ofPKKbMDoFSWTfdF5x1f.ZYpTlJQJHQ45ff3yd4fr
SriFXpkhA5FYqOGd7897OnmV33tluiT6B9B3G.GmmV33nMoL3z9tiaAdWZNt
VOMWF4O70O3tzLjfrSnMmywaJH00.n2pCCxZJ3MhbhPuRXqUiIwikDCrttfa
aGpDKR+Ekc+cUjTgYTXTzJukfP8yDj5IR973RnazvKORe1+.t0hGy0at6qNI
T1wChx1yKVndr7xXcIOWvSwU66lxn9nbM8dFN2c4w+MjDD.Ur1Gdi5mHugj.
XhkZ.Z5zfrLgje6Avt0.uQIVnlRgACRr34jXMEqIUuSWnx4sFytePWm+MwZV
4oIW3v9tH2iaTEtfHHU2QX30F15Mi2smO5mnCagggVPez+gzWeAGhPVPeuqE
86Mplxx38jXKnOcgxDJo4s+LXBNOzK43kxTX+xTvLliOkWTPTm3yjhzFAOKC
fKJyohlMjUfuSD.AGPq44XAArUVBHu9mrCqLmxHo7Fl30WgrNqHxbcINToCP
ysFe+tkinYTNxx4x8XNhKZqoahNFNrH1lnhLdUAVu2Qe3wIeZ+6raGKJ3Gkr
JV46iMRyMCEP.C+3q3+0YfyP+1bkQVv4fOdN+.Urpj+axdSz92JJks5B7lxV
cOP5DsP3mLTbwUvqKayUvkM7Nq85Zz.HBNdutnqRqtTVuc55asBXYe+5tlf5
.hf3Aad3enLfdezkpN6y+zmDk8S0mZdSU5AF0lZF7xoYCoVpMXAkyd0bTQpx
vja6zEXKPp8.MFPQlSyECDbLfPSDPiJcdS.P9V.T7DfCxFBEdxj3Uajcc2aw
3IE4ftQ16hPV8s1iC8TntZjf1fzkFpclOpajlE+nUHeljOUNx.au8dwxqEYx
lJbFiPSQdLnE2KQmLmo51hMADIcir2aJBhKK2RppaWtFTY6.Ov0SOdo9UJy7
ptHuaEYK8v7C0VvUxx2BYs6lJSA3cIlONysfKAl0PaYsD4mW7WvAWpNg
-----------end_max5_patcher-----------
</code></pre>
<pre><code>
----------begin_max5_patcher----------
5562.3oc6c01iiabj9yy9qngt.bN2MVl8K7s7o09Nj.eHAWPxg.bv1X.GIJM
bWJRYRpc1IFd+smt6pIEojHYSolhZWOwwxCeuqmt5pqp5pp9WdycydL8ig4y
P+AzOft6te4M2cm7ThSbm536lsI3iKhCxk21rjvmSe7cytGtTQ3GKjmdK5c4
e+lsoYE4kWKY2lzcEwgExGzRc1sAEKdJJY8CYgKJfOLF6L29dD1dt08HGewu
DxbKzOodjnkxOA+y90NNku87hWhCkmu12KJ4jetvLEAonn6lsJJN7CgY4QoI
hKguWc9fsaqc56p8HBX3coxWj68UmJJANEs5TYgeHp74sqNaPFmnK3T7tLnQ
+QuRJQ7ZRWFlkrKR1TfS9quorIsGmrDHi7GGl7+v7r1CS7Nt0woKde3xZz+c
yR2FlDkrMKLOLoHnP0xpt7xvUA6hKdXUZRQdz+T13vbv+TWeUvhvVe3jfM.k
8sYQAwkz1r0YQKSSDMhF3r3zketeP0yK9cOwHuijfsm3g4LBbLokKlyIxc4O
FjI5FdDXQHkWrHMMt4kpdt3vUEpKuMJI4.TrHca6WLKZ8Sc7rOlxu3ltd2xq
j+vtD3pOvGrU7PdvGZh1EAwwpQeMe8eLHIZSPQXQDzEPrptXXR.mPeJeQVZb
bC5EtxGNwUVx4fWD9bzxhmjen5LC7aOZaISzrpd4kQqCyKZdthf04MOyQCY4
mZ2ipQnOTDtYaLmJZdCMjOUe3Xc4TMNeWxqZJy5c4n+ZPVQzh3v+AmgJMa96
xqeiMEfgqcE3zEurUw.OaVEiaKx3XVtRYbVxAtXKuCkxcnjNra8lxwP2QR7p
29D7NKe.Fm7PPQQVzi6J.b7tivKPZX032tfDAokwuwBd+Ev.I4Ppt9u9l2b3
ewEjMp8b+OgEiX2FEaUqayG2auFYh60NBNtk5xRiRJ9uhS2sbD6wHXb8dLZe
8Xt3opGqEz3FbL1H1cgI9f.QY2kqcecWNSsXwa1NqQeJLaqA0SMUiqL17V60
EMNJoTIDzO8l5pm2WK8WNGMm3pw+XPrRunJ5pK0n1qq0a1SDxeAtMcLraQ5l
MbSDNxxNtcCK4LBnrfkQ6xQEonhmBQe2e7OkiBRVh9GQ46Bh+uyh31MU9rB7
ZQ5tjhZJequ4f9tDgDblMArJPxuQosXPnslFDhOCHYSXddv5vifDET76vm1T
WEmbGCwNEY64H0tfQbjV3Y0kYv1dZR0DCR0aUR.+abkzMLsyHz4t79baL6z5
Y0nKeLI9VbuQz9AFZRuhmPGRl4BN7vWvy2JISFQRNeKuQkklufaK8mLYuJXV
OyhByaH6ZYNmlBY1iHEtJNk+NNMoQZkztGM6wfj050KZKIR6tG05Oq5MchYi
TWaUZF2XdwYbFOIasvluKYavh2yM4efrAb.NPS1chqT7FsSfxc1UmzeWTwbZ
K7Hrt3Qp92NIeLcNgS9TPzlsUWi1scFQxe7FsCZxq4vc2quL7sqVU7ID+mG9
P5hf37AR74QqSBh0ABntRMW775hGm5e84wyPOZxdbB3EZJFlt1tKxknsi6M6
PZtnzrnOhdqPMZjre+a2rMG8VAMhjhsnDzaWFsgOlDgQucabfR2UDY.py15r
H71vCPanWYDkvIUsBHRTkZ2B6iy0m8giVKEJGxgJSxF4PgYMoRFH2NW+G+uX
nZOGa4b.NN8S0jIjpICVYfNIaeKvpNhrO2izEY6NkjsQoZOrzjVEU61ojxwb
fca13W2H94uKGsLbkvkGRC7y1kjKM4eYVvyBGArMKcQ3xcYb4moYxqrU3JSz
BguL+wjSJ0jNXm..V+6ZCtGzCzlvsEHiMAX1elypH8KR3OuKJKbIR9HbPSfJ
GBnEonmSydeKnyfcQB1yubES62CI3I.b92Poq.1hgGN.kRFYrZCVrZQUY6If
3D8cb99rv7mRiqwwqe2mkkmjD8Y05.akFs9rWSQNAKoTGGR+pJxXinphs0m9
+8TTNhaRdVZRJWSQtBaqWGlk+G9wj+2UqxC4R2BhWrKVF.E+XxeCb.XN+jbB
8aZbsZBCKEYdxA8rAy0.i1spOn2oEdFFYBFWHfiPt50wQE6VFlKk6E79PX1i
ODDuiOiQV5Fzi7WjPK7e.+SxYXjOWNJpPHlbC+I3SwH3s3OGGAxQOErcaXBJ
JY+jMOHwWyfqtttf9mxoncocgqzoPdSdbzRE.BytHArknfJn1XyqXQjFshwL
Hhr5blEB9ydASt.EZKI2tEKYe8MfU1wabWwwEF6BJU4ANroS2Tnqy1o2T9ks
hFsw86WVh2MieYGODozvKECe2.h83.HpSxOUzFNUBAW1MEJ4wzGkvN21nzUU
nhRPpVxTv3OKkoTRhZwaXcquTOuCTeso9ZmAroCj4o74Smd6Qaa3GVjWzH1P
Zkh6J.QNqnoP364EgwwOJBI6AtpRwQ4EmdkkxRetAFztWjI1NvRLAAU.tkY2
qbwVqgv8AKGSsa+fvAe1ggP9s95Vf8r52XTJ9FXcKJMX5TKaA9FYYKHkgzb2
KaA85axv908Sfiivp9YWaQ+5wQ9Sfqb1hx4LAK4xA4B2FpDdE4euV.A3pNJr
B+c6Zer+.k1+kTd7PY64TvDY11fb7beMUddMUddMUdNu3etZc6vyGsL3gIWo
VBDll8G+yzgF+yWmHE+JfTXXF.sQJ7DhT.00NRX0S9AAoqJiJ4Mf.YfZ0AoR
ufnhuz+vhG3uvEoV+ghRVF9wp.lZz.mfjjz8S8L6rwMvtPsgMOCgZe2dE.ah
Zljkpoa7OXg1qG4YmA6lmZoJbaYcCaKxQlhgVcgCG1QLHTv0ZXf.61TR7+wm
NSAvGnJdOxlnN1mN.ya0U+5hSlTTSC210tEJZ59t9lCG7R4wtvq0fzrOW4cZ
24cNhqN1suiOm3hf7EAKCGa9Q03V.7cH8A99SI6nzZ40YAaepCTwsKTozKdf
uy69OJu25IMROvnJO7D94SZFo2A.YRoA+GL34TNoVKtaM5A7ZLX3XqLkulvB
nkozUjSB2K90R9+wTBdtOyA63JJ0E19NN997aYNl54aeesRfwI+Q9lpdYTps
+bB0wxiwO6bOpuuCU7Wtt9X6ddapD86y9YATKgutSBL3DX+yuIAJMOQ2IAHd
uNIf4XGwCZN.hyqSBzNLZf4.pVp+am4.3iH8X1dtXonZGhEwS7W1LKGO5.mB
fqumqmuKyW7Fj2iqkK1x8JJ6WBMi6fJr6bJ++gEStwzzQDCsNJX0hI0+cwhK
f96eOrNAZZZ8ISs9CgWIgJt9oA47zcYKJAJk9hnlz6xv7hnjJ2U7C6syAoae
7PaDzA0JvMtwMQKUgLMXrhsLNnofctTHjukGMVscOMa6BuXMdHnt.n+H1HHZ
CEj95FwTmZcitVicunXJS8a5iVqvVyVgr41I.5XUlnTx55Cs5nQpoKDMpUS+
3g5GzxINbiN.4x9DPMb4L0MNf.gg.0EzM26Pg1oYKgIJslVp8D7UsStDX0MU
cchCNMMgGGZhnIMMlyDHrtVa1nNG.TxZ.4ECiPpNZrZ55xRzN98kacxI7etL
XwmlcdYuAwGlEu52SlwVVSR0cYWdnQCsduZgEDqy58.gLADLwjDKkVOFn5rV
tfoW+ReP9pswAu7ITKzLU6v+QqXuG3zYx+icmwCEV2f9jLLwHOFjGsnXWhH2
qDQZIqJtGVkFGm9LH4PDlBoMB.CoyaRJVjlIHmCCvFQ38HahxWekPkzrn0bY
iwwgIqg3rfOUHw0kHb9HiJp5IyJhV79781wU8LUMAH0fKiE0HNn1Ri3m2EDG
U7xIZGhXFIuHKj+rp5EbkPXSJmHKTDBAHB5w3zzkOlkVvk9NeyVpHfJssrLe
EDpLPMs5rrPgGyJHD+E7395a1GB1OcSyqXzbQPQ19ZTZgn5Dt4WyTVSUz3DQ
nZQJhO3.QEoDrHA9D+a87i9dU9iCwa58xTBTTd4LThjCUSNpOT+cgnzrsDI2
lMMEdn0wy4i2dpdtMhd6hz3zL9fXw+fQuUjKoOHDAoxqZzag6VD6cH5UNneU
0rCUM5SECisEzu15N8t+MU9dTVWR.yz5ozdgu0y2CU5dL7rwGpGgTJnGWm0z
H1DTdVxaK2.5UWbWv7a2NoHuQjhJRWuNNzv0Uv8AfqPGrxeOIs4LQSZzlpEB
IbiRUGP4ukt6om.0x+YYAG.wFZszTSUvgfcwo6hs.9yx5tnp7vnktQrambwq
MN+phIhgqqpJXhphD2NG.PYSfQ3B8CMbYzU4NUU0zsaRlb8GyKpT2MKNPiPG
tKLose2UfPqqPFWdZZ03oaYa1g.Up4ynD83Ba7CpJzip9PzRQAgLlp8L54yb
II1cEAv8lOel2mzjIoQ4g+E3uIUYKI1Z1naNDVkXoNchkSQ0JCxqnnzDT91v
vkCd7fiELD.aCqBGtqJVEYJxxSTprPMMvN4CBCGcrGTmwKXueCmeiXlubZ2u
12QUfXoPDLX+ZJN9ZJN9ZJN1U7YV2axiWDvBCHIXK8h.VWCGifWqrL5ayQAn
EoI4g+7tvjEg2KN7INBEVVL4VEkkWfjsLzW87SQKdBsTPaajk+TYUOMhO9KM
qz40QIqhR3RHQRmrFl86UuvbtVGEnzj3Wj2lbRVYMvLN3kGCV796QbckQAbA
q7wEuTqpoJZH7QB0u24n+b5ygYB+muux48bTbLZ6t7m1+r4nU6xDq9R4K4dD
mDhCQYAbQF7mNp.drL93ijkhGbSij9rgyhcN2zwpTCYYrrHkM1HW1ugRFqt3
UjE.RI08umixS4n31cYaSy4c4xx255vjvLwNeBnlQY43iekUhtZd2QJJcWlb
kKZGjoWFHKm3A7aIqCLFOkYT6kDuq8u6tAkWDLDdQ8GlqNFJJWG8jF8ByCYL
yEBxPpd3BwPIT6DjBxCKUQgXmUWXAOlvxUJsR+OE981x5byt+l1A0MtR.Gqa
2+lYJaBSiiNvpuQn843hTk5ZAgCCq+cPT5sITsuFbY95EA.QX.hH8WuHrFpT
8qTFTApD1NLw5BljawX6K5a5jEPk.mJXawlNiZsu0RcC2QLdccuER9AmgzH5
LngITvA1TYvHhYrpiFqfFloaaeLC5ZcydDReAyNVEl0dvF.ssaYr5aeUiNec
omSf9sSPBSzb5IaCvSePw+asHKuUOa+3p0CcUBqs3EZ3Sa0dNU29zV6JA9Wf
tzFr49q8gLVFaA4urmsyqdz9UOZ+pGsOSet8+mtS3G03knc4gHYfjCKdKJMC
sJKXAGxE9jiqTcRNJ.bHqHn2yq15o9t+3eBbs52yO0NoSNCJTuj0hU+m+sQw
oouOm+kRi4nT6Nmy9rqlYPVWC6ChpBRkKyb5ge87AZnJJrQbhe6NgGlEaXK6
2vuyBQhcHVwlOhXiaQ.tEoMVvcki02Dv+CEqkzszG6Ycd+Q1RwL+g4mZmDq8
9I2yt7oA6RuM5mj0PgVcSl8sZO0yo66Q3CdVdOJMY+Fx1G+55fqnqp9Ueo9U
GAeUic1GsYJEm6za02zCGf.WC3PkhdtGIxEJHMEDgulnGnbf.eplmj8KkqDi
.tgEL.5pVFsZUXl3tqF+jGJVQshv3WFAISXXAYJ43c5Sxj2M+pyH31yAd+5q
JSFGO4RpNTlhPSyW1uRahEnotHlp.C6XHmcYb+kHt6g6lTGEEdSoHllgkYSH
WsNW+NLxZrb7miEjaAP1g53za43aJ8M5DiUvVGp9P0TVGuDwh2VwRNm97EDJ
CZTDjTK8rz3UOq9FpQ7uJCptRTODbu5S7deAr5utPTFn1wE5eUNMUQN5qjq0
yuG8bnvTyuAhp3QesO6RhCzR1G67iEVWJv41tRscIbc5sLdpopzm0iYXVuWZ
FeqM45neVgkvTY5CkTCCkerKn7Vp3xikZOZqavtPLU3K7UfS.3H08u.pTmOk
QzfbB0fEuGQNy4SaIR96C2A9TMhtAueysj8pLKxln4J16dath8YMRJZiiRL0
pFBvDqWk1w1SHL0k1FPZ5003uKCnrU03PPYCa2a53IpKfRxNMpPE0gVWur9G
5MkFBdcBmc0vLpESuvY23087q3V2iDPNOVK8RM.O6Zhrb5EKctQ8dEW8NQr.
nVsHgGaQiloRXZcSkv3diCK6IbHYWdY8kZ9OsoqQG1xg46.EpvZqCPW6OKt2
nNc9ilANT7EZCG2naWMBsveb0ZDtVF0hHn2BivjKA37xUb85nmtZ6ihA6r4D
ZupMPdEY0CYUUbM8QVSjvIiRjkpa.UZ2a3y4KifRJThGwLZ0QiTnLZarHYT0
V8fJhAyt5nqYjLZOrnCsexQs+o54Wcz0LPFoFKPScfTpm5aUu6w2Z7Jy6DS0
U.E5TpOtdOgOd7Js4CsVUOsEX8d65IdUiLsaLx7pFiw5Wv3GF8TxPzN8LNCM
I5FH5zwLR9IZuOFLpkgecYU6sV1q3NYPh9ZSnUGcU4U0kUs+cWiR5gVt+XUd
zUMd30celfLpYMgqwz0vBxCUHqIpjncsyZBWiorQC5oRhl00UhFVakmrFStD
lo3RrYNk3nUCtjq6NeAyTbIUzSCEgZWC6IdWun29GpplIOsVLfMldpUziUi9
ma0bep+b4h4n1SgTA.09itpcPVCbmFRWBpr+pcBBeSrumzw7F.OlRaI0rHcn
szzROX8oGPaIhSOZKY8EQh6IosldiBxiuC6HTYyW240baddpllcGkvf59g7z
3CUZWzE8gb04CYafOjiNjDsgDniDpPoyIb9Taao8n9Nx+i7nKswQznw43YBX
PiOD1w.eHac3UcHl3Kc48rdtf8E1N05XkGcosMc3us8MAJzXeuqsujqI9RXc
3gLAypsFeHSHDhoynBlIjqxX57knl3KQu3QEXKrzqLtX+ZCKjGcoMNcXgXlf
EhYoCLXDlHMF+0TQuijB4HUSECkJZN56TcnAZa8Nh0x.f.UGo9LSHEhpiTeV
e72PUq.BEVE+MgVsTImeiSGAJ1Nc03HLkUkPr9QHycKO7RabrAHY3x9RZICx
HbCjKWG.kIIV0UtSdT0Szzbjwsw1bUGZswBgUEc+QG2XwWViUGQ0TSLikNLK
LeMPEJDYLdT6piLNpnCnzra1PLODsz10DScRzQ20FqKxg8Gt1p9CHqUsgDzf
3Z99CsZq1cN6aYiEpjQJKBjGY7tPclcfZBivH15xrPZCV7wpEekp1trcqNz3
3hNsVQsnUiVqTSJ2xkYgbpF6Exwoyrn1lv9VhNSWf6d5BWPyFW092U4AWZKS
GkqYlv6MZM8tA9NXeMzhm5apuTuJAXBsvvdZJG2HeHrFeHxk9gbzUrVqSM4A
9vC65Ah0fonjGZZwZZ0Zkh05u0Jmhx00prLcZbwZX6AHr4x9R5H.0w5z5PQt
ReZrwwWsLE2uaKCkxuANWu8GXb9V5EOuCiLJy6f0wlDhIrqDao6X2leIXkdN
nDDJ9HGT5AOnrCdbIGr8xM3gkZP9W9Wey+Bflu4A+
-----------end_max5_patcher-----------
</code></pre>

E questo è tutto! Because there are a bunch of classes and scripts that go along with my patch, I’ve uploaded the whole thing to a github repository here – but beware!! There are a bunch of values that are woefully hardcoded to make the visual match Blood Brother by Zed’s Dead, DISKORD, and Reija Lee, and no shiny GUI to change them as of yet. But I did include the audio file in the repository (I hope that’s not illegal), so there’s that.

And finally, here’s my dots dancing to the aforementioned song! Please excuse the audio quality, it’s early in the morning.

Project 1: Buy U a Drank

For this project I wanted to dive into something I’ve been curious about for years now: auto-tune. I was never quite sure how the process exactly was achieved, so I aimed to mimic it to the best of my abilities and potentially make it more suitable for live work.

That being the case, I traversed through a plethora of pitch-detecting and pitch-shifting max objects, be it pitch~, sigmund~, gizmo~, pitchshift~,  fzero~, etc. and I finally came upon retune~, and found it to be sufficient for what I was aiming to do. It allowed me to get a decent estimate of incoming frequencies and shift them to match certain scales. In order to do so, I had to map out intervals in cents and create lists that could be accessed easily by the program so that the latency wouldn’t get too bad.

I also decided to add on a couple different features to this core idea. I allowed for the autotuning of a file or of the microphone input on the computer. In addition, I plugged in my assignment 4 patch to allow me to record and manipulate some newly autotuned audio. Finally, I added a sonogram to highlight the rigidity of the processed audio and two nsliders displaying the original note of the signal next to the corrected note after processing.

Below is a recorded demonstration of the autotuning effects (the manipulation of recorded data within the patch will be demonstrated in class). Apologies for not actually attempting to sing Buy U a Drank, I figured even with auto-tune I can’t really be T-Pain…

And to go with it, here’s the patch!

<pre><code>
----------begin_max5_patcher----------
6101.3oc6ctrjiiakFdc4H76PFpW5rUiq7hW41i8zwrvqbDyFGcjAkDSkzVR
TCEU0U2Nb8rO.DjTjJ4EnLAYkUV+cEsRwahG9yCAN.36.9u+8+tOrXU5mhOs
3t+3c+i69vG92p07gh0oWyGpVwGVrO5Sq2EcpXGWbH9WRW8OWbe41xi+Tdw5
yhyOeH9y28mNlju9oMw4wqySRObGsdWS1Tripi96YRY8pOFo1+jCaeHScDFa
QPoKI2eWfuu9OTYwRL1Rxc+b0QcJ+W2EW76U+Cc379zy46hyKLTY0pMqK+WO
Fa9wWbJY6gncKterusK4jxd94F+7IGp90401QzGi27f5ZRY7ODkmmkr5btQS
+vEI7CKVmlkYTjGh1uJI9v53GxeJK9zSo61XLLxRd8YSc5RyiWEcpvnIsVqw
tzGAkn0E8Gb8GB8GR8Gd5O70eDn+HT+gZm0ep9SiyR6aV5eUZ819+NGsKI+W
KDYkkjrdQ8lxhOllkuKJWcc7qssPieP6eoymhef5sJozraZ.+RxgMo+xojeq
7tim3te1rs+yu+2U7kx+p9y816jdd+p3rOW6ZrOcSwuOqSeQwP9hReOs2WHK
XouTIudu.ew5Sqx4pPsVVoWKdL8P9iQqacatXkURBkcYmGvU9wcoQM8V0+DG
h1aLqeLKQuWc4HylGMl6M3y6BAz3tz33eaSz5O2YInD1PJJkSVpTRVfznnrk
kedCJZsjbTULU7g7nqKhn0FZbxYLg9zIX8excj9rK4iwK2Fkb3hF8wnr56Ic
r4VRH0BIzS6abmHzTSDuoOYOU3zubEkorr73rGhODsZW7Mnkpa28ZFVUA2E+
2QpYi0tls5pzFpxsOFs6bb5iUqudCMuj2kdX6.2XZsupJEyxscmqtvIcsw8p
qL8F+d+KkGb0NDU3g408lSNjjqettrB5F0b0buNq1q5GmDk6PU8WutJx5IZq
GyS22sOMwlJy7B0NUbwKnbVZutc84QQmsqdZXnMUy7U9U+en6Xpo99CcwGZJ
6vSW1g5xtPBb1Eexg9KOY9t9GLFCdXQiIjglJF+J95eqJr6OqhYoSQfMrHPj
MbB3b+Wxi.rWcKqb52lMc+3c+z28C+3ptk8AaOaHsPu8CCJbAkulvaGWzGqh
8BCLN6Y0h+Xxt3OFmc5YMDL53wFq+pZ32G8OSK9s7uTyn5rZVG+x5xh+XR0O
g7xpixThkt4mmyLW+exSznZdciJxNbN4RIolalWZsYc3ZgEQHw3FObAo5o8l
s1b01coq+WwaZ2j0ziwGRNbcXaW19l3GiNuK+gdZxP6c35FZzdqc2bgOrXaV
xlzCZCoszqW+kFGSklv+ZcMUrKGhN10ga5Wh915I0E64Sqhxz2YJiGkUu07z
zcs21kibW7i4ka+XxgCWKn4oGGXqYIaeZnidUpZq6G7muXSmTwcY17Cpmcye
PGv5U6XztckOMe0Y3SQGR1qJGMOwb+P2IJUa0Db9SmVmktaW6qayl9XWaZix
+dc7ujrI+o1M+TuI0AjbrxwZwka6aR1Fa5LmFqLOZ6oqV0yKdPstyqJeR9g7
38G0cFyU6Qqd2q0SsMKCr8FtprPSoMWdfrcwdds1PWE7U7TnHnHpSNo5yFQQ
28EW+MFsi.rZtk0o62GeH+4+ZIG1D+oK0KzJ.855GdYZT65KZWmwZkexcUcZ
2ok4epWsLXLsjFZ5VDScIkk1wdQhon4lddjr223+a+q2uvOR+fdk.pdRZ+px
Gqur1F2Pb1MmBysOMWXolapS4U4+RGTxaE+3yUZxWZW7gKFfOlLJe6UL.cd8
zX1IQSti10gH9p80buNpK7PEvWeES5YmRRIl+XV5EVN4vZ4Upn1taLRXK52S
ctkLgkRFS7kRxpFpo2NZlkOvREAeozrqF5tYT5pJUnyHd9XRB4t0OklsoWsk
Lt1JK5gNuvlhqyqwv4By93Smh1F2svTEEnYHXUM3POTs8oQ9gioQLUnIMzHl
Xtb.6nWVlQmqgcs7Cr00h+Ulq0fxx+6HphmspBI3cjp7+LlrHrTVX9umjkjj
wdHhYqtHBeWoKiTukus0awXj2SOFMrp3YaQtzv2SpRQWbe2o0Q6h6UY31pLd
uqTF8.BLhxPsUY3umTl0OkktOJuAHcWoKxQi5yiVD02Ust88Rjwgpfho5Hi4
8GY7ExQGKx3xP7Xx2IQFamF5q0vxVXzqFxsUCKCH7cSqKrSCUMLq1WrWMjYo
FVE832X9gBk9U4K1qFRsUCEgeK5GV1IAZewdGBCa6nfpfRogeSIg7RIzueIj
Y6SxUQv9MlDV0cUZoTTJmdkOcGTURIYjG0Y19ndYnMbZv2bOp2vWsPX0hZu5
IwV8rrwEgxu4zSQC8LbrphrUNKaQR36kZhFhdgpb5JfS6S2nVNvllT4x+03D
JsYjMuwr5p+L65EQ0vslkW8moWcksWWR2KIgb0Ox.Ix0ySlKMyQs1Z+4yUe4
z0H400H410vzdz.tscIG5EgoBmM8Nzia9ozyYqqbOpF63qLRMaV4IGpg96eT
6Uq2Q6eX61sEwaHag8FxVd6XJVeGJXxMk2P2fzmApMlh2rXJVoJ7AMkFIb5s
lUu2HYma2ktJZWI0l0n.OLlmWnAc5xlni28ScS09fYFafI03JoZmS.U6S.U6
dlTzfRZP0tmtmMAU6fpcP09WRp18CAU6tipceP09bS0dHnZ2ATs+VpXf2nTs
GBp1AU6fpcP0NnZGTsCp1AU6fpcP0NnZGTsCp1AU6fpcP0NnZGTsCp1AU6fp
cP0NnZGTsCp1AU6fpcP09jR0t+UCgDnZGTsCp1AU6fpcP0NnZ+8.U6+2e2O7
S8LesyGhrceSShplu1Efr8IfrcQAqmz.IHaGjsCx1eSMesSAY6NfrcYiT2Aj
sOOjsal.sYfrcWLesSAY6izAPLP1NHaGjsCx1AY6frcP1NHaGjsCx1AY6frc
P1NHaGjsCx1AY6frcP1NHaGjsCx1AY6frcP1NHaGjsCx1mVx1EDP1NHaGjsC
x1AY6frcP196Ox16lpc1fTsK7ZP0NK.TsOATsalGiKChuhpceOP0NnZGTsCp
1e2P0NgCp1mYp1MCHAnZGTsOwTsO4NZfpcP0NnZGTsCp1AU6fpcP0NnZGTsC
p1AU6fpcP0NnZGTsCp1AU6fpcP0NnZGTsCp1AU6fpcP0NnZ+acp18BC.U6fp
cP0NnZGTsCp1AU6u6nZ+u1MU6zAoZmPaR0dHnZ28Tsav7jxaMUsSD.pc.0Nf
Z+KLT6L.0tCfZ2T4go2d.T6yCT6Ehsf.n1cAT6L.09HRDAPsCn1AT6.pc.0N
fZGPsCn1AT6.pc.0NfZGPsCn1AT6.pc.0NfZGPsCn1AT6.pc.0NfZGPsCn1A
T6.p8oEp8qZXBfZGPsCn1AT6.pc.0NfZ+8.T6+ku6G9qq5FrcxPfs6waB1tT
.v1cOX6dlYqcZyYqcoeH.aGfsCv1+xB1tOls1cAX6dFv1wr09LB1dglywr0t
K.a2GyV6i0+OX1ZGfsCv1AX6.rc.1N.aGfsCv1AX6.rc.1N.aGfsCv1AX6.r
c.1N.aGfsCv1AX6.rc.1N.aGfsCv1AX6SLX6WUDI.aGfsCv1AX6.rc.1N.a+
cAX6cB0NMbHn1kA9X1ZehgZmVx4YqoqcoDSW6fpcP0Nlt1e+P0NwGTsOyTsa
pwFTsioq8Ilp8I2QCTsCp1AU6fpcP0NnZGTsCp1AU6fpcP0NnZGTsCp1AU6f
pcP0NnZGTsCp1AU6fp8253Xdd+p3rO2xZ03BzZTruVsF8gVuBOLg4gUo2qPq
ZYCmR1d0nBWPbQW7BTsgtHMXD.PdbWZz0Cjz.TGfTO.od.R8.j5AH0CdOj5A
x.ej5AH0CPpGfTO3aoTOvZYoC+p8IaNllbHuz40mqq7PXZBPXX8BH2Id6l6D
U2+QxS70PxS7e8c+veo62J.zfASfBZq2J.Rj.ESPBTXds.vZ+ZAHH.IPARfB
j.ESC4z9il.ERy7Ad.RfB28ZAH.IPwLm.EBBRfBW7ZAH.IPwHRDAIPARfBj.
EHAJPBTfDn.IPARfBj.EHAJPBTfDn.IPARfBj.EHAJPBTfDn.IPARfBj.EHA
JvqE.vlOXyGr4C17Aa9SKa9RAXyGr4C17Aa930B.Pa2Nz18AY6eEQ1d2Ts6M
DU6kYZBds.LkTsKJ37jFz70BPwe.U6fpcP09TfypGnZeNoZO.TsO6TsG.p1G
SE4fXa2TbJCYG.nZGTsCp1AU6fpcP0NnZGTsCp1AU6fpcP0NnZGTsCp1AU6f
pcP0NnZGTsCp1AU6fpcP0NnZGTsCp1mbp1YbP0NnZGTsCp1AU6eInZm+UHU6
ducnZmAp1Ggp8e769g+bOyW6xgHamadyoUMesyAY6tmrcCpmTdKv1oX5ZGfs
Cv1+RA1NkXltqC7.Y6Na9Z2zCkfr84b9Zmg4qcGf19aohAdiNesy.8+frcP1
NHaGjsCx1AY6frcP1NHaGjsCx1AY6frcP1NHaGjsCx1AY6frcP1NHaGjsCx1
AY6frcP1NHaeRIaW34Ax1AY6frcP1NHaGyW6e0Q19XyW6sAsruxat.u64MIo
+8B5Ye3uEe3bixRqn8smKgUaeLY2t0o6Ry5sNjp5zVX1s6aW+R4QpqGgEJnz
f600nP49Luhuo9hTd8cnxCjVcjBoHjvz6uvi4KjEeKfwkb82HccrrKmUBMzb
tHgADg4apUQUm0mcrQG1VBVreCjXM2tyR0U5Tga8RdX6i7bd51rnMIk7G0Om
f22zEJSs6cFMwh8paKIs9kPVMXxpgtynAwfYz.Q1bt5O.Yzf6ynAuxNv1z+g
0yU+TjRCHkFPJMLMnLSkVNY8G5iTZ3UmRCLhoWTL8tORog4HkFpzbjRCtHkF
dKULvayTZvDDCRoAjRCHkFPJMfTZ.oz.RoAjRCHkFPJMfTZ.oz.RoAjRCHkF
PJMfTZ.oz.RoAjRCHkFPJMfTZ.oz.RoAjRCHkFPJMLcozfffTZ.oz.RoAjRC
HkFPJM3h7HXVytBMnhX15ePt1+ycy0NeHt1EllTVw0dH3Z28bsSoEANUFEeI
W6Rczmfqcv0N3ZeJ3Y0Zr1k.qcLS8iYp+2oXsa6zP+aohAlYr1sr2eDBf09H
7FG.r1uUIKDXseqZVHAXsOUXsGRAV6ig0dHCXs+BvZOjCr16PUD.q8tjEIvZ
uScwCXs2ot3Cr16PU.V68oLg.q8dZMLg.t16VXn.r8w.amRXfr8WKY6TBPa+
Ui1NkH.a6uV11oDIfa+UB2Nk3A51ekzsSIA.u8IGucJID7s6R91UhM.b2k.t
SoTf39.HteUuI1R4X.xc.49WIPtqGhOKYElxldbtCeSYMAuorl2RFyaHX2MW
tVA1sblLFqTF1aG16GyiADu+Gti1Ew6Wd28LvD4tT3WB7t7lAdm1Kv6sfkqq
Phb4k+o3cpqpzrOeGqKYPFXiLnZunTi++Kf6e5Xb+2iRvmKGAIwBEHjErzW9
dwSf2sRbI52gTBuBIHfLi9BhWrVD+aQaV+4ttXCG9ZUnuHEdF5YkUeNq46B0
4d.6iyyR6RLXC9L.kxKzAelQNnN8V+pnCamuGBVmd9PdbVmt+xAEAlo6b7CJ
JEz6kHBhAKHnA05CTtfz8kKb2o7nr7tjD9f0NPIg9Kkggg9d5DVJn3QF9KPW
Ht1++79UceOlays3.ietj7ZRysiQYpXfTtZOXx4lVWmclxBC8ff6KK33iOl+
46dTajJEHMayR0goDktTMAcX2.+h9OJnbHhDxYrpgWdIDUIeTsA8wj3eoHYw
Rp5ZgKF0iOdJt7x868JbwaNf0KLIk2lLU3r0YVU8M606RV+uxeJK871mZsgm
kmVWskO1wVVsUmQgsWk5lmIaHIcUpVf+P27XAE267JRPj.tAeegpJ9V5cyaT
0hx04aX8FpC9W+xpR2UKYW6a07PaYLdlWsO7VVSPSqYfpSqJ479mUdZwiVOe
01F6oY2Z26MkNYW2xtJWsm2aMsZQWesxMnU6gWrOYywTkQWdV4zBEQx4KY5A
1VTDkhYwxF504SB2jQRs0Hcv4yyyZUg3jSnLvlSHk4M58Akv6wYE2Gz+sdQ2
XlD6LSmoKBp0mPduxBkDv0BQH0y3e5KurnSLStMVof5L+SldNnb7mHXbOmcm
fIEVcJID2cJ4d1bJoggt6TRrxgiQXN9TRs6T5H2GhcOGqqhdfhajAFTBIbpo
2G7Kd755kkEMIwmT7GYw6COmbMX0kfr8dccIC5fB08fTUxdPBqWzIVYsuoMJ
MqW6TH4WqzjmsnQmopR6VJcnP+Lufdd+w5MnRyMiIojaRUUZYDBRmZj1Uic+
xLKrPlEl3W39h5kbnQFNpQRF1mkTd6tbPxMupVudwPyr1QoPWrjCuF7G6ZfG
L30PfmIfQS2VpbYUlWY60KVmCMU43ErNnoVUtkxrJJbqrDCyxNzN8ds1Y.6h
cMg1YfU1Y+UZD1ztz1om+jXmrQKy02ePAUH8LQOyK5g8PYvkEcncxG2NGtjU
IOvjg6E5pf3YJzR5zmhDVUQa+208nglB7IEhIsjVRyxtrZJ6hHPLPDAkUep7
GMVpjdYY2Xo9910nlgkzRGReSef2boFcJQcOvLm1s3Fr6.SwV8Y2z4zt42hc
yECY2r4ztY2fc66MncymS6ldK1MiLjcKlS6lbC1smouF5ytkyncSCuE61TOR
e1s2bZ2A2fcKkCZ29yoc6cC1svzEU8Y2AyoceK06vCCGr764rhG5sTwCmMnf
SmyZdn2RMOB9fJdnSraO66N5Ahfl30r6na06ztIRJoMlI2YcUWY+uSsKzs9E
lxNluJzMVyPfbmYZYjZCXlD0iHgD0+tD1iOcJr0P6BNafFA4KV5EPU+6RDCs
JYxYlZfcwiMfopZZluOS8uKlpTNElpucgfMfoR8VF3wU+6hoRISgo5YWTWCT
VSf+xPkzJZDBiXRLUocAZMTGKDtjnszFQsD5MElpvtXqFvTUsOmpu+KtXprI
QU41EN0PU1PWxzOUwuTSoOeRJX0tHnFnuvE7kBcwpzKQi3MIk.XYLSjwFQ4J
qjJlBqjYW.RCM3Brkbcg+rK26YNuzeo0Cxa+VZYc8AlVgWMvzEKNU8ZCytgJ
VNriPYLnpZCJ5Vrxg9yr3bpuzQ5riJ8sjDEtXY.W+eUqap5qlav5Y13cnEYt
Jr.pm5+7qV2T0CYWGH3Kx2tL1vY02V3Be6x9fbJ8sENv2tVemceagC7sa3cL
y91bG3aW1XhY02l6DeaS+TWI6091B24aycfucC88491hoz2l6.e6FV+L6ayb
gusTN691LW3aWNVFSY41LW3aKkegJ2l4BeaoroH212lOk91TW3aa5thY02l5
DeaVogKa6aKcmuM0E91zZy7491xoz2l5Be6Jqe18sINv2tr+slUeahK7sKGS
zoz2l3.e6F56LGSBwA91Mr9YNlDq.nVJsoempHbkG52whAlrCRTUTIa5Pewt
KJB0xKJlAaWuJdoasrjZVc4aZM5T5oY+kE016UCfAdwp8G7xZ9bAeFxvicYE
zwhFlqK4F1fb8zvTCMzA0XTNLCyYMFzPmTiAwahaEqc56H0XTquyczP2f0yr
w6XdqwfF3Bea1rGMz0fI8x7sKIVZJ8sCbguM6KTj92f0yF25m6H8odNv2tbf
LmUeaOW3aKprzIqGZndNv2tVemceaOG3a2v6XlK21EiHZ4HeOq91NYDQ4Uc5
6j0JVpKFQzZ8c18scwHh1v5etusbJ8scwHhV1DhY021IiHZIbrSYLItXDQan
uyaOzPcwHhVa8ydLItXDQKArYV8scxHhVxO8TVtsKFQzZ8c1K21EiHZCq+EW
tc4raSzwieLN6T4o2X3l2EREIzw8lk0u0ntLuRuHKVOiIYNDyDZ8hnr0Oknm
3lOmYlEf9jW4Dt8B8TWT1gyIUVQ4jRpY1g55YVm5YQne77ljz+ddT94SO72h
ObtbVDRIXOFcdW9UB8psOlra25zcF6r0LZZ0rFzBylqmFRq2a87YMKTP03MS
VxobelWw2TeQiQZiopVyAQqNJgTDRX58U3w70zwp9V.iK4smpnJON1kyFgFZ
NGjv.hv7M0pnpyVqiK5vVyTnkIyyqV8wrT8jcc48.0AGd4HNmmtMKZSR4a.Y
xyljUuuxoMSsKOaN5Zwdk7lTejkylrp+7+apRxUI
-----------end_max5_patcher-----------
</code></pre>
view raw gistfile1.txt hosted with ❤ by GitHub

Project 1 : Particles

For project 1, I have decided to create a system of particles that are able to be moved and manipulated. In a way, it works as an extension of assignment 4, where a system that does processing in the frequency domain using [pfft~] was created to allow the visual elements to react to auditory ones.

In short, the project functions as a world of particles that are constantly in motion. In creating their movements, various elements such as time, position, mass, and velocity, were taken into consideration.

Initially, the particles had been designed to be attracted to, and completely dependent the position of the mouse. However, always having been fascinated by the degree of control I have and lack in the process of creation, I decided to construct a project that not only reacts to my decisions, but also contains an element that is incontrollable – one with a sense of agency.

While the Y values (vertical movements), are controlled by the mouse position, the X values (horizontal movements) are designed to react to any audio file added in a patch similar to the one used for assignment 4.

Here are some of the still shots that were created.

   

<pre><code>
----------begin_max5_patcher----------
3886.3oc6cssbiaiD8YOeEnTs0VIS73P.vq4Iu+A66Y1xEkHjFlPQxkjxWRp
7uu.nAknjEo.3ESlrobMViIoDP2n6SeAcC86e5tUqydkUtB8SneFc2c+9mt6
N4kDW3N0ee2p8gutIIrT9XqRYujs9WVcObqJ1qUxKWfdNL4.q95YGpRXUUuk
yfO6UqP+G0sxCq17s3zcOUv1TA2Mf37f08Hpsm3E32DxCVGeOoG1Gmx+.kSA
K0EiijiLe17Ep8pSOIL1xGEqtZY0aIxYxpUhK7Ge5Sheculj7dVYY3N16n4u
XGD7fCx5g.pC1hx+O0ORRbJaS1gT4yQ6EOw2AKYFD4KNVx+HnMdB4J7Dqojm
zpX.enJY+6rx9IIfs.pUJO34Xrf.1aFH5RAQ2jluBg45.x19ARJC2MkgeOk4
bcByZJIrOi9B9gVWH2ljEV04pomkjNo.sSocSzWQFFOkqlax1umwUQujp2jk
x0dqXQnpLzuDW8vNVJ++90zcrJP7FkmUFWEmkdU8cxMYH1tDwKXPqVvWzVLv
aRkCZik.T8inM7axJtGY0gjtGQtNSC.ZDCJwVlPizYPVOufkyRiNhec15qYf
X055TWIGf5YrxtGdFfwxC+UzV9OVOLLx1Rt96bCpldEpdNrX8Yzff3TDsBhi
v8GvPHN2fYfnOjlGtQtZeCR+dS3ADawKtTiE2c8uNOfLw37YEQwogUrRTLGg
+aLTQHGjmazSf7iQFit64IV9ofKaXarwn6tyB5dQHGqCksE8RbZT1Kcfs6CP
Zj.4Zb.VJsaBzt6b.s+L607Bz28O1hQeFwkK+dzW5RoWGYcRfCXcybrc2oEk
6v90rh1oMtB8ZtPd2ts4CKrfEbvIEy7U0+jLTQ3dF2mgmXogqA5xZB00aQB3
GGFHeMCw0omf7Nty.HeEJAkzojP2DMDTNgJA03wh4XpTfypO9UZPWWnp+i7e
SFlRtq7EeOiiawgLGAtTUDuaGq.kyJhyhh2Dlj718eMk8Lq3MDAUx1XpEM2.
kkc.riZrAMG7Lf2+e4HNEYbCSVVnGC2TE+LCgaUR3lvgJl.HLfUV.MQZvNXN
xNEOZ0x3eqmYjSQyAA0ocxTRdVT.hheNNhgZ5X252PBtvIuaPeM86.PhsYEn
j3xJNRg3kuuyj20tUAreyf4EIuTasCp6LncTvGHFDlabTBC0sPx8ZXoPAWhA
oELAabjejVLUP+.xpQctbPgkeMMuRHoDVUUHvMLOAON1DHD.ImvJvX.Sxb3f
L2AnHILXuwHcrsOgQ5ZtGiXxb.QVxRiTnBBUAPd.2ODSEGPoCX6XLjo2rjqy
DVXA5ehJXhkXTGg9oBlURdP3eFE3ms+LHWWgViJ6Vn9VXaP.dT+.cxf80na2
ozI31DrkKq8bGXT4yBHXyc801YNji4B.nmYIYahqdqCgXaGoI65cgw2bw34.
dVrGD6C4d2+pfFacYk+XOAO1Mkpodjl6Fks4h03YH1Ng5L+mapPe1qcJqq12
YOvM2dvFrlR+VzRb.QQxDXPIHad7N7+MJBHPVbsAz.rm4VzoAyQNcKqxJX0H
Awb++EY0MOrnJlCIVh9VXjHUu4Ermi4F6QaEYmBElFgDV9iqpyCr.NQduulV
lcDXAsl6CHGxEEtYCKgISa508PzuC+DnfLmOtd6wDwPfsMg05OGYINNkyQCS
N5u7OUmm76QoYUHK4+uKrWJDW.f5hCrLF7k5LSfuhM.9wp3JYzR6R6H+pFnh
gsfc+E1tTUxULSEipsJVyoAe5CbAEa3tUaiSDIIpTHNeZntaUXddiKeWi2hf
28KYxOHu6Odo3T3RziWRnnU+9cNd0vBNynhyINT.yuW8qcSR7wjEwJRODKmJ
vE4qhep9C7D3M3pMvFcgWrcZHPc2JVDWTky0WuaSVBL29YQ85beiega9FVui
qp+qrnFhU7U4bVZbJGzfGuPEnz271QrsgGRpdZaVJjwEw7VXe8J2ea3FVqu4
TNfijc7uJ3JZ0LjU6JhixREShyVbDWtd33bCX+HbZRLxmHML+JuYt3CmQ1xM
K4D4gx0gEh0NUR6I02rJKK47ac78kv1VotcdbZ5Ebwpr71uYQ7tu0w6ccF+l
665yVdmxmNjB28ItZc0SkgOeN2tJLIQome9G+qgowb8VVULrDPrNdSXiK9V4
lhrjjynW3NOek6DwE62vdINp5axApov.+wiyqEhVcbUNJdGqr57qUEtq77q7
NUZ9kNrVoV+TEaedBmJN+ANqD+ZpC2DQ7rq2oEgKxgBW3MNmCLllEyMgJKBP
QR2HMe5qf9Qvf8OmlIOqo0fVQ.eWpCrVc9638VFtl0g6psPnvWl.dib2jOZl
7lLDavtnzN.jSwdwO7mS1wYFQunZIOmEzdTosGYpaCND4cYXQaNjS6bH7bxg
3NeNPVDnFARRTqayfrZQkZgxf974vJ8WDRsiF8WDhtP4P74wMQZTLAar+0Sw
i1LA6w.o4j6JhHnZwNkjJD2+5bmxrCEapEBTZ3nyoGtc2JwVBor69yGo.wyo
0ZioyAplyAmIbNf0bNPacNntHbkQLMN5kDGMhehXq5c.yCehLGYnXu3A5H8.
d3GHhcPxBxPG17njwyTTxfGf3oHcTp7PQsTUVm4UcEYVRGkHORWVq3WST1Ws
O618LszjYIiPYIQ5PcD+l4RziXN04NGTWcVCORhknJtG8kayJ1yhtuduh2xX
QqEESaRVVtoaWLg.lhUQAAFlMa+hsm2MjHuiN8w7jgc9FyXj98jBlKH3s4k6
NDqY8zckb8r554G5phEpBMDhQ1GxSniIbii1.ZMuRejabSIRVQVcfQPc7aPw
Nl2dTDqYRO3krBNL3Nw9H731xvPtAvGkUbDkXwcNwB8HTgAGKyDrC2tHVTZZ
RCkb9f3svJBKYOIyRI2SLwOXwmGGY5v5PwkdjK+wEartco8dSioPLPPOH4BE
4qYEqQvTtqWUY61kzdEIEmVoC0ohsyt925Sb8n1kwS9FPj7vF9boHTIncTXR
HnPPOJL97qgUJImG4Pt4YQBIHQ1rE2qipZQfRuK4Iw3IRG+MQpkPW0UFnk4Z
pX2Y.ARwD2yJ+lhEFUD9xShsZfaBiKSUhdDT9vvOinQMGheillncdUvU3UNy
EupwNd8VYEaul7idXxWkyJruwUMH1Vabn+Bt+WARUOnzEbckndt3f+d2u96c
+5u28qwb2u5Haq+vPyVuJoUtWushZsd6ZsHCmkzQ20VfwCVdCCEFEAcS+oBu
Qb8xlukqExbqwGo5rZ3.h.7fsYTy5mAamE5lk8YtVyP2tLeYiaoXRz9uWG1K
0M6fasceXxo1WXfLJ6VZeY8YTjkpZHGkT1QCnLtol3TnJtPeMcaQ19SGoE8V
cj3z3nd.Sn8Ve7XQCt3175wQDCSgFqs2H8TukpHFE8Lmb4APcLr4UZwSnpBf
Ln2E7.0cgJzH4Dmefh.QnqkhVukxbZxQal1Ps2+ep8RUJSzYVwxNyBbg3dNH
lvoB9yihS4gSHpRUFhe08YOyDeLsipQ6la5pp8YUc4feW68os.Jwew5kwW3T
0.qoBG2ln+1t+4rrb5RnqYykftAplisDb2FxmsmW+Q0HKTgFQIlbqp6ywh1f
KLfRLgtXKtu2GSyE8eT66vOnu3C0AuicuEQHKUukFZbwpv6fsCe.dKQVrdKc
w1l2dx1sO0YRNjKOtczWRwcopFIpg.sUbpKLBGw9V0e0F6EpZSbJhNJZN.KZ
.E.JYwFI61vjDwVl9HJJd6VTYNiEUdCAGaaU0CAcZCo+0VMAuT0ipcB9TutI
isWzYVJVVq9Aa2M2ippHc+Smpet8pN8WrVqFdt1nPAEC7Hpeuc2A6sTq75gw
eTZfDOuAZQGuXyzci55rUoD+fSkmuMs+c7xRMq0kuD+anWGppjuxYmSLodoJ
QWpRJuTDliBSeCkmDlJOYhT0RG29+ZV0KLVpnmgDckLtuojECkPEE61xAMr9
7wkZbnR13WvCskYfNsRwnbw8WdyZoJusILYyAwFiBoLSDyZTg3LQ6nuB8Nw+
fYOQMq6LLoL2kqK4ih7k8eUaIKNChLJ.9Cto0HKTNzOLFxOD2glKj+L2wZJc
HUSf7+yMrlHiVH7D0sXhxHQu1Ey5cOXVQDTWcVy6TC619TCOMSMcazuqPC6i
ifpOU40FbpaRfstyQsawPQ8MMychtyc5T1ojd5NKHS4rvVWoeuEPWihslvIA
wyDQ5oBNhPLqCZ+3PizdlcEF4DiFo6LCOkJzXOSPqwcAIJZLHIHnZ2kU.jNS
FjH10fdldpD8wZCCLkXQXqEPaziMAUtSQILTtsdpylW6FuPrf5yxx9gOTfDC
6OecgQFRS62w2JV7I1grCkIugD8YFK5dzg7HQdEN0grYaeWVEztYXUGj1z5i
DHOiaFV7bb5bVbdyMZ3osp5DnTkty.y+BuaN9lh579+cZNAJqaOHrp0nM+7c
.aMCMO0vOJsqOWKfVgsGmk1AywAvK105dw22BuS6+ZoMzwBJCVH4zVleZRuH
N.LuMXWGe4A.mP7DOYMc35Y7Wc.ty5g7wTpwq9ZGpOGxG1yT2RJZepGfbp+3
g3mDeaRvR65fjWylr00uubB5bbpiKXCOI5SvpdZLDnZP03VG4vW4nGuWeGBH
+zOOUd.O3Re4Tbh24CWPSeyZy+sFIt3cLacGHOrFizYwBeg6qS6HiOK+IW57
snCUEUD5YeEFetSr8e5Yowz6BZ3ibnkoKEO5KJ5rlDLBxchucFu4H4NZiD9V
zzXLP5rrUS2CZjbzl4gaS0wKP8snr6CCd13pCDxnP2NZrTVOcF9HcSZhbJaM
8ejH5rVZMBzjsNFUrGCiJ15HQXi6BZm.H6pn28wG+qwFwSq4JMPi4J1c7sBo
0r67LGeZnICan0QEvdLT1rIeTVcrsz..o6Eakiy1Vp8MVFqk7uFi41M4BiBP
fNR7zQXfnA55hGoM1cMC1gNXFLUG51aLXvT5G0RIUGUG6wZftklCoaMGhMjg
FHGb.po7uF5bSGt8X.TQzx+CmwZjzx+iAORZA9NJzjNvNSQ7TDCjOFWmKjFs
H2RqYLXt3.czOmjvU0anslD9q+GkmCXOCxVwvFIaMXmc67LF9h1yFNibO587
vMghsMvczgMR5nz5MFCjNogxdLrUis9vDgz0QmyCdExZ4EmOchw3hyktKNS5
d+4QW6mEcWdNzwG4+3S+OyrCzCA
-----------end_max5_patcher-----------
</code></pre>

Project 1: These sounds look nice.

For my first project, I created a Max patch which can take an input video and synthesize a corresponding audio file which has a wave form representation that looks like the video.

To convert a video to a waveform representation, a few things must happen: First, the video needs to be simplified. I use edge detection for that. The edge detected video needs to be converted to matrices of sine values. A scope will take these values and plot them to x and y coordinates in a signal. Since our video is edge detected, we need only look for “visible points” and then determine what their sine values are. These values correspond to their position in the matrix. More clearly, the top-right of the screen is x=1, y=1 and the bottom-left is x=-1,y=-1. Once we have our list of values, we need to align them so that the output looks “correct”. This is done in python, as it allows for more complex manipulations. The aligned matrix is then written to a jxf, for later use in max. That matrix represents one frame of our video, as audio.

Interfacing Max with Python required a bit of creativity. I wound up using OSC to send messages between Python and Max, with most real data being sent in the form of matrices saved to jxf files. The exception to this is the patches playback function, which is python sending many read values to Max under very strict timing.

Rendering the video to audio takes a long time. Around one second of 24fps video takes 1 minute to render. I’ve included a short video and it’s corresponding audio and representation. My project Zip also includes a scope patch to allow for dependency-free viewing on any computer with Max.

The patch itself has several requirements, with the primary ones being Python-OSC, Python 3, and xray.jit.sift. These are either included or else explained in the README of my project.

PythonOSC: https://pypi.org/project/python-osc/

xray.jit: https://github.com/weshoke/xray.jit/releases

My project can be downloaded here: https://drive.google.com/file/d/1Vk19SfcogpdhtJHHTioFyniZq4UuaqDk/view?usp=sharing

 

Project 1 – Speech Analysis

For Project 1 I wanted to do something similar to the speaking piano on YouTube by deconstructing and reconstructing speech. In particular, I thought it would be interesting to deconstruct speech in different languages since different languages just sound so fundamentally different. I found a Max object that would do most of the technical work for this and went ahead and tried it out on different vowel sounds and audio clips of singing/speech, using different types of waves for the reconstruction (sine, triangle, square, sawtooth).

Then I loaded them all up in Audacity, time stretched some of them, and pieced together a short clip that includes some of the outputted audio:

Audio Player

My goal here wasn’t to reconstruct the speech into something comprehensible, but rather to explore the sinusoidal makeup of speech.

 

Main patch:

<pre><code>
----------begin_max5_patcher----------
1068.3oc2X0sipaCD9Z3oHJWVQShiyOPupU87.Toi5UUUHShI3kD6TaGXQGc
1m85eRXgyFxIKjp8ndwxRFOdF+MdluYBeY9L2MrmwBWmew4ublM6KymMyHRK
XV6yybqPOmUhDF0bo3irMO4tvtjD+rzHliyXTgj2jIILpmZK0HYmVjbiNp88
yvzNgp0y1QnEqUaUZOAwId.XBLY4BGXbjWvBGP3R8+BC8Bb961MJjmJwFC1Y
JZSEgVhklSH3UgrFYmz.svuNet9iEOLTwjC3Wb1g3ULJISzoh0exS0XKdbEj
BJpz87Q+h.Q3xABDvUAdvkIvXnJRjFahDf3oIR.tiHgjUTn7zsfIgJ6GiwCf
wHXfFPQAgFbE084.nqFwQUXIluFSQarKF7eKxqKQmJIB4Keu63E8+M8e4DSQ
Ahep2nDbbUDfXaofsv.9v4AwsRyJI06vjhcFWBAdcQzbjD0FYZCMVkOSWbwB
pk1RJU2JU1yg+eJvbg+IxSD5dDsv+y6O8Itppw+SrrlJLUJ7+b1NFqzGrLXU
f+uIzwL6B+AvG0jSX9+dISfWukynx0MTNqgliyWefcDW5cDcnErcNeOgZCpl
MqkbgBkLV8EoKFrnLqxeqERjD2AzKgjJvViw4V3BdMdayC3jBh5RVA5B4NqN
lDZWIIauvc.kqDmU+Js9mFTIQdpMuZCRPxt1LRREVwwhUoIsV3pk2x3UHpb3
yqDWUyZUI7aOA0DkoE6HaugQ1xJKYGKJYatxP8dLxXbcdrJwuOkLdZXUDkMb
Mh6OXUwxw2NRoKa6ylFUkMTUUVKKTjRgt0MbC1uzJzJ4cxYntjDnB7aZbHjp
bvaQizK0.HXntDfzHOE2foKQLH0PK.euMIBmLpxuW6RUA98znLc033GCWoot
bR+.aSdiHvO8x8f6jUib.gnHaigUdw+O6pOYnr+vDf4t+hYj9A7tWfo4Wg+K
g2HmENDXFQJI7iaT3skLkQtM40BMKrlSsmaw3ASjAvybXQAF1q3fQfSSSFiM
RllgCCmx5cU2p6IeONcj46sk7vjON19a2jCwkGUihwN9950EGLxVcQoFvmF8
CWqtbT1K8TmGMHM1xjyL4wwlRbX5zfrI7cdUIsUMZlLPPXjyuRqwn8NwNRNR
Oq6stm0u3j4kf58kCG6uDPnouNXYxzP+cYgtwRpiI8a+MPLGIs7qCUBVCOqC
ccbauNhoatZ7b0P1uNQ64xZGfchx2bcLVOo6ENNOE7fdpyHC5onqONLdNle6
poo20f255fGK9t5CC0i20SNpCGSVU246g7T5X.Y3jj+F7NtIeHOAGSvaJfT3
XpKfShmhGaBwiRnYd2164dxRZipqOf4hVsMdQ0I6IlonHcg4QB09Hz7HGefz
ou4G+xEwU8cjplNMbaajmWl3Z2JSUdQaHsE2JO+04+K.XHOkp
-----------end_max5_patcher-----------
</code></pre>

 

Child Patch 1:

<pre><code>
----------begin_max5_patcher----------
448.3oc2V11ZBCCDG+0seJB800RZ5y6qxXLp0vLhMQRScJhe22kDiS25r5PF
CKXj65k6+86RNzc9dASEancAnmPOi771464Yboc3cv1KnsdSyx5NSXAb56ho
KBBsuRQ2nLtkzFAuSI6aTLAex7ZYqfyZhf8tpV4BmMyDLjfI4Nevqaly3u8J
jBksRpJhhqfmhPDIqHBGhhKw5uHjHL5kCarSscI0jOWp38sL9RpxTowe5Tzq
bdwZm6880Kg+wHmcAjKShRwvCQCY1CCxoW.47pnL8obIvZUxCCxIW.4rrnBM
xU.q4jGFjiu.xoVLSR+2RKjVJBihQDTB53EVqXpsqnVNfpafOGo3zK.3QaGU
l1PY4s1LxGrYj+KZFlb9irtj0oFjMxnnYWSvt0qEM7fn4N8aDssTt5rsy3yn
FDiOgeibP8y+5upYJXs+yaJchdYiCa2oGbWvU0yncJFuVOHbZPPL.YC12uIg
HiHT58RnjQDJ6dIT5HBkeuDBOhPw2AgHWgNth4aWBqWsZMU1cHZiFvL3BgTa
VDZLYbqYhwTRWybwmY7TKgoLELh0KsyNaJs+wofVwLpj2yNL..Ju2+C.oeFR
SA
-----------end_max5_patcher-----------
</code></pre>

 

Child Patch 2:

<pre><code>
----------begin_max5_patcher----------
565.3oc0V01aaCBD9y1+JrP6SSdUFSdwY+UllpH1zTZsAK.2kpple6CNhSaV
bBNsVSaRQDy4i64ddN3vuDGgVK2xznjum7ijnnWhih.SNCQ6mGgZnaKqoZvM
DWTyLnT+ajcF6LyysLeHPnjet+U7Jvc45G9Fo28Vpo7dtXysJVowuhBxMYoI
jbXLqe7PTzlmqgXi5ignqARAHaxdynOU.q38VKkMMLg4nkyEULfdX27WiicC
oij6B1ur7oOTF1Ver0LQ0tj6opFofWpQmp.3vJ.Yt6ObFnD44iWCvCpAYe.5
0vzZ5F1I76KXadcy0UysD4BbFu.CrcEv1YytVNmObce5Jo0bAaWxEHsluQPq
QoIn0TwlyHAYgkf7bntOOaZjf7oSB95tPjeHRuJ7g87kE.k+2qp6xzOFqmGj
0860u5BMYxX8c0RaPN+43KsYdYwHNNOa76kuSpZnvxWbHtJZCyvT2xDz0d2y
FeCu7+xBBIbO8+6ziybrnSzRKez1Mz+6r5kUNsTH8jGFT9xCJeKA0qX0zbgH
4c5ADInG+e7oOPt3rerHokcpxdV1W7SdKgpXZCWPMbo3cN4ZJ3bZvBwXQpOH
WFIxTfDYDHgm.fbsRBCj66G9zP41kkfC.Ue974QJDoHSg7MlxDYJDuCkf.Ep
rIAqrwtOGeDT9ixz11mXJ8duATrc1dPpbSWlBS4B+T39T6U8Ow68eNXgprsg
L1dPcJeyksEKP9kJqXJQGe+8tVjeM92.4.c.1B
-----------end_max5_patcher-----------
</code></pre>

Project 1: Video Sonification

For this project, I decided to take camera input and use different characteristics of the video to generate sound. I split the input into 4 matrices, and used different characteristics of each of the 4 matrices and mapped them to 4 different sounds. The characteristics I used included the hue, saturation, and lightness values as well as the RGB values of the images. I also wanted to add a visual component, so I used jit.sobel for edge detection on all 4 parts, with 2 of the parts remaining as the output of the edge detection, and the other 2 parts having the edge detection output blended with the video with the brightness and saturation varying based on the original video input. I then stitched the parts back together to get a cool distorted image to go along with the eerie sound that is generated.

Here is my patch:

<pre><code>
----------begin_max5_patcher----------
3038.3oc4bs0iihiE94Zjl+CnnceYlZq02.C6S896XznHRBUJ5l.YAR0Uui1
429B1jKjfImbhIUHiZoNcaR3b7mO2s84O94e5oIyx9HpXhy+x42bd5o+nZjm
TiUOxSaG3oIqB+XdRXg5KNIM56Yy95jmadVYzGkpw+mNdhW1Mb7B0fUey+A2
a2noaVksoLIpT8pnaGdcX472hSWNMOZdolanDh7ExyNtAA0evE0+Mi8Bw422
9qJJ+QRjhJ6d+5Wd4OVGoeKSdMIKr5M96Gv.woaoOSM3+6m+o5Oq934ADCDH
v.eYfFBD2gPvpnhhvkQmhAEgkaxCKiyRc9azNwBFJ4Apa87WFvp+vmfCLtg3
vr73kuUlV8XC3.yGANDzFF32KvfIMhuFW9xr74YEgcBAtFf.V+hBT0jm4pUO
vgAUb1zUgk4weL4YyHBc.rQPY9cZjfgwHAUnrSJEJMBAcjXmzHFvQfAbkZfj
IuCg.71IYnrSxnZ6CxGEyjTLRDLuCQgQtUROLFI0xA9hfwnMxZ7HLY8agyRh
RWzIlDf.TB7UfBkH8UfCcHQE1mAp3i.UXZsDJkwGqnRxlUgeK5GNeoLKwg7B
uSyoAnh0fqEU7avH2GTvAkMFoBMBnAiVroHaVTRW.h.i4EtRHIP6uwkN9r4Z
DN3HfCWWWsbgG8gCOXHvCg1K7VuOOT3AEAdv0gnDDLJgiEgy+yNMbXxRJoOK
oTh6AozpsibVrvR1GWFFm18TAU14MSEOuc0qpRluN6zKacsHdYZXR8ZZb5go
ksNLObUTYT9znz5.gZAseVq4bDq4xlvsj2UK4XLr0LSjT1ncE2LfPvDQciJP
vecTA3AHTAZvIeW9sWE3hmf9Hlfhl5PvI2Q53bIlfWzRwtd9Obhzy+w7jntQ
JWDkdZKRwTJ+BjIE0.T2rjg9EGVm0ikhoHjdZeZtTkzOK3E2QPMo+EGd2H.A
SYXkZgflhQeeg.0Qxu96woKx9dmS3.Lw8IDJKCTltRILgxlNsN398SfSKw5M
OElkIahb9Rd12KbXNeYdVxlUoU+ytABAJfPnABhR5m54MjI1HrNHU3TWvntw
CJBefdDc4PHpreEdWtOP6KHrIcc37u4Pz+oy4puo.ZD8VxCp1nuRDvGYU2qc
M9bWebSUT3q5FW7wfK57ZE5RD5RvYNToG77mgQi7kyXuUzckO7QENUywZQpj
W7XiqZeXNhIpDSHS6pY.idOFyTka3p2zN59ZV9pPEm60IBfpT5Tp93N4QZzP
HX0PlElt7FGY8EBPRTaDifMdAHSJR+pinauORebpQ5RoRtpCLVOdZX2PDH.0
oDqQJYDg.+cGlgHPHWgLfPqgv8G0H.EkLPUPX9bNWJFWv.jfRYHB9hRX90Ab
IHOvQkxQALTkbA2iO9BKEfzhq.AnHnphUH3zGVgEWLBKBc9q7.x3SVom30EX
pu2182P3OlJw4uZ.A3WABnEJvVeuadQdMf.XN2wLsAhsaHvHAA5SSv8JPAVv
3OwUAlDW45fJDZGEOz4sJvj2Zi.xeIvGLG9Tp9PQMNwmqH1LAlxKWE++CSrY
8URUWBpSiJSmy+nrjp8EtJEinRCZ3KFegqZHLEJlZhIoz5otm95QMxCTihol
XROY8jt4hzNVPfJ58mNjWB59LIPPII3pvAWcg14CQnZCgtfC0vAy.SwwjAzC
.At23HysdhZG0kjS5pUIzmOkwR9q8gBXxg0yibfrv3N2ETWj3Fw.gT9vGaNp
62imu63EethXyYRDAbsErXjG6XyYXxxq4.Ax0mC1GnXyYXRiaKZHGga6vZm2
iWrHtnLKur6CMGES6dIPmRKWuisxq+lDZxeTKdHJuAB1hAU1QiShdOJuHNK8
Pd9oIgqWev3Oc3OpF59Zl5cIed+Xwo5w36GKO583suB28CGlWgGkUfwlb8T7
Cuckjs9MksHJOcS79UT8h4VV6PIK8MtSql0zRH7O7TZWsvuLIa92hVbnQ2Jr
bcTZb557nhnzRUWIn8yWD8Z3ljxoulkVVD+eUro59dz0W30v4Ql+4oU19Uyx
+cdb3NiLOMYYd7hrzZFoMxWO9VRVWvH0Tzs0bR8URCW20OuRnrBeL8zhpI6l
hYg40KLMthX6dZYVVR6ms+WlD8ZYyyWGmldLfVlstmmpZ5A877YYUOcUuud0
iJlV4OS83oUptkSKBe+HjuLLIoQY9HJ7QXZbk1RTYrd8fQ1+Tse42Jlmmkjz
ddqez6c8nEUh2yi9d7hx2TDqk3Q0OHd8VAqI6W1WDuLpn7nAKCWVbzPmZ.nZ
rMyZTjmVFsZcR0r4nuQqFbUKk1CMA19AGYJTY8Xu5notSQOV7LVjFc1X5yDa
ycDokxpg48Y5VEmZ1ib3SlmsZUTZ4oux3zEQerOp8m165XqEGzXnlaMBhrd.
QxY.Q80GUn6ALWHH11Y4kARTqCRG0iTZ638sMQSqhhNI5f1jxo9duFgwJutL
2Zvy2PSSwZhi1W9p50OqxatAbQ1CrvNCrvXpjD2tQejqDUNIYnylPjon5rJ7
0JZuSi9sR3yD15dEXKkni5Sa.TbkRblRO3d..OJiJicaBLfn1Iht7tcjZ0CA
F1cV6F6RE8jPl4Szg9NM5aZu0tHb774weOHUtOoVi82BDHYi.IkKMjd6Eaw7
zzbuEnW+w8cEdZ8NndZ2QQ8YBAOHOqj3TiQSqln0eACXaQ1l74aY6FuxNGMq
qxRnLNcW5m+19vZp+lvWguXdwELuvFbdQ.kWFdVoxfpCGBqHGbVodxRgvJ7A
mUnbnqPhgmWnP4E2gmWrCqr8A6Kw0j5xZrXptRNSCKqhOY1lRsknVUu6Bqxv
xjrYgIMUPXWYo5ujC6qLwNtb3tH1nZBY5qbt1whtAf5Q9DtD1maxgYG67ZtL
05xDeGO4P0Orn95LMuymbA3ObVe9ysd6tYyiKJxxK.1d.LsQXt8hC5d.mt5J
TeoM1IL3+uauh.tdW6AMNAJq4CwmgzRqxJMw7tWz9pKh4bBqad0b1sbq1qvn
3UaV0Zy45rjnSNdaePinkYKWlD08c3Byk8SmttF1za8Nibc2xuawgSvX2vdd
RVQzEJuIvbPv35ycsVGiGX4Fjs0EaLBXpcz6xvKNpVLO4P7RduiWlby8epjr
yypLvPtPPyEuxoFyjH6umGYOqqsW9yBLUsSn7vY0M8HhijcoXJCSThMfJkpi
ffPFzyRCPrT+yaWdnFr83rH2hvmj8XPqrGMj4nW6uTV9B8Y3nmyYncY.0cSn
SVfdyXACL.wBLfODFH3fz2udxwO670tzic9kXqRO5YoG0ZzyCl.TceMqF2sA
E8gSQKMGgPPlm0nmKH5Yu0PAHBVeYMqEsrAAYfHH2dDjdqgTBDBxsmcFAHeY
1idbInInu8HHHsPNydDDjVAWZOBBZMjYQHkei0J3fz6Y1yaHGtqBlUHHK.rd
ncrrw7uwPJCjdnm8jRYvbGZOSaLX5g1yRCClXJ2dDjcAY9XC5Ax8q+.lkALN
f5MfYZwfaKxNlF1EB74Ho8LNPAY9SLfoTCiCN1lhUWngwBpFH1fIuCjGLJvy
sAO3G.JYz.6EfgpWACfj9AVjjRXK29VjjbXyRlEIICTgL7oVljmuVM9DKRRX
tIj1T7g.ij1T7ABEsnSAILiQRoEIIrhDI8rHIgkQrXH87.iGTsL6gy0iDVl5
dCJP3AGHnCFP.qtZ1TSCplskhvzU.wq.2hyPWXt9bEVjjTPjTXQmBtvbJ3ZQ
usvp10PF4NHNfx7GR6FtvCadvLaHfE1rvhQDnH44itSHsLIOezcBK5gV.qVY
7gT.CFOPICoCZArnDroiIAr8PaPCNBFOnm1CmxMLKLBK5+R.qLPVb61zuK.j
zhInBbOEsXxh7aaQTUc9E.9EXVzHMrcWfZwhuqYe.yROKSxy68yhahBE1tnP
sn9ACX3U1jjvrBPsXfLv1YCpE2SSJvsVfZu87S0MJgRRaMKggq1aOpnPKgsu
8vUXUFyldsfctTFxnhfI8dbQtsaPQv3A2AM6SB7fjrzZO38Q+To6lS+5QcHL
EoNtyfcbWAqiNBVOcCrS5DXJdn5u9+HXfs9H
-----------end_max5_patcher-----------
</code></pre>

Here is a video that shows the patch working:

Project 1 – Do you like my car?

For my project I looked into how Max can benefit the Unity game engine as a separate sound engine. I did this through using an OSC (Open Sound Control) plugin on Max and a respective script in Unity.

The goal of this project was to show that input in Unity’s game could control audio output in Max. The game is a demo in which the player drives a car. I’ll detail each of the 3 control methods below…

1:Speed

The speed of the vehicle directly correlates to the playback rate of the audio. This is done in Max with the groove~ object.

2:Turning

Turning the vehicle will pan the audio in the respective direction. The horizontal input from the controller is directly given to Max and then handled with the pan2S object.

3:Song Select

By clicking on the vehicle, the user can switch through songs. This translated to a gate~ in max that changes the route of the signal produced by Speed. With the current system Max remembers where you left off in a song that you switched off of. I find it as a fun comedic effect.

Here’s an image showing where Unity is sending information to Max:

Here is a link to a playable demo (download the whole folder):

https://drive.google.com/open?id=1NVmZNDG6-tNFhF-4rbWl-U9pJH007Hqc

And here is the accompanying patch:

<pre><code> ———-begin_max5_patcher———- 2091.3oc6a08aiiaD+4j+JDD5id0xY32G5Cs.scQQQ+.WVzWNbXghshWs0Vx UVdub8vs+s2gTVN1wxxz1JduEHODiHRZMjyueyvYFR+K2dS78kOlsLN56h9g nat4Wt8la7M4Z3l0OeS77zGGOKcoeXwEqleeVU7nltnmJWUOKq12Itt07I9g Vd+mdiT2NzEoUoyypyp9PVQ58yxbCgstul2Q8OuHqYpDGOJJ99zhowQ+3lud 83OlWL8CUYiqaFkPkvzJKH0BlUozV8nHjyRTRKminVxsLEJGEIYILpK5yMuN ZhmWzNuAWa+5s259XTn5grehVesKt5rG8Sp3oUkkeN6KQ2UVLUD8GlUVtHBB VagazV6oQVlOsHclSur9+5Sy.BYhzoZrRoToDjZfV+FchEPfY4ZRo.ftesBe ciKS+b1jOPSO50+gz55p76WU2PZtYixgTWoKyGWupH2gZeWjPrFbuI9gxYyJ +ooyJuOcVc17EkaA8tdqlmVTOtrxM+yKK1oWmBLqXRyxxCiwyWtYs2z+x5zp 5CNh4kS75vlIXbaykU4SyI83rrho0eb6ucc93+y1uf1QtYpCNcVauK9X5xr9 95KxI34.qt+6pzY40+bGSu574YKqqxnu65WdzO56xSSeAHq7SmrpFHxJfIBf gBsggZtvyN4fHAMRMqk+9Ji8UF6tLV7zYr3vvX01DTvkFNsmCXsHXIBqDRzR CpYnhZGLu5i8UFqSjqd3grp1.Bd26dWx7E7fYrf4fL1GlUlVGTbRbIEM.nDZ qf3pdhIx0IFh7JYswHQ86ophCFjz5FGWNqrpELzbMJEVFXULsQLhZRhVAw6I wwjFC5ZB0BIyZHYgfTQFKvVB49o67F4FAGd5sNJvl19M9PYQ8x7+mWQQaivd Y.Sdz+He5GqK+KmFfpGB.kh784.JS8b.k7R8JfdB.JF8mx9T5+d0Igm3KCbB ZdhA4JtwBJFoiaPT8qH5FDcb474YE06Ao+927ln+9e7u8mi9quO5t2+O+WcC kr8gRgM9vXjUzjq4NITYSTZFmSMJrREEppKIKiGirGCi1VC31q6Lz.ztWKSm lsmFfkz8ZF5XMeX2Q8RYQtWcfbNo.T.GMcqNTdePhCpMvNzFb0PZguL58qpJ BlDvM8PBTBQhhwLbFYIAn2sKj.RtgaAvoE7M5V.8VtgtLSwsMVXFuMIYIZTs VlMVtvNVyqMpFNsUUOZqNnOb04QeTfIADjWHAmKaJGApfDEHEfVPqUk2KHW1 uhbPoIKos.BmlH6glflFeEfEUnxJ4.YBvIjxXXj2X9lkm4pUVppnueRY3vp3 7f0NKHWmVH7qHvdvUdW3JuOyelLAUj4H8OqgvtWcxugs+uawjv4I34wSHS+8 2MEXTHO.GLTCRo2AKoJwqHQ4fK8tHJPODEoRlX4BPvYaJdU2LEw2tLER+jE8 16VjkMI5see5j7xn2517H+PtQEcnEYw8cB.a9qOxTWJaPSJ6cnRtF4GoXLhe 6psWMYAshyx+bFs2oBB1BEsmmEZmJUxpkb8Ivm1f1feyxemlVm8kHQvTUzDd sCGch0Sry8M6HdHfBaR1m9FGxcBNb.QcQzjmIQyvddjfcU5+iER8.tOvhzB7 tvy+WLLkTtK8fniJJeLeXmCC3gYkz6H7kLefNRWeUo8qe0okpvtGj4U7zcIf 7KgaR.GiZbhoH0kgApuZK9YkoSbkbfj1oTggyzw.zUEW5LFQ84DDksoZXsaE MJvl5opXWxa7k2nUfWSi1tAO2YN7bv6JZ7l83hpne2CPzaoOwvSxQetI4n5P GnY6GXp5quOc3p5SuaUiU5b3Yjn1vQFGveC6aGtHe6ct9Qju+MW5J5deR53u Db5up3SKTFxGsE4LlXqCnhyFdZe.Wa.3ju1.CTHdB89Q4yoPYd8VC75sFnuy kDhpxqsrS6XleYt1.ctENHe8flO6MdkW28cwuhgkQIVmMK7Br12owJkXBPtQ A.2bZJ.sehVQydsP.aUGP2QQxsTfEZWBitBIAz9SzGfjCVCJPv1Ous0OU6yj huAeH21stansXRm.anh6Rkc7NfXza0rqI0Ns.6REcuObSIyFs0GaOpEUkKJq 138JQ9hiKBVO3Bm6z2LoBj35KxoykLYswInRaQ65iMAnXcHJmg.Htwsumo4F HYUZJFglK7vPCJlmpvH4NoQaBamNlrylNHnn1+Kq1VBf2eC7bpvWY3CNQyJT pbtGPtyPowPC8maIHL9abDYC0djlCMhI22lIjlFVyH+fhmkW77emDdEnq8cA mkkqpF25nt8m.QzSxZBE8.EzRqv9gmJubzgpDPvRJ.Aw0CffDgrjb4Tt0flm OYQYdQ8ZsHG8+BE14Fj.TTNjSZi0RbPZ6HMW3BunieKCcLxKcIEhxyUEksFz Ka8eBdligB6vkJoPDjrOTmblHedNPBzW.OJLD4d2ZhlfJunIM+T3pWljTgXn OHRJDjPNDV57PHWxgPPTbEQ3wHWlgRRvwjDenjzQMXfAPRty483RhMDRxDhe xgRP7iYMoGJIcLpGpFJIcLpGhCgjzWruZ2Fu6ksHsw0gbV665Rm1pKeZiTNH 68yISbv8X7ccoS6PBd.GDqhP77qFJAAAHnKMnBjGhtaPbRhWL4xXRz68K+Ra VysXa+v9Ay.1KmnAgRztTXABAVfg.V.Hz7i1cM0jXV5hEeNqZ45Q6EBke7mZ hK2Lx+XdQyi9jLiqx9bd6384hFmVQYBWSoAuppofzOpZp4uOm0phU4qq4Es7 HQ5y8tHcd1xEoiWWAaJE8a+0a++.YFK0w ———–end_max5_patcher———– </code></pre>

Project 1: Twisted Rhythm Game

Hello! For my first project this semester, I decided to make a spooky, Halloween themed rhythm game. I built it using LeapMotion. The main object of the game is to score as little or as many points as possible. The player can aggregate points by positioning the pumpkins above the skulls right before the skulls “pop” and fade into the background. The pumpkins are controlled by a LeapMotion hand sensor that in this context tracks the palm position of each hand. The player can use both hands to guide of the pumpkins separately. There are a couple easter eggs hidden in the game that trigger during certain sections of the music that is streamed, and when the player exceeds a certain amount of points. Below is a video in which I demo the game:

Below are the two main max patches I wrote to create the game:

<pre><code>
----------begin_max5_patcher----------
11196.3oc68s0jairblOONB+e.VwrNNdW0bq6UAGdbH68k8k8GfCaGJnXita
NhjfGR1RpGGd9su.HKPwVpYgDsxDfDyXqyH0WqJ+prxaUd4+5u8u4mdyGJ+R
w92j8Ol8um8S+z+U0m4mZ9b0elep8S7SuY87urX078MeiuYcw98yuu3MuM9E
OT7kCMegEkqJ2kImE+i332w9COspn4a43mp7wCqJNb3osEvh+l2j8e190173
5kap9pMKm5jOK7C07okse5k217Kt7C+5MFs73u+syOr3gkat+86JVb.Vhboe
l8sYRYtYl3sYAe8+UolIx9Oa9g9u+a+ap+6p+5sjiExYCNXn7o.CoP1fBRYv
V+24BBPi4GNr6wkjPoxdPoRURJUVSUUTpR1PiRKEj5lhOWs1e+49ut7vr0ke
ZYQ169T4pLQ16Z9n6VtpHa+1xxO9z9OVTQMka1Oa8VyweAqVtoXQ4iaN7riY
LHX0J990yOra4Wdya6MdpdA7TYDo4bBQ7zBbPtlOT6XCOue0rOs71hxsqluo
Ha2COc3g0Yuaa49kGVVtoBiEY2Xyd29Eyq.YoH9m28shilk8tOrpXysuuXy7
OT+cdIB9FYGfuJuQHlFt9pBAFA+cYOUgxed99aI4NsnG2octTvftRDdinbir
l78RFuQuK6KiFHXSBBBMHAe..g8n3DvvzKdQB0jhP8NfPC17FBUyJg9EVITc
G2tkQJURFk9gGOTosoW7teX9l6oPwrMI+at20PrdKXIlo8+xvw5M8h9WVqI3
G2BLqK8gswBzuGn+FA6+nr0Ot9CE65mfp29cG3amua95hCE6hpJ+V4VuNMa1
zFjVYQJ.Gvc.ZrR6RFNBIubjqHGMNqyJ5A24DadZdAIHZvoyI6pwED06DXN5
cZMcxENibw+WigbQmrCAA1YpZq6b97IJ.nPc9SI4eIKHDmwex.YBBGSShRdz
6fPSMgMIRf4r9OJVDYRpELHy+CkAQlj1G5iQuahZPjIoqRAsYJaOjQh4jexZ
OjNoBvfROwMGRqQc7SH4OhF.nUn77wlSmE.iI0l1SG3M3pHVwTfXUI8nODC2
iM2LIHVGlKsTxFeNYVKuK6mWJy9keISJDYGdnXSVCQNzOCoxzwMaH9V13ylo
4LL1mfIR6XhIZLt6bDRTCBjj6GSDIsu+9miHJ+.wjjOlPhDisujxjrnb85hJ
qW9NL4orsk6Y4oejgNdUceLNGMzmAzHJ3gJ+RMU9ergG5rCqYiA2K.YkgIm.
57R1qVoD2K9AG6Scm704n7y0JszgFmQ52GKdp2N671W5u52C8adITIfBULfG
PUnhkOAfeX9hO931ra9my35QvUo4AZCBnAtQzltVLII7wMqJW7wr8EK1Ub3u
6uiC5U6SaXnHRvRfoO5df3J0w.UdWB7h4cnT+GEOCjNbPhv4nyyfyxwuX0xJ
F9GJ1UjcnLa+g46NTCMY2WIsmG9+zbDsokY.hxCE21OanMAKOp90O34lrNjL
51AqCRnMWi4.NNM6uNaG6swAmCBz8P2ePgBB.AfFVCv+ckaNre4uUj8yxAmS
v6v.CJci1.WNmxB1unbWAK24SmS14ZeThGbVG37R+wDE9F8LW1MlY5LwfmN9
pbcZ2hxAc+PLBkZlSQ86WMq9iiIS8aF27MWmVzXNnUT.xExsLBM2VrZ9SYRu
QKcjY7TO3RjpNxKJSCiguQ1XPyZVO2XYv7GucYIY1L0ibetxX3NJpiiI9dEO
geJiDhz4MIngP6CriDvsCekzI4Xb4Hj7tgSIq0aFSbZ6DlgvEPfCRBYGtbCm
jpCWqkPDSBhFAld+UctiozoUNn.kCNqfcGqOrbcO4HtaU47CoLXP0iS8tJ3O
3T2CO3ldJqbPI53UEbPfTMd10NruGPwq0sBYdx7IPAYNKnCHmBOmNTd+8qJ9
ARJleXwdunIA9NpsWHPRCgjfpq021aFehDHJMoKvFYHTqJzAR+crFPgxsEaF
ZeJkcnPPBlA4zB1kCBlFpr8LvZDYYXNtqCQ9f7oFefRmtThfGN24UjwFbYJV
TkNArbP4iJEwvMQgXwJyZp1WWj1FKCe0Ks6J2sddCL3R8xawJvSZ4+0Wuc9h
eGsEBpdXgfKsLQAbKvCc8BRtLb1nqt9w8KWvhYPoKbfb3AE8PTDyY88S+t9y
.OzaGufZLOxhLtz7jwm0N26pnym98r20XoaSi83+S0s2+04K93+24Ot4Pwsy
Vuse4P+9k2uY9pWPvvq0CIoRh5V.z4.hNNBWCNtum+ohaee0urpep2W2XWVV
44Kzpf9ouBYUn37Jl7COtYY8F+eLyXZO.qk5rZU4mueUk6.qNTrda4omuQgR
aNrnbW8NaYkS0O6Kut71hXFIbx0nJza2x6WVAWqJ1b+gGZaEBFuyOynMBo4s
09mt3i6+JN90eniaCYM2wwu71kUXz41H+0GmuZ4gmdo8Rsev6Orqn5mF1HsL
bsbbSFasMpzYxsMbhXUdM0t4gKZd4preYvKUEYZIug3aTHIK.8czgoDs81lQ
nCSI8HJi0.Xuc9v7btmjjkCFJjtIWHfHPB2O302iu9Pm1Ypw5gNMxtZwIMbB
4sseLC6hJF9m32HRJkv2FMNOY2LFwBAoimmRYfmuUEXOVTUFT74463ow8HR+
bjJQzkI6WC.ISdNwJU1wyo.AP13TW2TotCprQusQoutoxNdjDvIQMDiPP8z0
HU1QuDAZjBZ34PchqUpTfIsPTfBE6UJUpy6Hb1Z3pHDzlq06k57.lDaQITW2
ToGCUJgPxRBUdVi.2Wr41r7a1UdXdiy8Cc9dl2QafCdsZiKZWL6PQXDgBClG
pwDCbI+PgeDghzpmEV0IpmG.nvMhPQGs7VC.Ewb8ienvNdPQniz4HV7q4gAB
JLiHT3vT3jpASrodDghNDa1lt3xABJTiHTzgrBADsgvPoAQNdPg2hgqPBlKm
yogji4CSbZl5+hQgV+0LeyIYsXZ1tbS11GWu8iK2rmmhpIcmRzFqiTki+WAc
67Ol0v4W7km9s52en4OjbGvzmppIo9RqMF6wXY0n3r+h7+LS65IB.IEKEEWT
5VmWadc.LFFVafFvyRst3vtRVJd7zR8huyR9ocDew0lyyJex.TlCAlLlVeWq
QHP4SWgfP8eZCW4DoDCQZrW2DY5TCPkOAdZDU57JKdmz3zW2DY5DIEZPEFY9
0MQ5QbRpAkGWsDoNsZRvpXsxNXgeswtfgOynSW00fKRNggrxCqqPuNNvP5l0
XDFrf6QC.L3GIXHcu3psCyCOMw..CtwAFjoiBe.xXISXn3FriDLjNVqAAjqC
5gR1fYjfgzNa3gzSRCJLF.XPORvP5YsVjaPaFpKEpQBFROypBfACJXxc48Wm
FGISOoAxgzySYUCjwQxQ5rNcy4MXUm7pBrdVOpEQZ53G6gT1MlSXtq6b0Tlt
v4CPDknLUMuPqe5z4FmG78yXXOiU+qMwIs9YqFk5lM8f9MBCwXoF9CTGoJsA
x4POUn4sFsL2Pp1uY918OTd32yThQ4oEBZLurPr.7XsiTs3oEqJ98LwL4qo1
5H.IDnPBar0KbcMN0qWJnglz9ldu4Effzgr2B4pjTKiy7gvUsxRWGMfLwIgI
bf5hsiXOrM8XKHNB3iI0ohyDP9+QlaDlQQ4cS8JPQol6Dsn1WhL4Pe9mtkce
hcBpIdCruCEhvSrG6im7Nj5FgdXLl3mFfd5JqiorQMgi74XPAsf8JNYQYc6F
X2qYJFz9+RHcz1i4WfOf4RAXhDyIgUScgWs1k6ts31l1bNO8z+NFVkMhD84C
P+nXGTK7K2rXna9bZOFYgs2D3so1+PwhOlsYIO8eDcGiqbSSK2TqLpAn8if5
39USooGM4FS9oTpyxa+DjUBMotLcXvnyJy6+K+k+xOemL6eNSMS8Oj82+2m0
7g+SY5Yg+A3iq9Dppu9M0el32fp5a3l5efpuEZcKnOlDjdTlejeAR9Gct+OA
xyAjZL7iThiWPFV5RFvMGjT+ZoaRZUc5.MXEfxEJI9yaJwSOLeysG9b4faJg
yghCPQWaT47fvWFMPvihS.h1Du8RlQ3ZPReHTFS7ZPXRJCHsAlZej38CkLfx
9NifnvchzM2YuE.As9jj6mUY.iBHjtgV3BQY.gA.Dp8mpZsGdLH86LHNEBrd
98qrX48ObfEuPLczVgfY6Q6rg8Z1wxz8p6XZ1UQoxqcGKSmbQwrKeHnyS8G5
lu5tSs+PW9tCYBnXWfbzPG7+INdFbLGC2Hkv3EjUU1jFTXyAEIBH8+mZlTZS
ZHgI.dTQIweA5VoUgfCPkC1UOUcqzpQvInhcM7olak1jgVR0ZgkvOIkAzg4k
pHw6lxtUlNk1iMPFUdrknOQcqzlterAsNhVAgLCBMtSMF9UZSZTILvcOpLPx
uek6K9T5oEyq1IDsDgekp7gnSgvr6VZEBGETw1M80rekoKkUkdvnym4Oj94N
DAN7bY6Rj1fgiI.U7hQ7mPYBnzhfmjTj7Bx3JsCiuEA8jzxxzyr6VeJnj3u.
8tL8bW6HG.gyctKPuKSODBa4D7vTbep4cY5JnJ5coJD6yOSLY.FIBuKqjAjO
k8tznv3cY.T9MU8tznw3cY6X3lWPnwopwv6xzCotn2ksJCFfWsbec8PxQWnL
cnDLQA9.m+UsukRLOBkxau58sL8TMKVRSCAc1qb374dCU+kGSegROf7Nxr.U
Ff1m+mn3KhhRLbhTBhWPFTo530pZx8GkyOI8nLc2Hw.UXNoD+EnGkJCJN.yj
1iRkEEmfdR5QY5V0Wb3GobgIoGkpzlVBURVkLfIsGkomh8JHAnqjALo8nTkN
gniuNWTPH2dTt7Kig+j5NLn7TDvjyu+j2s7S7TckomftsNT5DA5bnrKRs7wc
7PpcDnDv2Jiwds66rJ8v7yDYes4tqcemSOaFgqmCBc1m7T8xxouzCwyi7Jvv
BT6E+IH9RfnBCeHkX3EjgioGouNQS8Sorx7onUyomZyVQ75iLeJ64b5AzcKG
fInlxdNKbX3DL9vTzy4zCh93bnWYgmkbxICH8fiDdC1JhWNk8bVjtXW7s8kP
+T1yYY5IjXTyeTPHyfPsKiigqyoGzCwFacL0TrCPiI5vC6JJ3wMqzSI01d3c
X37ctC8dudJ0fgRkB2fQokaX5LM8ngNFbfbPl9UcPB7ndfci4ZOHAJOlGXeH
nydlwwWTt3pBndhcCL.aFvhB9pCGw7H6jBiWNVJqBndjcsaJFp.U.0irSIwe
4Ep.U.0irq0S4PEnBndjcsZJFp.U.0irq8pIoL.TOxd6.vbZFp.U.0irq0S4
PEnBndj8nfPtCUP4i6FgPEnxw7J6ZHWirWydf3wX6bLPAW0tZ4PXb6DfNS2w
LMwLBQ.sJ1Klj19jutp8qOltBktCYb7ZALE.0g7+DFeYXD0kNJQwKHCpR2aM
Z8mPIkSQqIS2SMZ8ifRh+BzixzyGfVN.o2Lk8nriQGPjSH9.TSMOJSONAZ8n
TImhsZNU5g.PqGkp3Xleh5QY5F3eqGkRH20mpdTltQ925QYTPHyfPyitNFtT
5rHboTFSBG00qGHoasdw7sQJBWRY95EmgyZTdwEGvhCVUidsghJDbhBmaJV0
npz8c.WkV2ZiOESx7dSY5X3oDu+PHweA59Q5dqdjCPlGrSY2OLdDbBUffbJ5
9Q51ktJlbTBkcRJCHGQ9RUQ7lor6Go604JXzrKyyESY2OR2yykdWTFvPT5rU
x.GCmOR2JlrgHBjSVpuNRNeXTHLbVlat16MOpzcYMiib57BRxd5VroqhPqMr
IXmj4pU59TqElyzjR7Wfl1lt8NejCPMoyUqzcy6ibBR9GNh8KsWuzBSfVfRm
wzbHqpR2RMTPrYkA2jLNAczYYfVaWEwOoS5szcWJUNL9xCpIcRukt6RIAeCZ
0nvLHTNJyWQU5VsF3UPKa.y47FhQL4q1xYUGslWXnJ5gGl1lyJchYlm75IzN
lYnfOBd3ucL6zGh1u6qmPEH7Exa3ONm6QzTnd0TY5twpEd3PoGRKWqjUxDQE
795oyzoNTPNSUabuOXF.AQHx+3WOglz3Cc6AJXvo0yJch4Uwe8DZ5bREHPoC
l4fNCuDZmwe60SloefenMazRlLy2Vxm9SYGlKZdFY5+S2NOi4Voa5asQviRu
NOagq+OcS11kUaAd3WR24IxsPyqUeRduvUUqiwEqWMcltK6T+dS0pshsaDOu
la8EVIzzYV.HMeXnSLAf70SmIcTHVMrREHW2K4+.kMBsiGIzLXD514eLaa49
kGVVtISLq9OxYjHY1fWxrLO8ylKh3Az77jRJzje2pxpMV+nz2l8lFEWekh2N
e270EGJ189hMy+.7aPzG1C0KBGeUv1ck6VOuAGbIyq4Hx3o6s0unAHUOAHYT
1Ak.z4tR8+txzHc+tCUg00zvOrINxNJnZHs2kR3hjNvJJLdfPGI+7yAAyD+t
Rnu2UNxkHj+gPXxI8DHjBS.WIIEfN6Sz7y5g1OIoO8zDUzTEURgMNu5gppiI
pWN7Te5f3BwmlTp+x11LW5flol4a7xRa+igsYmTdQ3jVDj.BII7AcujAHauE
mFMMyolzllktB2Oxk.YG6T0zLaGglB3DhX.mwk9WWdX18qlst71hUY6d3oCO
rN6c2sbUQ11GWu8iK2Lq5GK6cqpetv5MIbCISl8tJN5hcKmu580+rYhr2sq7
P0m5KO8aQYzU+4cKJWUtqRZc0G3.41Yua+h4U+FDyrs+ui6pUK2Trn7wMGdl
rYLGLUjw6q1P6pGwjmWbeet9lNMG0QWwi+cLg1qsnlkzSIS6F7TTQldXpaks
J5Z9aCmAmolun2B4OGDn6ASfpi9WdzAAX3WYl5ZzNI7q3znYh4vkZ.Zy2+of
ryYGRG0ANnusUPlIPffry9bOeZ4sEkaWMmm2GPltrKsP9TFrD16oujutp8uN
CPEA+eHLP+jrXtedvPI.cIEuizC5OnVNjh3fCepEtiz4hZ6Uigf3qm6tyTAg
xnyzR0LozWstYlJ9MoRbRih7YZYbCNfk9s6faG4tlZ8M9ARl.rJcX9bqzWW2
QyzpJKxlIsAm6LPkcngpNRDAQSQijCocE.U0ugMOWrx9YU1vKaw0wP.ow3iX
cPZYsNGFKDH8H.AF8G4Pt2vZpKsqZeVYS77UqaCoJYdVo5gxWoAwfmLONhME
4Se.I8rBBhAz.hGxLU+gALdceW4lC6W9aM+bMMguS97aprxqYc9Wp8G6MuL5
oeQzKjNiYZL7OV38wPyK4wEm5zkYOKd2zQZd4DMZZUB9mBKGxVkshraIRxXM
doKVoaCZfbFKDn07bBXLlRWqR+jW.140sCwOFAus6J1Vr41r8GJ2QSEZQGS2
KorO8amBcbROzA97g+D29JtkdbTC4C3P.bKJWsJaWcrBuoVf9q6N6fHyy7Rv
nACLBh6fXWCv3Qpb9mJt88U+lp9Yd+7CG1s7CUBu1GAxVj7mdSw5OTzrpB3y
DOAn+jXUwcWmGD4HjC.mCw7U9x8bnB9uu+uByxZajf+h8SfWREVW4.WNTZdM
FHxpJrqU7ygnMNMD32gdZ4zffXujNrzSxEYdrbS.aM0rhXxqCDqi4KY7N5.f
X2OuxDcE8t+yhiMcLoUinly0jjhZNgs8EfFZvfodAeP8u80+drBef.CVFKST
O6dI1.PWGbgRgDAzYAqLsb5f8usJa+pkKJ5oTuwD5R6sC7VSVH0hrTbA9P48
2up3GPovO7Cw9huMfLcK0BRunXTFZ+uLv.8WqnrckYRQ+kf8i+7.omXGQPX.
lGuqJlucc4qKJ3usmtb8bTw8hIgNBTA5ftdIAuI6Yip6GJlefkf5lNp+PdS4
fpZKlhc+XgzsxAxC87rMEGtrOO.VGSlGHbhwBwlhK5m8M.kYpLclIyl4x7Yg
r7g+w.S2A8TwHz.uBFycxfedoL6W9kLIwcjf9vZHrXXMTs08LA3w3cOPk9k9
ZaiE1X+BhhKBiIw5wzZRrQcZW6DqES6lwZmFmrZLcEJWXZbxJw0Znh4.90M0
JySaUBDpZoeRboUl6Smezwl3VLobt1I1NZ1jPG2zCct2qdhMceNBxmUuvxuA
mtA2.y7zNUGKs8VoyrlOq1Am3SOGwsRQqzZC+TuY3odTlb4iyfEVI9g2wpP5
Z1O29Lo4rR7ggm3SWpOvLusR59.zvB7COwmLF9wQsRqzdVo8QnSUDRGNgniG
9Af3UCOw6PLxzGFheD5RGIyuAstIpnGCl.ED+HZPmWgxnlXKH9J25Uu.mQLx
IgKmt.JWNUtIAw5PYjhZRvGmdDLqjfKmN+jv+5zSd7nQHNmYRPqBTFcnmBQ6
rx7ATFYLQHVbFUPHwd17goXQwxOUL3OHkUhh2V.48Hqki0Hg.omfqGY3AqOl
lHfE0sfoLBnQYusZBi.o6nHh.XDtClg6SSHPfYXg3xkSVDPGPM2IxmtWCzNT
1vCwSeZh.FLF1q4+Rvpx4216bzgJCC0oeQsX4oqi03.q8Gm8EGxxuYLleJxz
y.1ixCfz7v44FEBiDJHPIS.RbW9QA+3fBomditnxQgXX.A2HABnhKqERTW9Q
A63fBcLl7NZqndfjKXFIX.0vkKFjd9QA8HgBZLAPv3GHdA0nfBoy1HixNrff
bb.gzMR33vRmRP3rUwv5xay9vSYNNpjgzIdQcONqtUVCALCxotevJY3xYXdG
5nsiBFES3bR3w0enX2EYS0L8awaOsYYyZ2.t1KoZFjLdJ0i9TcalzYNrGJtY
vAxXNYcs9.8c3dHLBykBsi+LtrbawlrAOsK8os8Ibpn.Cy561bakOQaeb09h
WtKXpFZShRaLPzUom0acqApqzWPKf3lPdNcoY8Y04u+gxGWU2Anlu6P17JAh
2jyRgLpR2qvDfbNHei4s6zcW4tOOe2sbPkcTXDZvpdAXeCISB8zWv+Y42bCe
nroMc15HarxIxdCs1zoqIOoqxfHOQNTBujXyyYupusrbUV4cY6+3iqVs++XC
K2.RmzGP50FC8IMWyubRw3tRrdeCWOHNmDt9wSAVHsSqFELIEDrm.H+1pr6V
t5vq3tOAMk2zoUc7.O.EMkwNsEykdXHpAE6gXOKgSW6p3HVUV9wG2NJbDoeL
7f3j512F3TXuH6lr.GR3c4HR7GezDGCE1wc4xzmNQc09la9whIhcl9hQowjm
NiVMxXCTrwVWcNmV7N5csCcG5+EmX6CIMsiQrf2wv36HLa7Oa9dLeyskq64Y
chNYXONtUALW9isnGNG+cMgromRHi8Mz1+WBDwhuc1ZLHBzMn7iD.4rJ+VtY
4gkyWs72J1mgYpM7Z0EldDHpaaJaR9CpwsEql+TOascD0Zxzo68EQCegPWOg
S8ILbBPBv43zR.FitU5fVFSiCKjbWV4UJMlVGNXGy0NM5P3jh0Kupowz4ckF
jFA2DuZowz4PBj4.W6znDAu50NMJR2EKgTiHNJZtRoQClNPv0NMlVtZtoNbf
Z6P83O4275FXY+3VDltpXbhXrgZffbE6.QXz.hzUFhIDacytABH7iGPj9pAL
UoGNfvMd.gAicIPRwO..gc7.BEFiWFLfvLd.AlmLX3.B8nADpNZw4M0SqNNJ
93GHTiGPjNUY.+rGNfPNd.AFi+GDfnEAxtQOKq5OhYCNVjNOQEwzGN.SUaFM
f9WWdX18qlsX95hcyyd2QjQT8+K6W28p5W06ue06q+U+X87Gr2IT6K8fTocz
vAMJnXqV1kOHLMULL2LJLMoaTGsQrSJHiooarPLZXQ5GpDH+XG6XfvhaFMFC
SNlP.BfgTHFpaIhQAKRODQfV1cLAVFHsLhwBJrcEkF6PCE2LZrEZDJbawB2P
cCYbjVHQbCo01iA6Fxn.E5bD2PnDJN6natb0S+NjJu2T+uy3Is8SG2FnQ0I8
lXg6vuYm0C42UEzOa461txzUxuQeRXc8RlAhOWta0sY6d3oCOrN6cPBskIyd
2cqJmenZi8JlwccMgEk3GWhpzRNgTcWBYEgRdkmHTIidC7bwRSf+BZqo.dF9
lpcxd7gFBqK71Nlq5yYY54Dss4scTNBmBgWtY8pL873ER9eEgUzxkLVjtK2D
u4qbrmAvOtY67EeLaY1xWSd.hY1NiH62QbGQFqnY4Us3fzyV4X2n1xd1utd4
sKuqb254GdUI+4YvAO9S7zc8rFlevFw.m1Buu3ulcWkgvMvwtx0OLuNgXucV
0G+ZvkWAOxKgMZDC93nABrldv0nxxMjOp2QXaTR..B9Hj3GFEyzekr+8Eu5I
V6IBIe9momfT3kTfjlKwdhAjU9SdtlCBrOZJf+8vO5QTq4Wa8W3avt8kOtaQ
K01VztYhuRQ2VruxWh4MO7yIeW4O+6pb2sUplqo4yevQ7VntSAT4sy2uEDTr
E7n1B932FEqn64jyKuhAGsKXmjXvP2BZQgol.cqnFEubfSdYMNd4ysGHgYVg
BFHj0Rh6j1R2JhYAUJxVu.pETJHbECC7gX.kHv5pcqVrEEKHJARt5ETwzMEb
aAoHbl8.ERLZk3h.F3R6Gts..CRtfATBNU4zoANfRLYc0skooYAQIlzSm9v5
geGBU9ZxVPOJgVeqjFR4i5wVfqqSdbFSRmnaOJwX4zsdnrr6aMEh1iYK56Rr
cLiRhkmNCp83jeP34LN4GRNOmQsE9VtAZOmQcalNK+7XbLTJHa8b3jXRGakC
EE50ztfcyDIoaAQIP1S3YHJwgJ5T43L8waAVDMfaKHkRF0A3znMdmHbWiS5.
gWdPYlrhSeCvsEjBN0B3Po70RnTRAN8NBxbHGkPKNMpCm234BFOls3BzCcWn
snjhYoyoPKpKSVBoPT5BoS0jA0QnkvEDk4EV5h9oAm8EJg6L2TTC4lPw30Uj
aBYNmQvC6l3rgxTSxl.mIfByYNNFzMgfUdBKddBIa7DV77DR1thhKDmDpcwf
yNICg5WL3rT5HXPwRhyLgifAIKY.OUxFWMxMg0wnOWn2DVN09Y834.3CI73O
NDrwSfR6mQR4cAaunaRVRCtyaCgKIRo2BBWRbhRsTRknLdlt3YXv4ev2AEzd
oA4lntwgvm3CCRwGJNEjhcSHt.PBslSkq3tJ.7DTcWPhmtoZIG5vAnwI41jS
3RpwsjDZDrFoxBJoRbLOD9TUFMRS8obIQoehPiaT3Lukvroyn7C9IoBmUiFJ
AVbBBzD5mnBmf.BeXNiBmf.Mkmk3DDnHLLCJbBBj4bZ5B1MAm46D5Mgky39g
cSn4Lte31DpylWRFR1DC7y47cr3mIYrHznQouOqHOm031CJMqW8j1K.fvdI.
D5AmGDWVIXHTKmDmVNGg9JgKmCHjFEnDlnYMCdQtINOKMI2qD3LIl0bNA8lv
v5wAxMglSSsvtITbZkC1MgjSCLvtINW3KsC2lPe1xF0MjahyUqc9gbSbNgUA
R1D3xDR5brUiqZROJdjjkDW3QUbZtE5MglQ4Pn2DJFUKfdSHYTsfN2zKEjjr
jpdoNjjkTzKkejrjnVQ5biUiqdWOpakjkDmn6.gvZv0Kk2jrjVbJnHTRMt5I
8n0Ajrj3Bzpfy9XAxMgzI4TCEtxZUS3KrowUXq5lpwSSzRJ5ksejrjCbdSq8
HcFmPQh3pdVMgkLrFWwqdzaeRVRaurYmjkTi+JBUKINAAtbNMUE6lHvoUhX2
DVNUNfcSvp6K3JgXfmPRDan.OG.UKYe5yBseWqWd61xkaND6jVFeSqZKXby3
iuDcUhJYig.U8KxpijNbp4HLt5Zbk7rtsXKIYI83kAQ0R5vKwgpkDmlUBSEe
MxJQtMu3IYIwoLmvr+W6Pp8fPGGcCbYzowkW+ZKmYx.5MggSCVvtI3ryafdS
vYsbowUgC.OAQ2twUOC.G.UKINwlDlhpZb0y.rjTQkZ7b0TsjJ77vTsj3Lwl
xXmhqpMfkjHpDW8KnILCmOhXcsjDpQxf7RhjSMRX2DBN0HgbSvZZFgdS33Ti
DtDBG3In5xlBOG.UKINoXZBe0.buhMrjTQkCbiaPi6c0zD1kU03haMbogpkD
mQaDVHSZbdqn0DZzlFmQaDV6TZMRAfD5dMtJtQq7bpBD6lfy9cB5MAmcHIza
BNa5J3ptMJecWUNdlPhtciqJr.VNpVRbhMUDFVIbUgErjTQkV7WinZIM3uzP
0RhyJQEgwqCWgeoIrgwowU3WZIkhBvI.TRn60pAtCEnk3tUlypeNX2Dbl64n
2Db1gBPuIDbZBDxMQHvXtmidS3XL2yQuILLl64n2DBFS6arahy1cr8jrIvoC
PDX81AxMgmU4DH2D7JwD4lPyptCAddBhLEAWoxw5q1gaKnXU1HprfMmUgRn1
BdVY+v0JTXUfDtlv.qpnvUR9rJLBmgSrZxBt5DlSMjHKpVAgQuPfK5ETVwHH
KDNAgNYKb3U3R0RZwqdkpkDWzKnrxXDZ7KIUTItnWPYkwHvIafx.YJF3lIEt
gpFmc5PbkDCiVCnvNdY4Lt8X2DFdQBbixHBKnDEt4gJkU2gJGY2nhxkDWmGJ
v4ijgdSv4ijgdSv6kMjaBEqW1F3d2hB2LpUEnyLSEth1EX4nZIw03mnTFFth
1EVRpnRK9qQTsjF7WZnZIwobHP4kDE9kjJpDmYlDN2FU3pNVEgUaHtmK2QWt
YhrkkRHEhcF6wYKHB8lfyttA1MwYGx8xgbSvYjFU3J9HEgEejBWwGobDpMB4
H.jvZARgaLxnrDZYAtwHCvUS0RhdHZxGGL5o6Ha2jwMLcfaxDA73psIEgo9q
BWkLoHrRlT3pjIEgsBDEtJYR4Iz4aKRAhTRkHEHZHbIQ9PF4Dx9fSfHgkUjx
fTT.cuagxDvujTQk3DEXHTTfAmn.igvkDoAZZBOKM3WRpnRM96kr4U.1MAmc
YEzaBN6xJn2Db1kUTFwPONMPNZKHTEHtJYRIITroFYmhhvX2fqfaTDNLMT3p
tBkmPwl3xvYEgkHlBYdYPX8ZozHMmgPaKTHujPn9HbAhivF3lBWj3TRJWRjN
1P4QINqYHrDjT3DpCLYTsjZ7RBXS8I1MAm4QK1MghyALD5MAquqLJkCNBiTh
DoMbD9DeHGmHdBcnWh7YgnjJGZiDQNIOjDBq3x7wbN6SEH2CeGSGsRQEHUKS
3EWbIGoRRIGFNYEDVAhJjoMHgUfHxoqFc2hj4Hu35IbI6WFxQxRh6JhRQ3Rh
yxUAmhFPtIfSDESBIk4HMnlxyabFT6EDtjHsfixkDmsLBAqrXJ7rXbMPskHS
OMGcJGjAjWsbDtjFbKIgRwvkEUGACRVRjIqOqxr5ylPy0UKbk1CcHOtwPvQ1
PRVRbIpNk5FvMS.jDNLXjdjObcfvkDotANSOajaBYNm0BgDWmvWRXVYJw0I7
UBIqfOtYEWHmUv+4xGOSHkzi9VPJ3Lwmj3ZC8x77KfMQfyrPShq63KILWAjN
jVp4YE7wsIBVVAej4TLgN66PZypkUvG2lHvpbHjoyqvM9aB3VJaFW6PZV.q1
lfbSDX04YjI+bNgl+hL4mE7dgDmsI9.mfOxrQl0t3CxMAbgTxFRfryASGWHx
bjVvpNYbaBomUIxHScaB6+1RbotszQ44Mt.xx5T6D4lP5MrddiycTBmuORbo
28QQQTrjFjshABszDWhOK0TRk3tHQX0AHwk1qRBSHJItgRfjxGSA4btmx.lg
KMWIMRj3ZX+RBqmEoFo62DdVhKYdO5iFIKINA8DNb5jHaU5b1J5vtGjL1WBQ
tGjZEiMDOzaBAiMCNraBkkwdzH5MAqYg.xMgjyLrD8lvyXOJD8lf0HefqH.N
pchjkDmQuDVEtRbEAvQsSjrj3ZGUrxkiqYUypF.byuzyrExGts.qt4gbpPvp
4.3leBrpHFWqdjU0v3hvJqBbwkLZrp3AWVdxooH3JQJifvPBfqDoNpchjkDW
HAHbhnIwU8PRMk.KN6XLTtj3rZwPXPKUHCUGqBO5ylfsGH.I1SGzKwEMFBKg
SItzsSJITXgDWzXLDFMFIxmaPyokIH2DmcJ+YFvMgjyFrFxMg7rydI6.tIN6
DGxMfaBulSaTPtIbbNmcvtIrNNU6fbSnXMkYj3LlRQ3S5HQYLkSvJ1i7cJYM
WwvtI3U7HN6LsTpSV0qtxAS5lT8psGvDanpW0sLSb.pdUIWLYuhpWkWDSZoU
8pHBXR2jpWYPJSlJn5UJyvjoBpd4BLSBokn6qnRhDOhyII55LSRAxGlm0D3G
6lfywNG1MAqUSi3apiyysGHLV.3ZxBGQGRVRTNl6HzrCbcTAIg8Z.ItNpPti
vqxZTLOBJwUEtnNS3JhSDofxkD0acRYcAKDXNICDxshgBe4vMC+TuY91sepX
293OArRuY87esDrN5svGubC7wZ3i2U7oks+HV3SMe2hGVdnXwgG20rAeyWpS
cI3mtrRT6lGW1p1olVqW58GdZUwdXidjz2LeM7yu9oluN76nlzta9iqN7M.x
ghubXQ4pxcue4lZxHhMhYh2dx+QN6DL5txMGZWjJ.5+W4l4KJeyW+5e396Vt
ZUyuz3h0tZUK2SagM286le6xhMGh6tpuzwef5UWkKj4t5UWKxCBC7up9Txmu
Yh+Xx1etfsRdc82bvnTF3eoEBi5E+wTvOlLRhe8+bx237M2upYKW4KP0Ws8S
ucW41xcs7IUat7u9S73gxij2Q8isGZ.BcBwJATNu5+yaZ+W4szYKO2aa4q2U
8aENWqgw1C20UmrKOtXO+tvQFhMEetha9eqX0pxOWy3mhun9Pd+xeKdHKUyD
1bgH70S44KVTsSd1gVPYk9ZJvGjAYCqiM2ZrLPJet9pR15xMk62NewvyiWrp
X82R99fVVynU8uxCNsBXCkJk+a9kOdWPRxoe5UhpctS4qO5p9WdgMDf+Uvnk
CwMjmQqBoSj2bWVTYnhE3rDZs07c.6y94x8dqL+se8FlU6z7yL10UKFXGeoK
i3jDdFNYQtrgkJHDJIb1Wcx6BWVbxmUp443okZung8In7NMPgxPPkO37zUqZ
nQBgJDjQh1J0e6squiktZuZzMzqOXsd3eoTR0OHec8OY0e8+2moiiV
-----------end_max5_patcher-----------
</code></pre>

Here is the second patch:

<pre><code>
----------begin_max5_patcher----------
2153.3oc4bktiaaCD92a.x6.gQ9UwVWN7PTp.AHu.8InnXgVaYakpCCI4jca
Q6ydoHk7dZtiRHkCbABVYKKoYlONWblQ4ue+6tZws02k0tf7qjemb0U+s9LW
YNW+YtZ7DWsnL8tUEoslKbQU1Wqu8yKtd325xtqyb98o+IootKUeh6+KBSQW
RL+63U11ceQl4ROdp5CcEYcc2uOyxCKVP9iweq5PYdk9WMTU7nyZuIyogwSm
u17f0L1OKUGe76S6VsKuZ6MMYq5rT.XvR50jDP0e.3Q8GXrkTxeXto+48uq+
n9v0nQjME0Z1ZZx40jE2lVs8Qx69zlzxrtrlaxpRu09DnuJX.uNXvdMvH5HO
rotoL0fBQtvGf0iHwpj9CRpGfmSovTjWkMYP6TJH7IfIBmJHfQAIVXvAgO.f
xr11zsYuDAnKulvizVILI0KlIrIXlvwfBTd+AkvCnvp5xxrptWhBs6yqHc6x
Hs+4ghBW3.Fq.5qIqfSYUXj0nHirFaV2YzuKY81Ccc0USZI8YdCvHpu1xpPg
XYUorp0hw+F.q67MjOjCjO9QBzu3VQLBnOTxmBZHwfFbar.lOr06p2tsXZt0
x0FEdLLvqgC7XD3vfAPP0J9IcBATXRviN5ZZmGb3wibgAQJCFvol3dVm+AJt
24DCb5zWpj+O.CXItv.QbzbgA8ILuptntgLlpLA7S1xxIfFNCMJY7kRMZHLJ
F.vCHbzjVsttj.T52g2yuUkB.iyAlxlMj7hEEjHbOb4iBBDNHlCTPuisul1r
NDYDyctRGQM4.nXFYTBgbOPsYUqIe.9Yukd3TBG5bkVxshuckNNn6ApW5IZ0
2ZRJorcaPVxc6omJsq0FgEF13OMXA9ZWkVjQNW0HxYZPBvXgGClT..JDRGcY
qxx+R1buuHf5B.hAatOlsEIRBq0eWuw+9CEsYys0OvbZPXjadhICPUTfyC77
ZN3rlA7gxiPi8m4voqEjAGxaI6xZxBgWPmd74T1i736GmfmTTSW+4Cscjx7h
hbhNTOYc9lM4qNTzceHDbPFgvlOwlnOG7fj+CbYwAIah0EmaS6SYKEZPqK9u
Xz7NK6MFjNCLvrNEGqMNbY26DPjLQkjQ7w5p7hr4If6BLOf.CEXNrcOgQ66e
x4o6Ifvo2Tl0Mghy7V6SNesT.3JDxZTrbV5ovFaOEVd9Zp.3dyyLaFyQ1sMC
LwEtWRFepdI4w1DJAu4k7GZ7AlJ9XmMAo064EapFtK4JiYqGgsxqdIUiynGT
2a0bXiFBgvadPcNxA8zqOn47G0j5b6WLaMnDQRa8WtDSeh5NA6ASeqqQuj9z
I2+49517tb2FDey0Zzs9NPs8Xy5fSDvRMdlpuFS4tvxFINIY9puFh05PXvyb
VnU6bWvrpAwgEG7e80lReFbZzKRLkV.DlzhTIAzs2my6VtsXYY85rBRyt661
UR9zl7hgYuZo9lHeRmhRVSdZwM8WFgR9TQ91cc87rMsHBP9TaYcc2taZ2ktV
+C8mw4ne16tcU8gptm.bXPeMGeilgZxuykG3IjOFKxcnXaCuiUOpaH8CI5EY
ceYRDaria6CfeJ76a4nxnEcNbT4dlPG7TY6GZrJjgkwf.eqgkYL2oeYm1Eas
ajvkWXYHFwp7PiN7RbY284HHk42cub3OdDND9XTWeKK52TRCxFM3HbrA1TN7
xHb7VnfYNulcTvYG+E1Y6FhGJU4kWWtSPnDLZJDTq82b0+a0Z2o+Lwv77Zmt
Wdxkm+7HD52CAs8xBrlitMq4GyWzGLl5hv2Wptc4s6qKt+em7f6csy42aJY3
iAJnl8bIiCYMlpSWO49S3qJNh.CjRa5NmDBrrgYyaO+cDz7TMEQ6o.Sa8glU
ixxfOX8VHOJOqyZ06jzlf6CWT+9Pz6g73UU2rVal0u7d5Ek.vArWgCfYkC3u
BGP8.GnPwAQ1qxCzKBC8fmcUdUhwwAxSvAvrwAhSvA9PyWNok8wqpLe89Zsm
31wWA.y6KK2N2KluvkuQyIvygn.Iibv8CAEnHn+rD5eMKQPPg+HHF5wEAzzC
EGvNEGvmMNfeBNPNWb.vCowOJNfcBNPLab.DPWvBTN.GMQ8AAQIyirkGHX+K
1IBBJ8GAQ4wtelG7jGaNJO1bOJgbzRHyODj5kvzJSiK7VnY9LmxHKAMrC9gf
ycRwL4bSPTlNPr+HHNkF+49iAyMjhJfh2HGfx8N2eqf.J26b+AnlIwGAECXA
Bl.KDpJDLAVHTkHvL5+X1xLyiq8nDZ+kdlYh9wHiTORREt5.j3QRhrzCJORR
T9g8nLxUSIw2v32.GOvkAbu1H4gWnR3WuWbja20iJbnxzvi5a3RsQExvT3Yg
fElBOKDrvT3XA3jVcbuvD.tZa3w7jPkf.3w.W3RE735gWHIRgT3QRhghdbYj
haOYTOtPRwkX2nNsWHINyCOlJIpHwzPFIFUFPHiBOz40z86+RVS6vyvR6Eko
et1bSpqseOux9c6qgvhlrujOdK1+ifZQZypc4cYq5NzX6+7cQCy63h9Y7so5
P9HWzK88j1zq5m202pzR68+09GGortptce5pw49PKzaROTz8Lnpug3lIf4l7
pdwY.0L8c9g+.KeDvrotpajXZn62pqRWU+n1hmUj0OoM14pY3ooh4ff0+zTI
wQbymhE.iod1C+1saxKJNduW8.qp40gNwuXaS557GMLOWs3IDikPgjndRvoI
wTg8S5SAOkXC2FLLggCB5C+44WHaj.wQLkPZjAEUFGa+Trf+BBjVs0NUA1A2
b7z6ap2W2Lp+o4tjGtiCc0Gkuip+iK8uPVoPDMIwrLAPrDLehx4RwK.1mbeI
JkDRFjU8WSj7H9vsLpue8nUVilWdw7QrnTqMkejEMFFu+c5C+GD7IlTC
-----------end_max5_patcher-----------
</code></pre>

Below is a link to a zip file with all the relevant files for this project:

https://drive.google.com/open?id=1QKsCDLECiuAogAaK-4MKYV6uXcCKUMBw

Project 1- Brightness

For this project, I used the data getting from the brightness of camera and specified that into four different sections. This patch is going to be used as an installation in a gallery. It takes the natural light from outside and reflects it into audio and video. I used the data for triggering or controlling different things such as modifying the speed of the music, turning on/off the music, changing the color, etc.

The brightness of camera gives me numbers. Then, I separated them into four sections in order to control different parts of the project. The first section generates some sound with different harmony. When the numbers transit to the second section, the color will be changed based on numerical modifications. The third section triggers the electronic music and its speed will be modified based on the numbers gaining from the brightness.

 

 

 

<pre><code>
----------begin_max5_patcher----------
5973.3oc6cs2jiabb+uOWk+NLYKkxRxq3MOwfQUhrN6Xqb19RkHkHqTxttBj
DKWnCDfB.beDWQeV7mE+IKyCP7fK4vgbGvE2d4p5VRhWS2+ld5omt6owe8m+
ydwESyuKt7BvmC9dvKdweUdjWnOl5HuXyAdwEKitaVZTo9BuHK917o+vEWVe
tp36pzGu.jutB0bb4ORiqpteUr4wewEf+xlyksdYRl7r5GHbyQSlqeNxG9mg
fAMOnUQUytNIawaKhmUYdVgvvIP4+BPWBnb5jff.NJT9czD3k.LdBrssJqtO
USBWbQml2Pc51GoO5+6O+mo9T9wk9AIv9BIXthDLHZBgPnP14GIVubZbgEN9
RvESixVrONGsSNmZiy4RtU1uGDxUbafFEHZT3D3bbaCUDsLtJt3swYQSM2Db
XDPn9R.A4JLQBwOUCUVFWVFsH9gPwInv.uCTHzNHPfMf.CKZFwH+JaL.BP+.
BbgUUEzNpJXRN+oADlttpJOa+L7wplfG3LSi4MRAXpV7m9dJSGPbUbmFxmDp
lUfd1Y58o8K4JvGkf.eA.w.UWGmo+UbZYrdZS0urOQxw.TLgyygP4MydhBOo
IQ7NRkljE+S6GLJSVjEkdn4V2klBjcAHLQNrQMSAUNSAlyT.iVBhD7bGWvVw
ErzXSITfY3OzvEnUbAIPs3RXq1mm83hc8KXjx7bkJWhVTAGNZfjOEXYAJIYU
GGJD5t1DrwTcD6ra4w9fheobBSOhE7CnAg0NRoCVPnihkt9KABehEAtq03ID
KFhEuxbeBVDmLQHgAN48kUuJaEOs3UF0cXRJVPURKJkngOCjPPNqn3CZIDr6
vzyLIDpvY0mePKg3tsoO6jPBcw7y22DNlGM6mtvYqLHVM3RDfac8mf03LHB+
DvgmZV8HLpfvCZWc53fWmc+rTGVF1QXf4ArurGdPvZ7fKwCJaTXq8Q12Ccdd
vOL56c27o2666oDmmg6Ch9dp6qq7899dDzko3IgcBy2y0tctSHAg2FjS1HIe
.7lwtTmr26IzJWaQ7l3IC9CrhBHBGOQHk.Dbs4t3f.l37Gv60oUIkoIyOjM+
c37oKlkmlWXNIbRXHFFHMYWawt7O7.BW4GjtbvgWhPf04IQbp19XkditKS.w
3MSifn5LrIfie5Wxvr7kKiypdn.10UUqJ+7W9xau81I2Koi0SimHu3Wdqhm+
U27O+07aV+pz2cye3q9OZtYUXAlkuNqpGA6fmarlRNHZfNlyHrZAmPlQ.Tgi
l0dQnmKEyCxJNCbdrm.OgIDBELLlV04Uo4x1w2vB4.hD7IXoLgZnEMjn.iGG
jbUdwxH8SO37t17+gWJU.sevSBtQGWLBnH2QN474JEQ3.4nnwQp9MeZUdzwO
s1tkgfG.InMpUHhfIPoZkPwnIoG+T.wqxEDwAPC4DjRzfq7kCinjKXAimXJ9
Y.5DdHBG3UHIzNjvDMCUHP5jPIjvk5gCFKYEqw5F+XCHIvYyZHZnH.q0fLJf
hxsfhCqafX2jCFmo55QBorOSpwjJm2knzMDLJVJ3ph3UwYyAaLv0O5KIT2wD
BdBVHjhARyR3mUYfRsEn1M2vpp.xN4chy7ds8FHrY4w846np0EQUI4YZlbB7
rZI1dyG1qKSAeDRROfOB6mTiEQPtCXT9DtxvUoxCNYTnvXUzr2AtBbkm.Crv
cv.FpshmKG4PEiCsmyhRikyuhC4bDVNu2luAmX01z8AQA6DhrOWa.VZJJDps
ESsTYIBA0ggcb.Q+iVAhiMMdvb6hKJ4B4bsJwEkoXPIXnSimwg229LogoRoC
ZmjTyC1hgCbGSpGBovjfwg63huaUAHMeAB9wezUnO4kluh+DOMyLl4L3fQAZ
vQ4yIx4cvyf3H.L1cVWtftMxEibuALHPEJzYnxeYvvSliS9zeRN+TmAFdHdH
HDycGgi3MqQdjLOtI.QRysf9ETbO5.HAVuJYAdznYdYU9UdRKLB4NPHWiLWN
9RmYLzQh+jjiyQ9bJaj00LILIKRchBMAo9tJlw3magPDgvthC3fFbXjDGwRE
NPNBGm.suAvHjlrC.GpsWkddid9fLyJLz0dXAroGdjOuZTUUw5DmFBbUdVUl
ro022qJRT6sG2wt1QGplzr76DIHVdcxUUthqx0L0.rnSBYQc4lqhlE2a7r5f
kI+O5ChjO3wu5Wp0okkKetE6Dsg444m5WJyYbHfokgzg6J789kFQ4tx3354c
TL9HWqzdcgY4p334fOxSk2.644cOri0hcAvwwb1wo.H.cfc+9ksedLdB2dLw
BwAsyuKzF1dRgDgLZq4C1CBBWtTuM7OAQO47NX.V720xN6X6ZXT9o7RqtqbW
5YHVMuMDE1JQvNcDgLpRKGr6V4ZV7+nZafLH4oj8gEspEztVpNboenU6fvti
RzVTZjjvIeAvliiN1XbPbUMJFw1jEemQP3GRplr51jr4425uhiBxdtkSw5oJ
QH8JhC0LLmsU1mtyABEwkwYU53J244QLS.yvpLzAYLNAggpGn+mdcUz5xX+L
EqvddYAEh1rRCSZr9hddCcbU9hEowmz.hcVggr57PQMep2tAnVKNOsJLzvn.
MM4l3IKhRxZ2CB2DUz3Wf1S+8n+hK0Fj1u0lxFWpdNkGkll.lq9PfVCxLkvT
ch8Gr+geLavHpMiOtId9aUd1HY55p31uUVika.SEZktNN+pMGu4DcaA45DWX
GR6c4kWmWTsiqemW7ldA3tN4RILqN4mwgS1yEDoEOB18oSxRpTNFpNW6aQ0d
W0Z4U0H+RqufZgw1u3UEWRcmqW5IMWA1ivFjDtSMWrQRsALeUblmpLdPWW+b
WbfvGGqe9pUoQ2+SfYWGWj+t33IQIWA9xz77U.D3KqRj3WUQrjqrsF6SuFGw
cNrIj.d6LAONaoMpojMurgroiZZTYxrJ4vTEO84pXItYX7EWkmlle6hz7oQo
UwKWk2SWhw0PYUyxKTLScFv0d5k4yMTptEZzOcQdQxhDIRlFmsn5558ckpf6
I3HJVZc7EUIydWYK.2dKMDg1nmlSqct79HiNdddilJTmGc6omEmUeIeFWvIc
tlebcTZR086hYJSWWnjepYidpAunifUs9hZ6zdT581efc5srlCZeRn0U7RgZ
CQBYz1YSIihTgsr+Fg6v7o8J7P8xxBYiWlEeDLqUWDK0znxqYUv5Cg3QIuhN
BdMvQdU48lmHdcu61tiYfpU6cIlb9pqrKFo2AGvmZd7XFjZOkS36dP5XgQOl
An1S6bHryHT3niQOlQmXWYTNV7TwnduTJaU8KQuRq9RvueWEk4VUMggg6dX6
HqJJSF9pnLm5LPg5D+5ybUT16hG3Cj+bsbcWkciLwCNb3EONTIFPqrTAT7to
Hy64hGA12DMDclqve5p47Gt7qiGdQi.tqhFAg3NhF7yaQRd.h.YPfybNs0Bh
OvpciGnRtzEjPhNuGSFE9kSEStayKRmqvijLvWZ.ckS4zQGPxL.jCBUG6PJr
cqzLCcfFe3hNy41fsz10cqusWOwIHS+efVCKEddW9+.npvdICeC6Z1NcuOnf
PMvfbfrGr4+GCNY2UBPtY0WnZb53qCDzAAJJVLEmtdokxDh7pd6xnphj6NZH
g5.jfL6skSZuL6+27.q.2LO9lWljsZckyFZ7nRoa6UKPlFVHv.MTYVjKlbp4
aZmzxlztc50sabwCBewUIow2DWTtYC32378nUq5b7sB+5xnevTkv3swrThAl
iQZOVQ7MIadDr1CGUHwfJI.rtvvU20NMbcjOJxVmzNoooieCo0Q7xjRHBSAH
z7ArePDltHMe16hm2OpFp.6I6+6jlH8O+73qhVmV81syx8cdAama78O6tEZd
wEKJRlmmoivXOfWc7MMoZSHpC6NqGOoujrnU651MQrZemsTxrqKmFUn5WpU+
haC3RddZ+y0dmowWUUe9UIYYaCnU4qrb1hjEWa6tmlKO6RqOd8oJe65Lyoeq
bTd0aUAoaqKLJMsdb+VsvcQYIRUbwaB2DF1dVybQWWNqHOMsOeaN0M65TRkH
IyhuMYtILbvdhGxaHY0FAqKZ61mmrHtrZqCVEsnbqC8vg7xisdZ8332pBkWp
ja15J581zr2X1tZK6eBqZM2ZkaUsVdbHauOfVy8q47A4HHp28rCMnFSRTK3U
MiK+A5O2Gft+LAZm5RaNUS9WzLgj+g5Jvrz3nCf1lKY.fbxgfbjIEMpw75TZ
++GyeLXN8PXNAhMXN5YDluoxLIs2P9w4W4B+Pnds47HFSadF74g5kmFM4gtB
1OqTk+DKh2tcTNv7mOujvKjTUrdkdpDjEnWsmNUYsi+Ovq.Gc+.Ye8CDG6Gf
lOnOl9AxYsePy7Gkf8NcL6CV2ra.VsC3Xa96iUrcS36ev8jjMO9ttqJ0eHng
VN9A2rCAQB8fZLQ6bgGEFAeeEiPGbfGlF7DgR38fRcVsupHguu0zo4E0ErG7
qLecwrMCA2nDBf5yWxEqVkj03EjuucxZvVHvxj4qxSxppIGjT4jZFCLUCaHX
yu5ea4EyMtd5HjIFRNidjbFAgNDmAGZNC5DmQNHmwDFVIbydfZyuF2LF5gW4
4QpB6JIxLW3.RK6ZD4dfK9vSLbWIFDY3IF5XhXHiHQFjqzxFA8AjXbmVr2I0
y69WkjlpqoyM6VqKVTDMOoS9W1+xz+EsYyLPILr5Uig7aAXNko+lHDp1lwns
BjvVOC7lmAV.Qh.0cRfxakZ9l7PnC9LdbOhnrE0tvu6dPq2krpHeUdQS.NlP
DM6fhicmtbj9z1ruWp8WcyZmr6f6V+fOf6uM8JAcsvn3ZX+109VxdQHsdGhP
gZKMX7SHpen8E0uSFzVKMWcs8sv6ID17Nkp1jp3kll5eJd4pp6+BGfHBQaEF
5jdYZQNykcmaLQE5bHeYu7kVGV4Z4q5Pu+7T9BIdn7k7o8ljYE4k4WUA9MRD
tHB70Zm6Ct3R0edvY+cE481g5VBU+6SBjKhqdfuuFNUd1qTAl27ApxJlJr8z
QgHoMfai2CGdbCcfJ7fY0ZFbCOtwsYo4NV3KdTHl8biWLAqV3tNFYzQNf47t
L+QgW1quLjt3EbTfWaUB.k1kpeuKXriUbL4+3iI2sDGXjod1US1hWOc.YXqT
faNojtSVJwGMbv7N564p4hv5vUyzp04b+HpBtruLH7GkMQQNf.cdyb7XF5JH
GF6pqQRAlW9XO0CcskLpxUmO8DRD0G0XX1gAPbf12+rGc1WZuR49XP0AoDbY
+UqRuTS0DJIoH1IW.tLZHM+0S0eq8tWaeM3170oyAoIuKFTkClUDGUECh.Z1
Db60Ip+lW7tRvxHIFcOXZTY7bPdlZOIAlpyYwL4b1+8+lpBAo1KEWUjuTexz
nUU4q9EkfY5kNLA7aijOLUlzlBxuZq6G7wwSRl.JStybEkeBXlTjnHOs7kRA
8EKhKJksZLHNMVwJS.+mx6uNERAxoE.2jTtNJEDUtRhjfjRcCXXi6yWCphVK
aJPRFPCK0rVQ7UopLAUewQqmmjCLkfEvG2ieVpVGzpqkDvmHeDRfJZS6ojpt
DLcs9Qu7dSKdo94Y7ghh1zkQS0CSc35aTpDtBbaRZJXproSKy2BQzbX1kaiS
aPEvz7pqqedyikDjJ2IzLf5AO4u+29yY+4rWmAhlOOQIfcI3A804KmlHQT4y
ItvP2wkFtq5ZI9spH+GzPYFPGEA08HEYuQh9fx7kJvccYrp6ccoh2lduAEmJ
EpkqsW1E2kr0ERzxZ55eMtPdgx+qkSRxjhWxGtD8j8GxSIu8xOWcceJ3URxW
gaFzwTrXTGnFlavs1N50J4yDi74u8tUwEIJ4EIfWdel7XkRNSKPec9JfJ+XA
kwpJnRbgj1LT2ad02Ady27uKWI7OtVdlOG7lW+u7ZvKAe6uG75kRiSAk2pxR
kB009Ue8qd8+F3ae827e8p+H3ieSzcf2TtB76SpjOPvqjysVIGpnNrRL3Olb
S7mntqu0HB7M4qk8Z+onahA+50IoJLV8Hdorweo4Qnu5c+lPlvbuVqZ0EHDJ
RU1DwL01jmYRXNjwsHghm5hAvgdgQy9CQem3cnuKSj69Tc1WUDMTuKx4zvtu
XxI0Ft93pZ.lasezpqQnsiTvFb5AQHPv5Ehf8E1j9Q6Y6HbFXxcLiuFHPyr6
89EhYdSDZrYR+q1m1VQ9bmc4dlg1JVZaGYSOPBnCQBpsnhELUnWlCAZJuDFD
V+Kayb6NIRbAkDcCW1irAwN0fD+0fHmaPjeZPnKMH2ebXnSbX.xpXFmBappm
ARiNU5pfB0KID8KzdnJ9b663ppKt53dga3BOvMgL9Dlj5TAwqOUyLEyWw9ON
QoMV9OBwO7SfShCBuINnJXGGVqSnXOJ9f9hDNHOGFNzjvAQA9Pp92MTfyFRR
vI06A9S8N2IcQgbqidY5LjhyQ065+gBbPNIhX2jGBk1TJX3hNu9rPgsU9jli
eFwXNdHGcctmii6R6gfC4PImo.z.A5AgmYPOvIdNzt8qL81PmCYs04DSwSxT
eCwC6XbMKb3w31slfvPsiw6Tx2Pgjcb7yHzGLjShG3jgKAb+It4zJ1HC4T1G
AILXixcxpgMcN9nAcxFgMKxvGMH5LqGiIbRIPfeavC2G5QNzI0ErP+0fNobf
QFvwpGAILTiUYN4fGl+TQxbS4.dHgcmHA19VUC9rQBnsMGb6Y0q8Aov3UZD9
g+RXRJChN5ahfAyWkLmzHxFRyaOBRXnFMQO212RcRqI0eZMoNoxhNjZMOBRX
v5mcxHKJ0evtS5Kn9SMsa5m7nfEwogNB6JDCk54B27BibyByPWBBEBsCQw78
ebrnsP0iTIMYy6BjlS3OF8fy3t8Jk2lQ69lwjv0empegXiLLTnkiC6vnPZX6
KLFneYTmhSBYHcgpij.cOpJ7g1JrvMut3OumicR+H1edLEyNlHvsGIZJRGkP
poprYdSQz6G3.8G0AnMfLwSDuiZ57GZQ7.ZEhmvqSmJ43VQc16078gBqvdfz
wgFRG2gzwcIcZWRm5KRG4ARGgLjHj0gDgLeQhPeftlrsafHQjaJy7mUAnPef
IFXvlpkAQlCE3ntE+41FjatBi4yVzIkBLjGaQmFn3UT0ES1vdtAOrfi+rY.4
l+93drAcZjMxidXD4lKFaDn8RS5VG4FIZuzjtozg4Sfk3VS5w4EXX2ZROp1w
M+KgX9bPBzsIP7nh.paSw6yYPbyqYMpn7RS513RjGEentMHAw7VZ7gntIwR8
np.piRr9DXcpE8HORbaHB0iJ0cy6XMTlWZRGm5xi8jDG6JYdrIcaTIg5wlzs
QkDeJw5javFxzsxMR.KFv3FfbzUbDOJQicabKV3Ok9Xt6Mou3R2TUf8nkQt4
yQD1i1x6l2uP60g13yHQfsG9.DSkfpAAgB8lcIbBRHDjP09pjvlffPLt6wGJ
cBtxLACoVAjiCQ83jNNZxBxmMoayyA83RzPt065SKyPtM0JZHi4jyDAcHkpg
tIUC8n9QnaaSDOtvQH6r2htk5PB6aTIDpYiJQIPylpTb4dNtmHb7YNyTPP2F
F.2sk00aHzsdQRoasseARs8KOpc7hixxKMpG7Bipt3FZ1CqauYTaKhDpsT92
negH812zVVx17xaZKzoSQU7AUFwlJOo4zMkyvsJwiToVKcgcDQ3XSwdT9EFq
WYK9hspOkLp.h2p9TFhILh5avsuuSnlTtmhH4CKbjs2w5p7lZrYaIBtSwZ7x
MRZExK4A6j3KVJg2jl6ruzYS2y6JSSjcq+IUmt8tlNvr4sGQ2+zJV5ChxTXS
90oqiaJN86gnhlMS1L8j.HHdfJSNjpEZ5UEpCgFLJ82beT1IPoPrfQ0RObNg
f0zbHVNsHYvnzupHN9jHUEswTIIidDAJHLPQuCDU9lnEpJtvIPmgTXPfYPa.
TRkZvMPfTluOPD6+crpjRbJzJlgz847PjJGqjzLSJPv5q5nWgs460ud7XBHL
zyrh90c5WkmN+DXD0fKnVNlIvHllmPc0BdpTp5Nke7+gw0k5e
-----------end_max5_patcher-----------
</code></pre>
view raw gistfile1.txt hosted with ❤ by GitHub