Category Archives: Uncategorized

Project 2: Sound Artifact

Project 2: Sound Object

 

for my final project I wanted to create an object that made different noises depending on position and handling; but I wanted to take it away from the realm of functional instruments.

To do this, I used captivate touch sensing by wiring up an arduino, and sent data through serial to a maxpatch that manipulated the input into sound.

video of use

 

 

 

other sound

 

 

 

Construction:

 

I constructed the form out of polymer clay; which i sculpted to fit my hand; and a magnet to allow it to fit together while being able to be opened. I wanted to stay away from rapid prototyping techniques such as 3d printing and lasercutting because i felt that they take away from the organic result i was trying to achieve, and would place it into a context i wasn’t interested in.

 

I created the circuit by soldering resistors and wires onto pins that fit easily into the breadboard on the arduino. The arduino is removable but the wires and copper tape are built into the shape

 

maxpatch:

  

download

Arduino Code:

#include <CapacitiveSensor.h>

CapacitiveSensor cs_4_2 = CapacitiveSensor(4,2);
CapacitiveSensor cs_4_3 = CapacitiveSensor(4,3);
CapacitiveSensor cs_4_5 = CapacitiveSensor(4,5);
CapacitiveSensor cs_4_6 = CapacitiveSensor(4,6);
CapacitiveSensor cs_4_7 = CapacitiveSensor(4,7);
CapacitiveSensor cs_4_8 = CapacitiveSensor(4,8);
CapacitiveSensor cs_4_9 = CapacitiveSensor(4,9);
CapacitiveSensor cs_4_10 = CapacitiveSensor(4,10);
CapacitiveSensor cs_4_11 = CapacitiveSensor(4,11);
CapacitiveSensor cs_4_12 = CapacitiveSensor(4,12);

void setup(){

cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF); // turn off autocalibrate on channel 1 – just as an example Serial.begin(9600);
cs_4_3.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_4_5.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_4_6.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_4_7.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_4_8.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_4_9.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_4_10.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_4_11.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_4_12.set_CS_AutocaL_Millis(0xFFFFFFFF);

Serial.begin(9600);
}

void loop(){

long start = millis();

long total2 = cs_4_2.capacitiveSensor(1);
long total3 = cs_4_3.capacitiveSensor(1);
long total5 = cs_4_5.capacitiveSensor(1);
long total6 = cs_4_6.capacitiveSensor(1);
long total7 = cs_4_7.capacitiveSensor(1);
long total8 = cs_4_8.capacitiveSensor(1);
long total9 = cs_4_9.capacitiveSensor(1);
long total10 = cs_4_10.capacitiveSensor(1);
long total11 = cs_4_11.capacitiveSensor(1);
long total12 = cs_4_12.capacitiveSensor(1);

//long total9 = cs_8_9.capacitiveSensor(1);

//Serial.print(millis() – start); // check on performance in milliseconds

Serial.write(99);
Serial.write(98);
printLimit(total2, 100, 2);
printLimit(total3, 100, 3);
printLimit(total5, 100, 5);
printLimit(total6, 100, 6);
printLimit(total7, 100, 7);
printLimit(total8, 100, 8);
printLimit(total9, 100, 9);
printLimit(total10, 100, 10);
printLimit(total11, 100, 11);
printLimit(total12, 100, 12);

//delay(5); // arbitrary delay to limit data to serial port

}

void printLimit(long val, int thresh,int yes){
if (val > thresh){
Serial.write(val);
} else {
Serial.write(0);
}
}

download

 

 

[will refine documentation on friday]

Project 2 – Help Wanted

The idea behind my project was to make a system that could visualize or represent posts on the subreddit /r/relationships. These posts are often pretty emotionally charged and an interesting blend between general and universal to highly specific. Keeping in mind that most people post their with the hope of solving issues within their personal life, my conception was to use Python to generate a series of sentiment analysis scores from the posts. Said scores that would then be used to modulate different parameters on instruments to produce a sound that dynamically evolves with the emotional content of each post. I overall achieved my goal, and while the sound is not quite as melodious as I might have hoped, I like to think that reflects just how emotionally charged and ambigious most relationships can be.

The project was split into two components, a Python pipeline that received new posts from /r/relationships and updated two big CSV files, and a system of Max patches that generated audio based on recieved input from those files. I’ll go into detail for my process for both below:

Python Pipeline:

The result of running posts through the pipeline generates 2 large space delimited files, one of scores and one of titles features. Each post has 6 scores, which were the 5 highest value (in terms of magnitude) sentiment scores corresponding to what was interpreted as the 5 words with the most emotion beyond it, and the overall average sentiment of the entire text, which was the 6th score. (Format: 1st highest score, 2nd highest score and so forth…, followed by Overall score) Title extraction was based on a rule of /r/relationships, which specifies every post must mention gender and age of both the poster and any people referred to within the post. Even with this in mind, this part was messy. While not all posts were simply between two people, after analysis around 83% of them were, so to avoid issues with input inconsistency later in Max, I removed posts that didn’t correspond to this two person rule. Even then however, there were issues with inconsistent formatting (not everyone follows subreddit rules) that my pipeline couldn’t parse properly, so if values seemed malformed I set up a default value (the tuple (30,-1,30,-1)) to substitute those values. (Format: Age,Gender,Age,Gender, where Male was represented by -1 and Female by -2)

A sidenote: the choice to only keep posts between two people lead to a bit of a change in focus; while not all initial posts were focused on relationships with significant others, a good amount of two-people posts were. I decided to incorporate a piano rendition of the main melody from Fatima Yamaha’s “What’s a Girl to Do”, as the track feels like it’s about the tension and ambiguity inherent in relationships, something powerful that I wanted to try and capture.

There are four files in the python zip. Before running any of them, you must set up your own reddit account and OAuth permissions and install some python modules: PRAW, reddit’s API, numpy,glob, and nltk.vader (you may have to install the whole package for nltk but it’s a lot of stuff, so I would try to only install vader first and install all of it if there are issues).To set up an OAuth token for reddit, follow this tutorial here: https://praw.readthedocs.io/en/latest/getting_started/authentication.html .
1) testq.py : go in and edit the four values in snag() to set up your own bot. Run in terminal with the destination for three output files (titles,text,url) to output a stream of the most recent posts broken into titles, text, and urls into those three different files. For reference, my command when running it looks something like this:

python3 /Users/lawrencehan/PycharmProjects/reddit/testq.py /Users/lawrencehan/Desktop/project_one/titles.txt /Users/lawrencehan/Desktop/project_one/text.txt /Users/lawrencehan/Desktop/project_one/url.txt

2) senti.py: Next, take the files you’ve just output and run them with senti. Senti should output three files, one for the title and two for the 5 scores and overall score respectively.

I ran these previous files several time before running the latter two while deciding how exactly I would get all the data into Max, which meant a lot of output that was split up into different files

3) cleanup.py:  This should output two csv’s containing title representations and scores of all files written within the directory. The second zip attached to this post contains all the non python files, with directories already generated for titles and scores. I would recommend you do all this processing within that folder. When you run the previous two python files, you’ll get 3 outputs that are consolidated in this step into files that you will always write to if you want to update them with more scores.

4) final.py: Max has a problem with recognizing commas in text input. That, along with formatting issues, meant that this file was needed within the pipeline as well. This converts csv files into regular space delimited files and ensures that the last number of each line is not rendered as a string, both issues that strongly affect how Max reads in these files.

After running each step of the pipeline, you should have two csv’s that look something like this:

Text editor view:

Excel/Numbers view:

Max/MSP:

Before beginning this process, I’d known by this point I wanted to incorporate the Yamaha track melody in same way. Because most sounds generated by Max sound pretty synthetic, I decided to render the melody with piano, to provide a counterpoint of sorts. I decided to use a kickdrum as my main percussive element and a low end bass drone as well as a high pitched reedy sounding drone for higher frequency content. I settled on these elements because they were relatively static and easier to hear the effects of modulation upon. Upon generating these instruments, I connected them all within a main patch. Each instrument took in some combination of scores and age/gender information, which were then used to modulate different interior parameters like filter resonance and distortion levels. Many of this score/gender information was ramped as it updated from one value to the next, which allowed for smoother transitions and avoid “clicks” from rapid changes.

When opening the Max Patch, load in alltitles,allscores,and the fatima piano loop in that order.

The output is very noisy and chaotic; here’s a sample of it below:

 

And here are the files you need to make this work:

reddit

project_two 2

Project 2 – Twinkle Twinkle Little Rockstar

For this project, Bo and I decided to merge some aspects of our project 1 assignments, mine being an autotuner patch and his being an audiovisualizer, to create a Rockband-esque game that tracks what note you’re singing and scores it based on if you’re being corrected by the autotuner to the correct pitch in Twinkle Twinkle Little Star.

My personal contribution to this project consisted of supplying Bo’s audiovisualizer with any necessary info about the game logic, markers, current/upcoming notes, color values to display, etc. that could be variant based on how the player is doing within the game. I also created an easy and a hard mode for the game, with easy mode correcting you to only notes in the major scale of the key you’re playing the game in and hard mode correcting you to a chromatic scale no matter what key you’re in, making your margin of error slightly larger. As mentioned, the game can be played in every different major key, so users with different vocal ranges can play the game.

In addition, any of the audio heard throughout the duration of the game is coming from my patch, be it the piano playing the MIDI notes along with you or the autotuned signal. The autotuned signal is located in the “inputs” encapsulation, which also includes the game controller bpatcher I created, and within the “inputs” encapsulation is the “twinkle” encapsulation, which processes and outputs all of the variables specific to Twinkle Twinkle Little Star in a manner that Bo’s patch can then work with and draw from.

When it comes to game logic, we score based on how many beats you sing correctly (including however many the autotuner helps you to get), and the score is displayed on the game controller. You can then start a new game in whichever key you select. Regardless of what key you choose, there is a four beat lead-in playing the first note at tempo so you can get ready before the game round begins.

To demonstrate, I put myself through the ringer on easy mode:

This folder includes my contributions:

https://drive.google.com/drive/folders/1Fx1sD51GNGYjVY1dpQXl9M3f8qIQ4ZKS?usp=sharing

This folder contains the overall project:

https://drive.google.com/drive/folders/1LLSwpto8pGiUxBWq3klx1izvc2katNzs?usp=sharing

And here is my code:

Project 2 – Particle System Tracking

For this project, I wanted to work with particle systems and attractors within it.

First, I used a few objects from the computer vision package to track a face from the incoming camera and get points from it with edge detection. I did this with cv.jit.faces to get the bounding box of a face to track, then used cv.jit.canny to extract binary edges, then cv.jit.features2track to collect the easiest points in the window to track. This works best with binary edges because of the contrast between black and white pixels.

I then separated the points into two lists: x-coordinates and y-coordinates, normalized them, and sent them to the particle system subpatcher. There are three modes the user can choose from:

0: the system as a whole attracts to several different points. For example, if there are 50 attractor points, 1/5 of the particles will attract to each point.

1: all particles jump between attractors at banged intervals.

2: particles follow the center of mass of the tracked face.

Once the list of x and y coordinates are sent, I filled a 250-cell (number of particles) matrix with the coordinates (repeatedly, so that an even number of cells has each coordinate). These were then used as another input into the jit.gen objects which calculated the force. A jit.gen object basically transforms every cell in the incoming matrices simultaneously. So a cell in the particle system (inlet 1) could take the corresponding x,y coordinate of it’s attractor in the second matrix (inlet 2).

I used the Amazing Max Stuff Particle System method of calculating new positions through f=m*a. I definitely spent a lot of time trying to understand how jit.gen works, since it is much more efficient at manipulating matrices. I had a lot of trouble figuring out how to use the x,y coordinate matrix of point positions in jit.gen. After understanding that the jit.gen object basically works on every cell of each input matrix, it became much simpler to just gibe the position matrix as another input. Before figuring that out, I tried a lot of different things using swiz and vec that involved pulling the matrices apart in the jit.gen object and trying to put them back together afterwards. This, of course, was very tedious and didn’t work well. I had to find a way to use jit.gen because before that, the patch used way too much processing power and the particles were not moving smoothly. I also attempted some javascript, but found it to be difficult to integrate with max objects.

You can also change a lot of parameters such as speed, level of attraction, rate of position change, etc. throughout the patch.

I originally wanted to have the particles attract to facial points so that you could actually recognize a face, but I think this would take outside hardware or more sophisticated algorithms for facial point detection. Even so, I definitely enjoyed the finished product.

Below I’ve uploaded three videos, one for each mode. When you first open the patch, the video and facial detection automatically start. To start the particle system, you toggle it on manually. For all modes, you can change rate at which the particles attract/retract in the particle system subpatcher. It is set automatically on a metronome.

Mode 0:

In this mode, you can see the particle system as it attracts towards the facial points. Moving your face also moves the system as a whole.

Mode 1:

In this mode, the system jumps between facial points on a metronome.

Mode 2:

In this mode, the system follows the center of mass of the facial points. You can see how they follow my face as I move.

Here’s the code for the patch:


----------begin_max5_patcher----------
11451.3oc68ktjiiqbt+dlmB3JlaD1yoFcvNHOw0N5q+ieFbLiiJTIwtZMiJ
o5Jop2b32cCfDjhThK.bSKM6yYppH0BQ9gDIRf7KS7e+y+zCOu8qI6e.8OP+
N5m9o+6e9m9I6sL23mbW+SO757utX878121CK195qIaN7vivqcH4qGf6ud0h
+Bc3Sq1iNr8kWVmn+EZ+g46NnuYB5M8erZg9t6+19CIul9wWuZSxhsuuw9cP
c27s4GV7oUad4ocIKN.sMINdF9QDCa9IQRrWDMCi9ubelMu+5pMqSNXajD2M
Wsz1z197e9aQOb7Mt88CouSr6t6O7s0I12b566ia2bX+puauIgOCat6+yO+y
le7nmP0ljunezmgTKSVO+aHAF+P0xKQvlQEOhnXlQTEfbGWk.SOWfokKvjJE
X3Mc3auk.MgGdd9lWd.8e0BAuJcDcS44jcnseD8w4KR1iVlbPKwIKqAHnR4L
goKOxh.DaOOQEPOux6d9dTR2krO4.54ugrCKzhTc80Dks6kF65k41qvAHizn
toeSak9ckcya285705uazhsa2sb0l4Gzc1y2rDsOQ+CscgSrFfrnRxtPsJvh
EFnRYzGLZE1ewXAAbxK.v8Zx98yeI4LfqNKBBsBgRXr5gOZQfJCwhPDqy1Dd
H6oU.Fj8o8wuuFsKotALJpwjfJhk1cGpowHR4.AM.f3QKXLhRMU0UoFe8I0+
4pCyVt50Wm+F5Cq174Ds2BDTcCCnLv3nd5f33XkTCB3Flbrrg8JUmwBcS+oW
meX2pu16nxqIG1ssAODnBvinnXiZgfDt9fL9JzEgEuuam99nW2tLoNqgQQfz
a66UwgOio7ZZFS5+.8wsqWu8KnE5W9nKRnWMexpgANEz8E7YhzgCwpvACw0D
XP9Gn+78WeC8bxgujjrA811U5mkGn.EbCfQaA.Huh..7+.M+vgcyWbv3qzqu
u9vp2z9JUDG70GIG3DEmCaByEIA+BfMUXY7MzhOsc69jmZv9.Su3PNQJERiz
ZEZkH7oIDUrJJt+lHWY5fO8WGciJ0yW.IbPgFAWsNQOa39Ua2jqs8SOL+s2x
c6eJ2Gwfe+4V6Wj5wrasZCbKV1s1k74UoedQ1cmuSiflEi89NPd9ZliwluFM
Xuay6qrME3l5dxeN8KLynLnigsqeQxs5c7nbiC0c5urd6h+JYYN8GMl8VxlU
adyrloMGlev03xd4kIebtdLvSmpUU1qaLZV4Gdy7WAg6+2tUyWmJdO7xtUK2
twzHJ.0lam93LKHGLzlWXruiMyeqjOrV6QCKU7h60B466ed9NSOwyfBDM8EO
rc65huT1macxGO3d42VsYyIn3gsuU8Kta0KeplO6ya0u3q08caek8O89F3Ue
ROP8vS6m+4hn8g4qW6F4V7q+qy2rR6rTxgUPW.Em8hIalqEzOsewN8LfEjW3
U9bIuxRsR7hjurZ4gOYeP4UFzu8UukpD8PVu7xUujr+Pw6cX9K6KdmyFPqu0
6O6Fj9jdopusVKEEeCE1Bs7iHyaiqv8OwVGXyHa3VEVzHQoSxIR2HLV9wVUY
PqpMFpZK5UfDl6lNk0o2e0lkIVQkmdOq8dmkhgDWHQvlARxsAgsBWHCJtv5Q
bo31GTbBxegz.d41JQraKmLJSTZcvEsB0HlnZ.izHfU1NKLRPDtADRqPY1nE
RTmgHJ4NEhn5IB6GHhDemBQDdbeAQpaTHhznoaqmh8ADItWgHhruzhXWwPDD
wP+TWzS7X+EO8mg6AD4DXemdgAGz92ANbd5L9cFqLK56B.WfpSO.W33e.fKW
.U5AzRcaiVcwbky4xtasBeMaspvdSUDf1mrFgQDD0OfhQrPDr1k5QJdUHUM9
XxCGor6n+im+69EAshkWPDG66x5vU.P7d2CyPV2GYrWOL.ace4vTAdPWP7nC
Lt4C6CjYX2p.ZIHywMczru+UraSVg175kCY6299tEopwYCMPEAfkI6OXHrga
+y98bK127N8pSK31Q52dysCi0tSdma2sD1+bxktwc1660UKcAsIc+wM9xqcq
vPsKFrSdvkkKQ3gQhnDekHBoIYJl.7TyPADSzUXyRu5JUjvwAJRT6upQjFH8
NRb+IRTJ3VqKJFohjXj6kBPjTdKRVYAFZcA5jT82PIBD+rzNozgRidmjp+5j
JJRocRhwtSRzicRGsvIJXuSLTSNZ13l9xNPNiYhBl1FtVuuFlICoCFXuM7HF
11g2isLdeOfsCV+MF+noWQd6vClFE16o5oDO8HSxrQ7wMwOb4nZy0JSTurP0
7X7X5rHFiQiNJYtIKuTRFwKIS4i0KhT+O9QIyMCy0celHr9LNHYvbKvki57k
AzmwBqOyIYv7NWJIyO6dLesc.xT9q7Wjb1HSIS0CFB0r7If7POY3.3pme+.r
b+7rCKHRt7x5sOOesiBKYTfpNFubjVL+7w1aOkhCjl4woVqxt2LwmtG7MSoY
dzPkgC7dMQOn0QsYbrcDCUdDJ3s.JX2FPA1SVb1AnfEecAEUxs0WRN7jMkop
isyLJLymThyH8srgzAgeNpPTrNysUafAdLKsPtGozJvcXCYNLTHVALIlQm3z
5DmVm3zZMgjoXtMbZBPq0dVpspg1twlb3lAiOZr9gRVoudGZ8p8G1aRBFvgK
z1cHSfHQZKPnU5O5mWs784q0e7j84eBExIBV8gChCYPjyUTWvFUsHbPh3fiF
zXG5Kla+2frmtCg9ZfiIHaziIHj2bcGX3widHAGTfQx6IbI5lIHx9vIAm9BU
D0QVIvk8JoDb4g4kZrlOPmiRUXQWQN1kF4niCUhJjP3MXYmJoGIKSqXbEuFK
6zVvRlGGQRWoQp0a29Wu+VSfEyEuC6nWXLbq.KV7UNXUGG9T3Y5kPJn7J8bh
1.Cihr5bbQ9BQQqfQ0sII+7UeS.wllAYjcWz2DW6CNsE1GOgCmu17lgiJbpf
waOCaaIbkqPGL75W1Ah5UA0TJlvgj5lA6LFTTrpGPEU.nzdkCooI4r6+5cFJ
6k1lCbnRkuVopRaibeqsYrlkrwSzDl5jE2ZSYznqbSYds7HtvUV1DckKopal
rws17BPuPQULsncjP7ofxkm4SASzF8Kw8sOETBte7ofxtG7oHEND7NZkmRm7
oHOfBghsC9TTWh8dq5Sga2Kbq1tCZajnIeJPjXR+3SAQbSu2EMuKORQNWY6v
l7PH2x.0LulfLpm1iGxM7FhALIvDnrEECPV0aJFwvlfGQQsW4ZHSytSnTPQX
oRpETE8BN4iWFMCpfpAUS2flobPUzNn.0CNk9A.gCnfkRWI0RJNYkFkSAAOn
gfOTQnQ5H3IkDpgVB9QMgFnmPiTTnQZJz.UEZltBMRYAOnsfOTWHD5KTCEFZ
jFC0Skg5oyP8TZnVZMTE0FJmdCUaToYZNTNUGN07voFjO60aHZXU5MIElcRT
ylHTaXwNK57Ob9Grbqv0.Z9Ekr519gJhVVgo8JN0WWQ7yIaRw4CMLKwMangT
Il4J9FhfO7obEn7S+vUs6EM3MK3wgiOI4qylMt9fyhHW88l3p6MGAD+LmOJB
3lx5792VsdsGCCfh2aLr+Orxb+HHXiUOrQa+ffSbga.Q2y1CxpWPJrRTfES9
ZBoFzi1Zkt1XafLBXouViA0PNsmrESFLaw4p63syhL4xae3yIe8scneYEA8q
HhGcNjHfeCJ9wckJOamC2JAav5eNuWIum0wyvWd3+u6EnmVU0sKLDJlOMi4z
pwbY7fg4v1Ad4g8S2Dw5gVhzVAHfHg2I0Yo77GZs6oX+OyX4tHN98AmGlpSB
UEhhXHNRfjHEJBEqcDDQH5k7hHLDgq8cS2wfHJsQGcmhV+GQ0eFJhxPTt1ac
DUhnJDMROlPOGAhQPL8WICw3Hl.wjHlBwhPrXDGi3D8bJZ+Zz8xHt.wkZiXH
dDhGiDXjfnm6FIXHgtAIPBodE+ZWHQhXjDqsygjTjjoW3udQ+HoDIUHYDRFi
TXjhfTTjhgTbjRfTZwQgTQZcKTDFEQPQTTDCEwQQBTjDEok1HTTLJFihInXJ
Jlgh4nXg14KTrBEqACCZngCrFOvZ.AyLkya8+owDrFTvZTAqgEr98YgM86y.
bDVstOyZdDAG1DXl0XivcJezEqMB5OxV3+9ZzK61VXyRqbtU3zSxsGSBOmas
NjmLztfesi9u+8Ud.7RWprAkkJd2wcb83Nqiq+OW0f6ZY91FGDTLJTMLcLrS
3fqlcpmn.qNttFATb6TOqXhcdORY4XcI8Kmkq0xyJTA0jt0hyx37JRg+fTlF
mlNtz2bVSmdk2zqA0IiaSWFPSOUNG0VnfFPKjwtDsPRHc+Tn6ebag3SqZFMY
VXzwvPgvwtAxXAzBuHMvPZepKPCjpBwTi7BzBCYbbyFZx8h4izbSkajSCydq
BXW8kej5hd2Ikgjhx0vRfhxheQMzh1QdhxidgWDBSc6R1DewJhTzOX00Nau7
JaHk.Mk5b1PdoSFR90GilDz9gPSb9Dil5cFMovxIFMMwnoIFMMwnoIFMMwno
IFMMwnoIFMMwnoIFMMwnoIFMMwnoIFMMwnoaAFMQBkRSDJwcDnLQooIJMMQo
oIJMMQooIJMMQooIJMMQooIJMMQooIJMMQooIJMMvzz48MuMewegXdQfhXaj
KTj1WR050B.VtMI9w5uZ7YyCIpWHyCoW4aRE6pd6Jp9Cx4OtuGJmr3A7rvTE
RifT2ABGONB1Q4X64yDKhe7xxOR3nWVIR3oDQwP0UTxytZLOoE89LSMZrOa3
89bEl0DRSTVr0nyXO6wEQGubLwZekHONRKU77iFbAcotQCW19HB1y9nTIhvt
Piu4ReGfSarSBHIICCUVPX3t8pwToyaAxiC+1TARBmCwwYWMl5bFli5uRWsB
jjjWmKVjWkaXZ69dzPyarsyfCGcWbPn7rqFUkKekmlO62cxivphAFCrWLppV
XOEGQycOPOBKlmq+wd0PoZ4YSuQOsnJXbf1uayrkbXzNb4npa46PEtuRDECG
A45Ebkc4XpdwhCYzOYfTTX9Nos4DjodfUPEP5l.7rI2Uiohh2BDswCA8TABl
XfKoYWMp5I7PVjwPYPoDGbpnUvGxVAID+w3drfKF3rrfiytZfZ6krloJZ6jA
DAod6yQiN.5b4iCqUMMYyLWMpGz79JPzFWCdp.4N3qijWDCXTZHK0cvzSNCr
p1AhZ0RTQyhX5+IMKiiXmxkwgYfsWNp5JdJTpfDJvOhzsjhgGYOi7UcQ345e
XJvuH2RvsWdMJOkrxuZEn7WMlJcDe8yiRGvwyjnPV3Oudyj7bybRAbcHm4j3
8FKEMjHnu9dvGzVANj0XOTqZvWnnZM5iQ4vFikJByQVD+9SWH.w3bQtwvS4D
sZYIAo4gWee8gU4MRUlXm80CAy6ee86I4iLTZhoVNnLewB8Cew10PZ996H7L
FQI4JsHOSJ3wXp4uhM2hn6JJtV+ASH9O1kjroSRA1zrElo2Xl+hHijT03I.+
mIqWu8K9KA4Yu1uaS9XQLFGUP6rDoLhJH1tJUDIhX9C8mSvE8lf59NR+BZJb
4NIpxvjWVHxaH73kD9xSCKNLhz9Snqw1LxEuVnYUSnuOF16WSNraKRfSIRZo
D0FCGy4QVOsOmtvkRRxBAtklpXTdXaOWlqLgTGWImwhlwIRoP1EwWcIkds95
gsapSFgCsK2QADO8mkKcjyktqw910amuDHtbkhMQvfPIBogZT88pkH2wWwpz
XzGlu3vpOmjk1WUUjUxPf33vGViuVg.huP.mCaQtFyZIHHuVw.puXfxEfi1h
.hqODXO5aOYSz+80Y3KJxFzvHnvKI3AaBfDWwH.74xdeJbesYgK07VDPPs1H
bQwW.gCxS3+4+4e4iDzeG8Kej9uf9Uj18v+Ezuo8wC8g8Klud9NSQ0oVc5r9
VlZFWOPfxeLMkhCyDWVdt0ds6dUy1QQQLpN2VbDRRZ1c23X8hYzJ.hvU.vpx
kcp+xt6XI83wQZfnPwb6rP88vt7glG.vfJIFKb6Zwpqqt9dZnQlkgNNzHRdg
fGCSce6Kq1rb6WpaL.CNLP4oozdZQZweG7H0q9WehZ8P9RvUt1kao5m0nZid
R9jOuTLHF5VY4N8mCxDvwo.pI6xau0gSN2c66U1j4bWjpkqsIKihuD91Tisu
MlRxVsS+GIbhNTsXBdzMqWFc6doRxUw9wjHT1CMfwSOu88MK8ARf5NDnRTMj
vJARpvQWl+PxIDwun8hhU7vzsVphJcXYU4vz8WqjpaXIU1vxqpg0WQCKqZFl
sYa4OWVgpTTrHWQLjGkmy+kV.Can3E1TgKr1hVnGErvJJVgMWnBqoHEVaAJr
1hSXMElv5KJg0VPBanXD1TgHz2hPXEEfvZK9fUW3AqtnCVcAGLr8j8rhLXYa
CaSEWvyKrfglLMmWV6JVR6N7ojbEvt8nOtcGRqnq0gQG1oWWf1hGxZHb9tuk
+KopRaW461K8XgYqhxZWWqCw3xSWmdLsjNqfpU5pDSqJOw9lYRUHprfE0PR3
H1XW7kwVh7xwcLesnWG4q0XCetJWF9pJa25gbbqsXVA+zqTmSIyQLgycU26g
hD4fTyuGmjPcex5BEpsZPJBrSsPALoU0uahj1qUJ9zJEyngV+aHrmXkJ87xS
zVrRD2qZUG2Pr9BlNsPzUGb.0eHAt0otLgGW7QUaomqeNDBF0Ah6zMgDTgkY
2DnB7PUoZ+3Qt319TtPurwlz.Y.UBnL0w4HaoFXMl4YsDr5c.67RS3QDSDMy
rJRswIp9GZaSU5vNqYEPqSFPFO.U013Vn.RU8sKGiit2hOOyn9YGrNa4t4eo
oxQ.Epyobaw3Ll05YELYGvP4g63Cc9gZDX+yjxVOzkQ5UybW7haAfKc1ee1U
xxkni8pvc.nIyJEcaU3C6xvIiMv3Lryw3tBL7AEXniUAQw+7YibMjOaieA2f
Q7LYYr9Z1PoBHR.SLRgfUJ.C94uhfiRS5pzqtzXNo4LLgvfp1B05CJifytZT
yXFuyrvAMiwTWCYHJMjATCV5QH4AlDxCTyvWzHqAOP4uSr2siAMGn3dWFrp1
ZK9B2zJCLG5LXi6cBXwiGz9ufFVcoS9oZ7b39M2PphoITyICPVMFuznHVG8C
gHk6100PHeBUbcw7t8HCiDNTG4RHQQyjXLNNxTza.+1UsfysWB9DmKnCMKat
CdJYvLJhR6LaROIBC8jV9uv7U3IwpiZzgwiXV70kJMrA25Vx9DukdXOeTpvY
Qc2IRb661aeJBEofrBRZ+kLb5SRnxqS9C1.2ocYDhRktUxAmueWYTm1m7Ai.
zwkIZcmc7UXm89jMKAtRiVsbchc.eCV6Ab.T50dQFduOCec06a1g6WVOag1c
pcyQexjpxTzGda69UFmxL4RAhWmY.scOiMPl5nwuVL0NizYifl8z8k0OYDLC
6LasIwCae4k00Z.fRyD4HRVRjzBFTSx1V6.nPNIrDLou0U9x1cqWlom7w8ym
qWVxGL1LM4InY+XQe.FSkoCYS3PyAo0G9n1VyACO7zeDs519jmrYvtUKCaxQ
ey23qIad+446pMIdx2GPnrrNAdTKRkGFqybWN+gATO6csMgEqylD1r6bN4mH
Nl2JMkL1kBE7KfO1ugzZ+GVsXcxS6+19CIuZIsdy9dPY.MLwrVHnBuEz6PJn
KADCRCHBKx96XhZhC5SbPehC5sis.KSVO+aFzpg.WJcGv81UNnhK6vUyK9UT
W.caOUNer7xPStCQsgkyEmrXjF.QHakvMigUcJiHuYwvBto1.Lovkmhe9iSr
1ynwqABfVWpi7wcaeExaj8OhVrKYtYqerbCwlAIa+Hxr80yWbPegMRo1amLe
wmxbaosjSifU4WNITGB3p1v3OB9RlPI0gufG9KSzSutbORubfOmncrX0guYf
1FQPZSIoBA1LFZWSHmiIz+UGBlAXupaQqda8pFYRJAxoY2tSQbzRnUnh3ZEU
biJMKv7v1uLWO7EYJIZI1grEx.9f0pjQL3Lnk0csJ90J98uoWwsCC+iM+e0W
j75pCn1BYJrLW1z2MHidCoxAbmAkaRj1ifLHgf6J.FGeIwOuRnImeIzitjzR
GS3W64yTHvAQD2U3.e6ldWYqexyEPQfyXvyqcO9yP836wUPAE3rH+wQHqSDx
1ii3aVbrtbPQaAFKaJcVcz3vkXIj1meShq3zKoNT52zvDwSMMGW1IsVSifGv
798Rok4I5QE4NnPa2NFcSBdeb8Vca8Aub+zcVz0gj2TDcoxcyBf4tWmakL4H
oEZV4zNKO8P+RS5iBHFatUG4BESar4IjWyoTmO4LLgQDomQFcSuiqtGxYXuv
LrK+H5Nlwtyyy5SKTqUmjXPxPAwyS5QVVWUZ1ciljq6NspuVEREK5IfRdaBT
1xCooFoRaBnnQ4LxKZuQ95RC3qrDZsFb66qQqS13oksn3iA3qcXVL81sXG7l
1pkwQhFsYAqVJcZ.RGPKxnjbvmP.jhvSkDAoJxfbxGuLRgTAwPplbHMSPjpH
IRAhhbBYQXtxDKAJE9vJdkxSBSU4DFwCRi3CwQZj7HdRfjZHQheDIoAxjzHg
RZjTIMPrjlIWRiDLwCRl3CQSBgrI0P3jFIcR8DOodxmTOATpkDJUQDkxIiR0
lWZlTJkSLkSMObpg4yd8lxg9JyGoHag9PxjUWhFp0i7yLGSd37OY4gfnFXql
bquhBOPgY1JN6VWAyyls6bmpbLF.l5yM8AhfrDdkQQeX4pWMm2292gHfxSMU
TpaDA0iHquCg5cGh+diMfcFmEQkl.RVMQUIHbjWONRZONdxxJurpxZGYVehh
rSM1ePmCIIioXp0UsWxfo8Nd5rMf55UWnsMfdY212eyGL1soSQjiIhTyPLsF
S1X1c.H6sgAWw6.pUS8fcAJld+aY38uuxyIvbvqoRhjkgbcT8DWO9x5H9lK4
MJR8vADtOmmImPD1jMub3SVNxATLY8p893OGKFpLMtMY0s8pcwgNhJt0dzcU
Xa05q3qyeKfouHVXSI5rtKQcOXZ87PGcRVhS7QyTYwVJPYyxq2rAhsjAyt6H
Yy8z.lTI1QgJ.MIdlggLDZUANIrQ1Rw4O6ZihR+q.e0LAGbBR8KqHn+O5eRK
8HipduxjPknCHcaDt61Nj2552mVhHqNNphlJp90FZlyC5.cHQtq08ovW31YM
oGga10FbSqAtKtatmUBFOuWnr5oTI8EmUWkjmVWkR2xwxJvSmTakBRMosMPd
.MP4En8YUr7tEZmN6BzFogzMiK+ceZYXDJsDQTnX5jcwYetyKTZWgBs0IXuE
ZVD3qCTGIrWUsXiGWwFGl93kXLcUZXUoOhuHsQySk5cajcAZiUozVQesOJ3N
UZtjlSA2d0nKajf0iIicaTJBxDiW8.L2QBiPNyTURvRiAFUwaM5xIIXSojF0
zbUhNkqrMwxtZrkt.jMdiixy8h4YqPSUaxSopQqB5a8Uex5h.7IUgxhx0PSF
mu5CYbbr8pG3hSjXhKNCHWbL02mimyDDrqJRHilHiyDYblHiysOYbhf50Adh
LNcmLNesOHiCTdSYtSlKwDYbZKYbfCa8HwDYbBlLNes0jwA.cXidmHiy.RFG
J8Xj4lXjSaYjCYhQNCIibDSLx4RvHG3XalDymXjyDibtJYjCchQNskQNzIF4
LwHm6QF4vSOYhlXjyDiblXjyDib9QmQNvw9COGibLWbmyHGNvAGUAF4nlXjy
DibtQXjyDuZFSd0HImwqlraMwqlId0buvqF+pGPtpCmqd.09Znj8PH9Vsd.s
qv4CakK.BGMiEq+G2Xx.3EYqqNW7q3hy0oqHrzMtPu1uTvfDU8RB8BLF5i3j
JV7WIqydnqgkqSl2DQ2bmIZJxLSARFy5zvRJ8JVOq15X+hEIqS1Ymm.829WM
GnIKR9iMYmyD5ak+s7GaxNJ+zuR565O1T3q4W+WQ3JK887FF7KsqpRRfdGnS
R1lyqhK5QGPC0cOW36Swum1tdY.1AjPY51cls0tZaK8dnT7YOvRS1f9vgU5F
TFbF.TJf3fRnsmmqhZJ4brtBkmArSDeEQHfdO3KkdAEL3n+hcJePSVtxbBi9
zyuXO3gfOMdV7i49AYhsrSrkchsrWorksgnB9qlwv9DAKW7rinGO4x6TrYiu
wC8WS7awbr1YsYt+QzNzKnm8IDqLaprwhw8E2V3xaXps7O8adEXZBre5Ln.d
Qi5rpISbqS6hlXBvB3DB2GvkCDFBNnL7s7IxpAb422fqtUgnA.r.agXpNq01
gjS3JvboFUOdTVVbAyn+FRu3txVZRkXKX.URT4yyfNYGkeCaG0nR5igToHGp
0CZjDwsrFYdUvGQ+466Of9J5anue5GnpSkvJUNgcd.NkZiJ8fILHTN5VFjSG
T+3eroGQX2wYctShsNgvpa3w9V+6U9XyTBG5uvIPDm14Q+24NQsZiW1TcmUa
4B6PyfJt0YLzc.nR8WWMtuPU58Mp927VOkB0Lndf65rKDjNZbeLN.JCvJmiH
WHRdETKmWeKebYkWHTsgcAHCDSDJzRG6VH+ZmxtgPJs3qogUAwlNw0zvpP3S
4kfAxj.G1G.6rtliWMiQyBxJOBJQMTZ6iWM9lId09cH0xOFB5HuqzRUc3W9i
4AU6xCMe.0lCmcTJoCj7geMeRO5kZGGNCGSOaj6fJG4GRUNCuWmuvtutMp5k
h0c9rQlEe6d.i5l3HkzXdLwAgQxFxpz3UZF0Rb0Bh1nsRhuaX6z5YZ8yOg9T
x50aonOLeygUyWuZ9d8xE9vxcy+xS1Th0UUB9f82OY3Bh40sQzU+Gl+GdlB8
A8P0MKQyWtz8mtgu1uqj2N7ozqwm9Ms+0sa0u79OMeot2ybmOtU+K7r.5bif
HDGK8neMth90n6PVr89aKMjqvefTBg9fP5.qxUCKPNwZMjD79k.mkeRnrtIw
zIRqMQZsIRqcOQZMeXKPpCQdcJdAtramlLh08JFD+VNlqe8wu832sEdIis6s
uuuRnL3.uBLAGHP.A28XaSH2CA21GMTL8H40DcWC8VthVYWJLZ4AiwNFyqhZ
ECp217bk8ttDOP08c7.+UevTfpeDYbOEPP4TLVIB9LkEGY8DnNwwhB3pbhkE
8HKKROrzkSrrnOYYYp1JG10ldfmkCh2niFQJTAVilF6f5KCL5nic6Szq0thK
azkkW4QWVbMFc4cnWSNraaSa2oPMivcUAgbYre4kYSupEBD4saTU1rc09DDK
6TLvTjxKV9mKcYZPA2GpEOlL3n0gSgeGts61BeP.YNNGpGlDEalzUlipGLYU
.lzosdef25cJy0U41ZGnR1EKm168o8deZu2+gZu2yQfiCa+x7cK2iVne+dUl
uUtMmyU8U5iDb9VdChe07F8Yyggkf61d8d.0n2xYzjWYxHblv5Vbc22nM9c9
Ns8a9CpDfJp8Anxm19RiQQli7IzdZi13r6abEBPDLoi2Ex.ghjCkIjtGkH9T
Ziklps79yPK4GEc2c1R.qwqRrzCjNBBmdp9Ki1c8W7OBPcN2UwyHLuXKBD2C
PmtBRyFDRyhmB8QdqEwrdJxGrnaXGY+aZERgOwgSBDow8qdn9FcuyuADcV.3
pizuwcGWkSwM9HtlVp35t+r260iq+t+lNYw80gKGMZhjSofZuwGG5c9D8+Sd
opp34F+2G0Rh6bGUMNBfoAfrb6hW47tOiEYxHPJn51QfdPc8NeeAfStW+QVG
GR4rtqtxl1EV2bVDVesKrrocgEpoTvoKSuUSoT28vpWalBENttoyHFVen5Gr
UNUfdy.XXCAiYY.bOTjdo249Er+Kq9Nxq7xQXqRuh9ZFLJ6G.f8qdkyNTKKn
6OjUbmWP4skFUaZ6Ypi.9n6BSk0aTsffuoK0rAjunT2bTDaoy.SRqhrciyE2
1zzmGDOyI9b7OJgx3ImZswRThrqF6iI5PpJd7KQIPiGR0kyJNicZHvog1BGc
LLn5HWzknEhCUObzqvkAU7Pw9XEfiirqgENDXIwvtwbANDXYgjIRlsO2iC3V
YLbzjHyYgyd0XKagjESo.wUbsS8RjnPAU6TYrqpZSZPk80XuNL6gSYR2QVT9
qtVJqorPlyjQulpHqg2zIWMpZg3G.6hTggIgNG1n2BwgNbcr8CfFG5bkidZm
FE55UF8VnJzpE9n2KGhWCzqqZZcPM8qpIqohVTi1avOzX5LpI5FZOOM6Rbzi
oaLe1cFaUKVnBYiNayjVBElWF4WVYjz8SZgSkwzvonWIgSHctdc7VWwU+7.J
hs4STXJiUCUb8JgquaJessKw0yilcO60G+ZFaVS77s37H9V13zbnbyGDJUcZ
Mb1D0mYekEOKJUY0sQFbbwaU3ye9rh0p4LXR1YNqWxjd8ZKKxyVVbQGx501f
zy1PT0fC4h1vH7PTHEPbfhsSSXtXL6uE91gKjMISJhkgFLf4KBPdrWMP5IBY
6GFcRaOs05x+4b8N1aMTB.MDKbjgpUP7UEfNfC5Em4CYUXgQikU6fq3il1iH
1s1kGKlQU7i2ZnjBruXIY.6Q49NnlKGvdTtr2l+Nhk0gJ41vQje5a6sFJgf6
oPvFRjz2QnrgbZYtu51zAsUzZmCNcoZDUlFD3RXdy9isGg7dy0h7xEvrWmqE
lKFSWKXw81zybnzFvTJHJF4ldVoFrw9mGvwJU3IMIADZj06HWVtqWQX5UioV
l2RDgG6qDA5XDFENTmGakLo28QMpkECTLVBSvfI7zqtNEnHgmBDXcKloRuXT
U4X9JOC4Ln91H3MNPV5hjZrETcFlrWMPM8xTbqnwyZbLqSolPg8.I+kioRt+
xDnkSBPnhANcTiLQFHYh3sL0nH4lefRr+JVIytZvzx7UIiOfCSKylV8wrrFi
ef8tTHL2UCViOD+cndz14XErqD7rqFp1tuy5vFRqzTumq.OjsBZX6AZMyU3F
DGcbmlyuQzY2ubyTzKqzIn9IdBBaVLFiomHdGu+nZE1awC6m3w0N.lFYFS7J
SEui2eTm3z20fSFxQHDuWYWzP1J7dwLC49QPj8k0BhTNS5p.3TrrbaFY2eLG
T4sL17fp7BoqxtjeTk8Vi4.JhuNbHZzgiHJrxfH6BhcQCwd0Po5w81oM0XGG
Q+aafey06NrayERW1hI4ztDt3S3g3gWshjymNJrYCl8rK8T.lJGtcylPCI7D
CldKtuWMNApNTBHTpEuhBE66zUpeZQ+dv0Y7VXwgMF8HkKr73nBNWjUsz+SW
opVqjcjsGlZvWhFLKgHHO756qOrJ+CuLzH6qGXEy+952Sxe5LkV31KGqluvT
mEKTG50CDjbkoNzKE7XL0VQ5M2h3JK8GAhASH9O1kjroSRA1zrELy+L+EQFI
opwS.9OMmb1eweIHeo4+2sEmeg1w8nBphkHkQTAw1UohHQDyen+bBtn2DT22
Q5WvClhO+xmfhvus3bt542O.J94jnJK76kUz2e3k0aed9Z2XiLb7gBCsJdqi
kH9e93HR6OgtFayHGWxflUMbHK2IEyVs7frcEtWpLphAGSphHajDDtrx5nQs
RKrHEN8DSSz0xoF14xbIYb8Qhf0ORtg4b6d4Y552ecdcxd1AIoQzU0K5jyEc
Z2E8JN8QJLHR2j5OnYwmmYPmEy2r4anOb3S6R1+osqWZRY7lQJnFeQnjvgJ1
sGT89l2lu3uzFhz++ZvFf0wRv8.3TdKHnICYp73Ho8Xlk1nF3B9igGyL5VrW
qAsXlIvL+SiUfa3v4eaPPFOTHiGnwnGyLJMRiG+Xxbyo2ydpo7E+W0feDR5o
eoqdEyrdrFhE6rCPIugOR.v2nAYVjZ1xcy+RiFtXRKIBgp8TXXEa.wpbVzFW
TqY.C9ETwFByZFd.MmMbSA7Zx98yeI4bTa818049Dj+5xnzy97.Uuxpn0W6C
EqBermaUUCOfBjLWUVKL3I911Rk8jZDQvXzGLEk9OmjUa5pdnGb.7FyCFrxN
KEFBv544adoHfcxIq1v5RwK6l+r4r9x3lJ5CuuY0++28AKig4HIwg6gA8BYF
yeX09wJlfL.Je5dJ4v5ySajBaiaUwYnvllc99uC00KFnuBUG.6EUrbNuaaE1
E2JZapbjGn8OIO.ghbOrJP.VAfhbZhWbRLXG1VpzmVJGJASw7rqNushG71Zg
cO9jMNs0O3HoGOYRTbOn4n39HjhgPJ8+QS56dVEwG.VwNlPBs9Q4SWY9rHo0
OnhjSnVYhU0XKtPYGMI4rYTSh4FAzIlV3dcsg5S6jp5AHg6CjP6CCvbeTn38
Q2L2i4TX8vygEGfDUt1DLKBD6WXV0iQ9s8sqnN2tHX1Pzv7YjNSzGcMh7jkq
pj8n1o6otIQIDErrFHG8MW0GMNRiCu6AKqEK4LUoITGJ3b0C74AVeWt+V.mZ
jr3Y185i6tSeOMnWhAX2tQAQa81Exbldg7zB2qumC0u1MqbOG5lSjLOTwnQj
9PGymIPhv8vSBZuMhmjZ0CfXaDoWkXJ0IXwQPYTI6dctc5S+dTstvCGiZ4al
oN02eMSkOKL7Dc3dR8zumMonVboinsGHMbvOLBXi93s5aCQd1roMaHhZJN1o
MaJ2p.d7d8sgHpzqEpEQpeBwHH6ybCWnvxfMWcoZuXuZufy4vHJ3pdWuvqUV
nH8fmMvih0HzzGKLCdVM4F0ocVmpuGIb3OyEQKf7Z1K6kFXytRUqdsIpQhHF
ivLQPBZjbH+OfK6bizGaF39X0bTdjWaXPsFn3tielHXu93pYwDoTHc2pyMQV
2ahBsUGiCmT4.1N8csJMLAEQBznPquKokbcj.pXSQvr6h928Y+EEZShB9DQA
Wlnj5nRohBd3EE5f3QM0qk6S6kMph50XDUuXxvq8DKpOdR9DFh9PjNckfsx+
a2hCUNxA6zoUvF92CMOR2Zd4r1MXMQZ2VoES2fLyqxMUOGraiBb9Nhk8Taj0
w1namaGj1mWqvoOhPAwOSSzd4Q4klgp2dTM5bGi2KOKuLCxX8xyBGxyphMnk
fgDVmDOS4BCgROKMAiwLU9624Va.QOtaOIZrW3BtWdVpt2GDAaRtomfVVWP1
86bi0qfc1Kab9oqUpt8ZsRuEcqdRZ33haONxOYvw624Fa3af0Y0LAXuWXXZN
lMfoc27uWCbHw8h1LV4qCOUtXEJAh3C1c3YK.e3whY8Sqi30D0U273VycJkc
WbD50PQSuryMuNy2Bpx58fOzsfL7s0SFAW5Ju.REM+s29bxt8tOt8o9vqy+S
HYcTOZub0F3R64J4C6R97pz2uvdm46V7oUGRVXn0Lbh1EAmimO75V8Cdy6qb
hsMgbNIqy.ou5rMqhT+oXZ+jGHqIyxNIalbPbaylLW5E00FXgrFy6VXSYJVO
03JlQXk25ZHKvZYFfEl.n+L+O+7+aFIhsX
-----------end_max5_patcher-----------

IR Sensed Granular Synthesis and LEDs response- Project 2

For my final project in Twisted Signals, I thought of building upon my previous project where I used max to send data to arduino and make LEDs react accordingly. For this project, I decided to send data from sensors connected to arduino to Max. These signals then would control different aspects of the granular synthesis engine I am using(Sugar Synth by nobuyasu sakonda
http://web.mac.com/nsakonda/ ). The four aspects I intended to control were 1) Playback Speed 2) Grain Position 3) Grain Size 4) Pitch. I decided to merge my previous LED project to it as well so that changes in these aspects of the sound reflected in the LEDs. As a prototype, all 4 of my sensors were working and all 8 of LEDs were working. However, when I tried to implement it in a project box(courtesy of Professor Jesse Stiles), the wiring became quite complicated as the following picture shows-

I learnt to drill holes into the plastic project box to fit the sensors and LEDs on it. Then, with the help of my friends Mehar Goli, Caio Arajuo, and Takshsheel Goswami, we soldered the sensors and LEDs to wires. All the connections were made inside the box using these wires with the sensors and LEDs sticking out of the box. However, this setup is very fragile as the wires can get easily disconnected. This resulted in one of the sensors not working properly and one of the LEDs not working either. However, I made the project work without these. The sacrifice I had to make was control grain size and position using the same sensor just scaled at different amounts.

I made use of two Arduino boards  – one for the LEDs and one for the sensors. I couldn’t use the same board as the serial port couldn’t send and receive data between Arduino and Max simultaneously. Arduino sent the data in a specific format and using some simple commands in Max, I extracted the required numbers from the IR sensors and scaled them and fed them to various aspects of the grains.

Here is the demo video where the IR sensors sense how far my fingers are and the grains are produced accordingly. You can also see the LEDs reacting accordingly.-

Song used: Ed Sheeran-Shape Of You

Arduino code for sensors(LEDs in previous project)-

int var0;
int var1;
int var2;
int var3;
int var4;
void setup() {
// put your setup code here, to run once:
pinMode(A0,INPUT);
pinMode(A1,INPUT);//350
pinMode(A2,INPUT);//360
pinMode(A3,INPUT);//400
pinMode(A4,INPUT);//130
Serial.begin(9600);
}

void loop() {
// put your main code here, to run repeatedly:
//var0=analogRead(A0);
var1=analogRead(A1);
var2=analogRead(A2);
var3=analogRead(A3);
var4=analogRead(A4);
Serial.print(var1);
Serial.print(” “);
Serial.print(var2);
Serial.print(” “);
Serial.print(var3);
Serial.print(” “);
Serial.println(var4);
delay(100);
}

Max Patch-

<pre><code>
———-begin_max5_patcher———-
19761.3oc68lriqqsjnXiOEv6ePUhxObqR6qNb0vtmcYbUeeeupiwFThTRTh
hThjpsfOSJ.C3Adlma.Oy+Cdj+UJX3eCSxEUapFpLEUp7bO2lcJJQIFqHhUD
wJZ+2+u7O7Ku0UakjwaA9uE3eKvu7K+6Vuyu37d1uyur8M9k2lHrpmhfgyM9
VOsISjTMe6GtenozJSmOHV5DIhWIdgZABWsT7n0pFnXg.IqDtP8bgqDnZ6B0
REuZ5pAhWHY5BwCDsXgZUJlKW7XAhzNP03EpVrR0c+pJxpR8zlq57SSu8cmJ
X1anr5fepK0yj.1.Z.eHpeD.f.zN+klx9OrVWD3+oseOCy0JRN.4tGf57IZy
MUjLcVUTG71xpaeWv12UVz4Kq0czeEvQ+ly69+7+k+A6+Z8me74wcVXgpmfQ
Rjn14wFvqfMXAPBxfh5.jAB6WHCV7GGYLQxvPXfz6QF7TucMBNFACQas1fPT
HNDBwh+Q.x5DBuq04tUD48LWOUh7Hd6s8+JGgCfmCGfgebbfpzRqei2iBlHY
pqE.PE3uIzyTdgT.v0PIXj8pmmlwglS1G7vvEcETGbe3CjOrAAPeMD.hgyYo
SQgBwX8e3XsP.NuEjxuX8w79vxTwZOQ.cIioZpF1jcAi.lCstdnlhX.Y0d5R
BFRh2ubALlvaPwCCgb2y36BGnod7aLldUQCLVqE.fCCrVcXZZadAVLmEW.Km
snBLCyCbigrMZ+76K3NK53j8vR5tHfsXfe4s9xJRKjzMj0TO7Y+KuILc5Au+
ub3WxFwMRy42h8G6eOYUx6g1+d5RKj29SPu+sEzsvilVHw45DLwJF7aG7KoI
JoqNW1AfbeWaR4VPaO5G5viwQTCC4c1+w.XO.caQ1Gnn0arj3grRV31oRpxp
SsXzs1UHX5Bi6+bQo9ByUL+YeMUSC4MNfoiltycC8E5Ic4utpvDxpLrtrfxt
04aCzkE0TsAjiw71u+1Gos0FD0pGslbtEUgom6qaQ4svOW5SMrVryM5JnaSX
5RXDg69TSMMki+r8eSEo9lte9TYU0SQnlZSuxmpKOX3091c0r9zIW8m24iL9
4bUxG+SqMtl+zPXwIXdSAEE2sxm7DVInJOQvTxTlPOfT6+TIUAqE7Pid5ZJJ
GutIezhy8QhVr28jVJKZNz4gcD6g0WPd5VFq21S1EkGHYXdxaZJLv3j258xI
rdu4cc2H+SSoISUrVMDk2qMr1P81gK18FYezV2CECd7GbUwgGKRzLP2i9fyH
Xj1ZqIqkMSHZVGkh32YgvkVjWVfnWrV3xJJNU5HG2a69.W8EaEz3KHsf2DkA
nHnLHwzRdaaN8ET1Q5QtrMVuCiw+bwXdgMik5UmMi4UiMiF+hylw9xwlwXo5
+EmMC+pwlwy7hylQ+5wlgcbrzKLWF7EiKiA43HhWWlLzqGSFGSnWZQYr7uZL
YVFY7RKIi5kiIiEx8hyjw9hwjY6G8WYlLVtWOlLNlWa0kruZ19yxR8Rqtj8I
aS1+R..jyqmKGx5vmg38M9rOJVC+rwZG5t1qeJysHM3KGRC8rQZHnWOyzqKR
C9z2exb6i..dwQZfmMRiyiVz5hxdA0CP8rQYXOZe1KKJig+Yixto3LVZfCt5
kEkw8zkl4QSZecQYOYKZ02mLB2B0A.rNYZ.lmwNsCbNM.CquoL3ZXOpKf8ne
xl2J2Ov+jL3+w+IYnEZTRM.HfjhgT.paiJs3731hJoorypAZFZmTd6KAgdI1
Q5WX1QJnCdyNwfdQ4FQeO3F4Y4BAbQjux7h3WVdQNFz9bv50jWD78fWjyZSM
2AYy1KKyH7kkYjEve.yH0KHyHl86AyHCKydlQLyqKyH0KKync9iPQQAfvWUI
iX32ClQZHaH5sXxWXIiXzKKyHF3lS4uh7gHtuG7gHVZmZ03ElEDw+xxBBoIX
uWSVP72CVPH.ssTndYYAYeYYA4I0ZEEwJQ.50SiL+2DMxTu5bg.efKz4o5MT
ClDL7c+6CGmzWQSv7ivhweLwcawa8NfQVUTZ0gkIySFO5Jo6EFQBuSDI7qAQ
5Z0xKLhDcmHRzWzN6CNFxKL1DemXS7WC17POL7BiMouSrI8WC17PmG9BiMYt
SrIyWC17fvB7BiLYuSjI6WCx7nH98BiN4tSzI2CGcRVLdMmAwXTHFJKtT9OI
Bk5tS9Td9GjMjGT2w1U++kpqTGrf8MbArng1b8da4.1RLCbBtPTxvTVcW8X+
usKLuN2o2Il2Ovv5YfA6+.CimAFn+CLzdFXn7efA6UfAi7efA4UfAw6+.Czy
.Cq+CLTdEX.9Ovvw6Ufg2+ISbdVnG2S.XXuKfAb7cpoKRZnHfWCP7LX1cfHk
eBhdVZM2SfYm9t.luDRp2AQluJRpmUyrcw3m.C5t.luDRp2AQ7WEI0y5G47e
KG3ntKf4Kgj5cPD9EQRY8rhcN+2xTVt6BX9JHodGDOGl84PR8r59sKF+DX7r
hcV+WK.K8cgY9R3u7NHx9UwegegL+lE8BY3HK7ExjGVvKjxZVpWH0LL7uPBH
Y3dgDPx3co0eUGqf49Tn7UHCm1yfHi+6TVZ56xCw.+EX7rpCF+emGM5tbWsO
iY7rpCF+WoJM3t7ctOiY7rpCV+W0Al+tbJq+hYvr2UTE7Yfwy6l1ZXheBLv6
JDG9KlA4cyM7+HQg3tq3s3yXFueRU+2DUD9tB9i+hY.dGyb8Pot8C126ueyt
eOK9SRKt9mBll5xcmaRBI8gv0819kGnn0UPws0Juqece8dw79V17Nn7wOXJl
pKePS6+bItAGaHVNZVJmJ0llcWo0gvecymBZeX9TXHY28zCLH.OC0UmVGPt8
YNNflAuCivx+AvHvq1L9+wkQLme9D7IFTE8Uzrd.WakSSA1WOfT.7tASwGZV
kbvvcP2ZGgoj9OIsB8ilICumQ4Gua.dzWSehfCLxbGnJZefG58UgvYqCqCGY
ETLb6tf4ivAcOiuBFeX11PE59GdG1cuqcX.rEa0tKbpPMDyWhTEV+E6b1cTG
fGP7z6ktB+5jtx.e53ALFbd7.7qDOP+zwCHFVGIrN5VNhe3KbZPwv7zwCGoi
8H7vWnUGLOe4CP.y4wCtiBpuF7.2SGOX28A1gGvT6sBk4qbeA+SGOv6TqcLP
lWHz.qOXL9b0oB8FGfJzY+eWcGCCHD.vSA3s2w3x1P5lJLe.bD2EwQjbL+Ge
tWbO11yh7E1s6FCSCOPjDXuHI5yTFsOOlPevZ9QxlgLlJqnbUM1TT6QGP18F
1SlfgOrSCd2GEjkwmvH8DTWpKLMveyF5B3vGifA9ahxSB.BvE3uIHJL0L.Uf
+1TEA2iCD.c0srtGFffBOXDXhvLOTbnE3+SqCJpKu59wlbOdr4+xua2ehtJy
EMxtpM4wjAOG+Cc+kg7.UAk6ZWFmeL9C62272CTRWaDv5U1s0NrWPIr7679.
fh1eO1LGve1JQ3EC72rcHX.gISMN2dJHMi09JOuYB.P62LA.6kGQyy+prYhy
WzjcUtFGSk.71SQSZdmyT9UNec47iYL7MjkvwBHyR2Cb4vWINf0OF1rV6RV2
01xQPfeSUWPUTaRfoZFAf+l5.cAY0.1y8x.neScprEBZeSY9XOWg2gFOX7c9
yKbKmQeFqiZKFNtCFX0LePoSmNAQAmE1N7g67ToI84W.C78ObOnsi0OoMFSk
jDC.9M0qJGiBPZuH.1CQi92vOl0GDxaYqjhjsR9.Xq+Ovdhfd80rkVMVmlSC
KYnmC3eJaPYNKBwGT1SZ0L+OXiQNrUyX8dWeHHS4NqmQjgUK943Enyxmvf8g
8FGKb553BfiAPOs8ELnGFavYMWghnMlF6Nty+Borfm.Cu0KbY4g2P7GOQB.x
sKK8U5vOJeSznk87TNHkqK..yRs2QNVlOQ3Un+5DNR6GVur2fEYas5AtNGBK
iqPQN3SQP.MmeXT.wNraHyiiyYswy8bD4Qi8QAA2khOVx.nm2swch395jNh4
7Og.PGqi.W23HVxpmmXYK+WnkQXV+CU3ZnH80wELzj87TakA7EJJD6GgGj+5
pC34I1.QXI9BOF6mwH4Kt3gX70W9H3qxxG3CKeD8UW8HFzqxp2ORTB300H.4
2ZW3W9pG6ew8i7euNa.10JPh2V39H5Cv2J46d+etCUlelXR0ctoo10MJBv61
CkoNX5jhePLBmjgc2bs5GQFXhjotlygC9aB8LkWHciCIXcv.aACLtmXBBdna
MtFF4rmZhh+Y6kaqiB3DBVVRln9U5cWfunWz93hV733.72Pz.0QtKhh4KDQ3
CAltut1Di0S5pobcUEj0sqAyrnutyN.7iLm52Nje32d69SB0s7I7jSWR1t70
j5oH+v0SlZB2PABY4ShxN9wJs3J5JQmEC3G1RQSE.yG.ACPCBPibdAU.Zn8+
y90rmmmgwC1ewScPPD4AeI7L9PBdrQIv.cs4Ss05dcUM.NG4I1S9K6+77R1k
yiK7iSjKoXIh3Vdk.PL7jCP3G9HVghttMG+X+euqcTX+PE7sqWH65YvVcCYC
xWY95hw9VUBIdypDxR6qydBVhz0WfZCBS6C9ucgknuqmNlDICD6RIYf.+SJR
3jvD31Ubgu+Q2WS0zNjaN+X1f1Au+tZzKrC8NhlhXfzlBJx8dyyXbFtivW8z
TzzIfFUHK8HX.7GVuBx.Ywz1uBwxfYsyPkPaKYwGJoxTSSIPeM8.N9b+u1an
kPEoeDvTdhze0vTWx5M+Q.CSIcIs+pgENUP7GAlLWwTdp0p1A49i.BphAlno
KEPVMf0cnX+k+v4PwUsMCPNVKuCiCf0gTRy9b3bHGafDe0sbQvmJmC0KEmij
fwZaNioFAL0BnHInqFXn1R6KlaHcKCu+fzexQYADMpt+4NMN+Sv.PN3n6wGO
SMocDG.5Zb.dmpiYtBUmmmCyRn0HZaZMUHZKaO.XeipCBIOYpltY.CM6zSbt
nrVeYEo.cWGPTWXv+UQcso+lJLjgof0M474A9MUTHK6lrPjA1UUm+UGjroQ.
qGy7eSEGxNQfBnoZGHr.KEVHYW9lA5JoXwQsT1bnk.lKxUw84xLK.DR7LfqX
E3dB7yfsByPddj7jmHk4XYZdWvxcvVA+JXqtnAT1I+kh7j.LW2tAh26nYb9C
6mJ7VGgTggn7h0kdEge9TazOKBaHojHoI5kX7lqsLsVApCNozpuT4XeQt5qU
m1WfkeaHqYuHz5cpy4J76KRk9P0DNiOk1iDocxF6D28Od0Brgj4ibXhzBzmJ
aGtaUejIyHMIdBm8geIJ1mQHE.7JIjRQSPz9HvAnukaPnHAgAwR+.ResOsfp
hFBiEtCMCeb1841Jy28jjMkl3N1NdKTHWK.r2uRT8a+peX+Op1aJU1cI4HHN
2m8QRNy66nsX26OTag0wuItBw4MHIL06+AN9XKGfsN2tM2xpA.NjBB9Xdv4g
J6DQe3358rP1krWPPwxZJaqztduzXqaD9wMz8c2Gf4SD5q4mD5yg1z398OF8
eN8hXlCPS.WeMbZhuetf+9wNdHfjZV.RvCrOCv9Gzscj28GMY.xOhm3+8+l9
uoZcqATDlq1aXWcskFR5AFZZN8+1u9qKk5FZhPuPVJ29UUKYKZphB+p8es9f
ecpty4ABMzbhxs7AvkIWtXQ7tPv7YEbx+Xkadd2M6GoBIjB.B7+y+WAT05Ne
sfw7.tH7eS8ZTCe4z2tDGhW8c8vMB+Lc9h6gtcOn1wOaua+wcK2BbPtG8D87
xEqPTqmvUC0MKAMgImVB+br93zRW+ysUxGbR+z.wzlaojMpEse7OM09Y2486
Ko+6V3MMcQGCHN2lFzs2zftZWchvx55hAD6GPhF7itqgESbpf61FRtQQS8gO
n00MG3bN0r6fC1rPT9d3+bAMcTmim.xd4MgPDqsc+V67nfrHd6Ww.vLr7m7T
b60duqw8YqxxxJRiSvqVlLMc5Au+wcgPK1tQDPf8G6eOYUx6g1+d5RKj29SP
u+sEzsXVLsHVy0InwULGLfVeahlnjt5b4C68x66Ig1+p6HyjyQ6Vgg10Bs8e
NxJGaJghVuwRhGMV+dSapjpr5o7U6+bQo9BVlM+yiXSnBc9anuPOoK+0O+g.
+k2FnKKpoZCHGi5se+sOx+ssdck9n0jysnJL8becR2Z7Repg0hctQWAcaJiq
k2v8MYQMMki+r8eSEo9lte9TYU0SQnlZSuxmpKOX3091c0r9zIW8m24iL94b
UxG+SK4dl+ztAUdxMZYruqjvSdBqDTkmHXJ4DkF6kM09OkbLjgF8z0TTNdcS
9nEm6iDs3u6IsTVzbnyC6H1i6piXtu6Vd0lfow7tt6j+o0YLmpXsZN4NrVlW
bjQ5wQt4IVGegLt6xNUlb9LRBV4lZ1be9oZ5EjWeKKaIGZRVT7jMBW2CMWVa
8oRmgt199Hm4oNmW2PQ1t+yeKrMmaGgi2ME+bLT8cXameqiUbXaxFfnuflgi
w9UT.dFJti0b3cp0QXHCISKjm0pZ6yi5L+rWyK.dQWraa5W9rRvuGkvaA4cq
SvcO9Wgr9.ev01HZAtAt4lQHf3ONhmlI1f8G4MiLOdhvwVUelbhxqz.L9SKP
DdQZ.0MnAuOko7aZA.7boE+q+qVao8JsfHmDg7k8C2hVbjmt7cx.0ykLr0Y0
diN.cn.t995iQGPeX5vkJkkGEI4RpJn8AJx7IcsNQ+Qvh8wndGmwYqjTxYkI
VRPeezBC4AmX4qGjZ8tiKc2jN2l00ON+rs2O0v73ocdaB2yc3QbIIpAj9yOZ
6u.pxaS796bf2Ce3ntSbd7wRhZqMOPOA6Dyy1MWjLx4uZcj+4lA9KSj68q1d
x5eNf0Nes.tNDyNCt5JEvXsp4PIadQwi9kOqy7uXK1hDFM2vuPbq+Q8cnOHA
6ZVdcSO9dGly5CBotJ0pha5StiV7NuSdILMytPaYWveTayu1GJhl6lH5y3Cv
6.aieGR4XWsSC.NmUCxwYchOmSswRSA4OzS6OMRkhl1TaxS.M0e0NTj2RW+1
PPRSpPh2kAEOkcBe.hB54Z4ztrrv9jcdvTV7AYxMO8m.q9JcxtKRLfOY4Q1D
AhnHRen5uLwPp2+7k0GbKqr1VCljboF+tv38ptI.7jw68rym5.8lqqacKtTf
27DtE61I..eaDvP8jwsjjR1wDn271gBH3T2TB5a.JEv+EJy9vri6xM2YxYsH
rpv+fK0Fv8j4vGHHqdSR.oh71mJEeSXs8AeaZpMvNKnuYLFbMfamqAdLNM69
c++6cSi2PczOWoBSCz0x1fw+rKYDBeK9QdWShcXE4X+CtLAd52iP1mXBmfyu
bBJbojT3zefylrBWJgEtRRK3gDW3hIuvIIvvIIwfylKRSQ10PFtSo9WHIF7R
hL3ojY31IzvkSpgixvoqlXCdL4FtUBNb6jb31I5vsR1AOjvC2NoG7RhO3oje
3tR.hqkDD2NQHtQxPbiDh3FIEw0SLhKlbDWHAIthXQOjnDmOYIdmziS0G79a
3l5ENSHCONvsWow1QblEvNjgDSwgmdlwqgEtdvRtkRh6sGLbdsDuW7vEaWCm
SaA2AmQ5D02mnB+yS5du0PWlx35sQmf4BoNqJ66ix.d+i85VG4QKjtth420i
13edn6asSgzuyno73dExw9IcCb2l6D9wRQ9X6U976OfWgfw.ddDryjNJGSwH
16po5365.fPNtol7OG6OyKe5XWujAHIIw6aiNeEjQelDhQuvh3rat3+wRDG+
2iMLTgPdgLscCCiyFFdveOrgAw77HgNPzcrewM9imO97eR5fWvymsZBNqgUf
283uTD7ONJ9fmFt+8IFwkQ9zjrif8gg8o93BX7KL6IGQ1N7S25vKN3J6a7F3
cCs4581xV4laGANC5y5valxp67xv+1NiPbt6ONmwGFN4.2Cfx+0AmT2CbZYR
vWJfB7JfZIJ9qBPYuKVzs3+u..k4tXQY+53Q2x04w8Reca52x08PAzCugicV
6a19XS7mDWN9SASSc4tyMIxdOqOq+ft35VtU8pducfhVWAEWeds6WwaNKauu
0NBE73C2jkcuG2NCbC1fqpwp1sNqe0vjjdQmI6u1lRqfSC6hqIzdqPOlaH0c
vAeCvwkLx6+srqqYHM1o5JcKalyTKKWJF5.dNx.Z.uMzudJxNNKqEGU0N2Zg
ckDi9f7ryFw91cEGNKD16fFvkRpWz6oMtDWsou403SoqM2xpHGapbrl6vrtQ
ZfPu0GkhbfaWyPmMGuOp7f1W9SVjaLOkSV1QQg3gNuhimy50ejfOBouVx8cN
Z5SMXkjcZ+d.i4CDz6Nu+syLDWGQybPEm8ziW4oSq46N7jnKQt7gr963tX1E
c9k6vshj3MeFzJ7t1ceewI9Gmysl2By+9tO18r+44F7d6wP9MIUtSdMxwNYX
dc1B3ik9feTnq17k+tGyEM.oXgH91G.+7X6a0IO7NOpOT6mRaDD64UTCY73R
3FwzedYFWodaNKWmmPRL9UYO4szC0MBQb3+HIX0SHd7WUMKQZCOHxv460nlk
P2YMKAdtE0sS1O6M9YRGcae8f8P08vceoK1GnvitX8p9jKidmhY4e5lZ72kq
tz6myI+AtP5AWTlwAMgl24.5CHMmy2NGRfduCmoemOctf+bbNP0o25A3Buy+
b2.ImWgQ1qBgG29JDIY+3KAbCPdFvmHKNUy5L0FayhUVm.Ey51eC31c0osqC
20KkOtdY755k6itbAbLticdGwBt0f3wWQJMKWDCfLxD74EMvWWzP.7UaQ6co
FfuJgFXuBh7eUPHj6afrWHy2AfD5cf7KCF8pbB3KlVLOC3.p6Gv8S0Q.Ou+B
+QEMibRSK2I3Ale2E9pvWfmk9B4dwnHdWuA9iah.gL3NgpgfcWcAKh7y8N.r
+aBn6RDB4NzDP6q7WtPjm4B+pD4dVMRWvH.5WrcJdGzuCNmmCOO7dNF.3Kgw
.3YdWluLlWJuBieYlc4YrH5i.gakdsOqPtUFg7u+A6BrWrYCeir63r8J1Syp
isKpGYqE+3t81EF7mD+T9wmA6nOTK69bc1sO2L4A5CSX3+0+0.2XtoRbyKop
qQOmA+0GCmc19YOD6CSoC6lsvdW1dMtNF3AAS+6x7RaaiGxeFgSWCsgIiXGL
8AQU7Yh1du0BexcrP+YNXe0srbt6XY2NlL+3C5XOiCOyDw9ywB5GCKaOf0vL
DmIx+sZCKf2mXyBbUgbj7NASzrhYdJZVuxHX2qnvyNc1A9ft0aLZ1InOZ7yj
i6ApYca+U9wNoXDlNURPWPs2UMpiA6NoMPGjREee0SvdxPE5ObyIka0hQdgl
QJGm26+4LR4OmQJujyHkqkAo+i+q2NCR2MqsoNnKjgex4Sx6yH9qWBJdK2QX
odxovy1o4rGRiG2D2AxtOCpfvu1r34QfxwOYLdOAUShqe7RpS4NPfHHcd5+n
fzY7A972Ut4m8nRNYgwUqz7GQ1PeilsG0k19C9xSwRO1Q8cynO9Ga1o5sDFG
9fPR9U53w5YWpydlvC7ThLk2AQ7UfP+LrDrdNxILmVdx9P5g4YfgE56.C9AA
KO2PyboCo7sKrM1CR2q5HXVxY5wjIjz2wAoKEqOLSp+K+28Oe0YtN4bnXhgk
ruuQj6iyIZ31JFj+.2YQ8wlSz2gG1oXtx.hlmmCyRJeZDMqy.rfFvwaOvZ+b
CH5KRf1USNAbPSV.9MlG3mysfDGBRpyLd7ycXe6D+EhkIty7a+mHtuU.8RPC
kmLUS2Lff55.1BGBn0mL6dBX6CNi.+k4FVDr.kmK2abM4IR+ymmDSeERLu64
sYHCiAG+.yR+wHwdhfbEgWm0ejb9gqcWHaLWP4mR86aqYbprEZ4m5BphZSrr
az3Zx0nQ6bUtcFcA.e6TGvx9md38O8v6e5g2+zCuODO79W+cOLflb80H1oiz
h39R7v6saSFePmeA7i4c70P4A+cOhuI0nDYL69GI78ydzFaI4zXnl4uG.Q4Q
LOoz+3o9R3zOWua3wf3wO69OxMcbIo4if39iIi9Sdr6opIaHc6FsAE4LYVF+
b4dw+KOR+x8XG3WTrLHhN78XYb6tVB0kil4Wc3L7VPg3d0Qjfu7wEr2hKjaN
pS6Tf2+Ybg9nAcwVPteGFAuGfE.jw2gFv4JX1KAN3m.3bGULM6S.bvuPAfZG
2oWYcNo7vNozGca2AjI0CGcH36uhBtexj3bgOu9f22FUveFisOlCWOt4Nd99
0jqFEzGtDnNHfEWtoice0G0wMarqE.g228FusKrY9D4y8swnvssTL7e+fQoo
8g.ZZgQLjBLUyP1YO50P4jg.LfmLuw49Lw1zOhYBF3mLbtwCGw+HX3tXPAuF
mnE.KOwBHs+BgntQbDcq1Rf6oqNS4u4SL1VDosPI0gz0Of.DrOvtS5Wj1QTb
ftfr5GH5vHNRQ2.1EzvmWzgoYba1evCRcX+O7vLnuhvCO2hBNe2CV1TZx1tL
gEC4Or3Jgt+E69WF2+x49Wv1a.r8SfauUztu61alAuGGdNpNYvJgIEY0mqHl
+Xa+uDKA3PVhyAXBJJZKE0EFbzO2YS1S29j9CpboYf9vF3JRBJ1AtJPRcA04
JB5AptV0bnjMOud.K4LAxKr5WyWszUKNXz9NmIhhDLazyJAOHARm7nYd+i9n
Mv3qsANPDMEwSZyldvJhqrWFxiAN85dHi8TNfrqlAyB9r6kuYQIaHc0J0CPw
dXJjyw7kVcn2ogI.zCrVZOaxrP5N1LTGTKdfOFt4dYmYgtQ9Abom8QXavyn3
44uLGNzxLND3nA7.Ch1hs+3YowaVFGHJ652scnfiFVDmL0FNRGr6MB8xc1WV
Qw4t+4VTw9G94tKm+Ebe+xeDn4XzFu8jwvAsQwyQgIux5sNYNnbzufSE43Pk
XOvRvCuio5Z1I501bNIDh+r+NyM0NjdX8i83q0ZSc4oVasFdcgPjBF1tsd4j
lMOrB6GDhl2xnI1a1NSdT8wDNePyLYLhDXs1b8.SkzcL4WsmT.K3Vij+d1IX
04M39r1F8SOaSN.P4drLRRBQ5UJXtmiJcV2BHmkaa5d7tiD3KYdK70JqMMjT
rPIAlpHrtqPuwAbFUS2ex2BIs4Fpufbu0UMp6rlf4Ik.018FxmOY7RRB+Umi
UdUwfDc8tylYL22tTAk+STX.GOuINK5glzMNbcSvmp6uLzRszQ7CbN7BbDaz
O0nkG54JAacvG2kVFOVGH4bXl2NqoV1KahYamexmcg8Xmh6XcNOy9+8nehCY
OX7xIj.LbVmQxY+nqIQet8iuex3sep38+6+K+u8+2+6+e7e9e7+4+4+w+2+m
+G+ut2WamLL7tqAg2EGBdmN.7r3zf11H6XrLf1Zc6r9seA5TNvK0iUPjl6iq
tQa8kWc6v8M46ta+rb7nevVg0adZqx0lBd2PoB4jQ.Wuz7tCHc5ny6vwl2TA
qm6amcW29gzwgyKu8iKuqMp773Xx6Z51Nc54siMgZ2wrnccev6Fed2VwH+EM
u4hSLuGc6WBbiiC3HajlTpUHtWh9708VVDHenMe4js8dAyQ7XAh+U0aNmCiw
3CccIy.xAjuNFaafNIVDSR4S+lW61MPy6MDc9PeMzn+14WIzSXPRZxw9bLa8
zjk6Sw4g70HpiHQShljuadD+rswqbjZxu4gYGx5CLomIW5uBQ.SFAn7eGq55
ONxaovBIaB1tTw1o7tNxDCDODPSNO7YdEsiKIudb7HHXFnC+MCKACCtuzXf4
lVXtcobAunt8UttfkEC.rLm+fbGE4YRK2i5xf9kn4dLFfDNgeb0WnHaXdhAH
cm2u+AYd0oyQXWOCIexoJNZrZeQmnu8toA1VRZeO7a8bOu8Wld+gQtfskzmy
rGev+mF1ytbhiNuZtfQZKrzjyW61ZjdV8H.FhWsHmFwsL28+pK+Ux+VSCzUQ
Vc7O6R5+KWKrZzDO3v5LXU3QemB4HO8eVsy+Y0N+mU67eVsyOlRA01WHAtYU
f55dOHIs2+TkHG5CWhbWt+Te2EKG5RyAcenu+YpMXfhzswvjzdFSb..0iZry
eyIY881a.uX4Mw+bqsSqEktV.ZJOv6RRCL.ZeQZ7zKuyaM9u+n8oxm8HUlXb
kq89VFxYG4.Vx+b6tl.zsXxoHiKMNzeX5QqnuXwF1Qg36oXC9WGFXqip3wtg
.EY.Ay+GllLLh4KpFwc4e88Za9iTUybeW51s.LoVEHi1mmbYMyCdwKqYdO2n
VA9dooxAtyAFseBKdt.qwnmCv3oA.Lx+K1aVOyxv8D5suduaM6+7LXOWY079
+lIDyCBX9ypf9Cm.SUscM9uZXpMM.IXsx1mM+olESfii2fco.foA2N+k.Tzt
4rDot8AD+0y8hjASUbPm9W5K4laytAcxMm.YumzWppEU+syjkRvupzTBZGvP
RX3bRosOTxI4LTjeBYmzEi1Dg9FfT918rV75ZJNk+lSac8V4c8GJK6w7La48
scMM2yL2rYI8nWLwohjAp9SHE6A3uhXWc7g5O+X57fYVGIECQrO5J95Cj0vr
j3KhIm.9b.1MFHddfj3C4Pz.ASIK6JuZ59gHIqFjiT.meqxYM.3STJtSlqXJ
anHeivktMyJPtYVgayhf+HLjyuxQ6h3YvrTDow6RZTrcJUehFR+t6Jb8btfL
ClYbq7giWTmWA0ERjgqU9cdnW6+I5.H52AIzMCSHddEv9BQGNBxn.9OcXeVS
drUDHWlTKaGbx1YGN3yYS4184zTTGT8qGQU2mRXD+N9rS0Y8.JRpCtdwOxPe
PE9RS+pJ8a2O1w0OhkfED69TsxQHi8agtbYf.nv9Pd.5ALMfxclqPztS+Qpf
nGei14AfO8AE2Au9f3l2MmeIsrnOTVS+Pmvu2cxTB8CT1UMyABcKtYv2RTFu
OLHt8h3wsnMve2Hej2Opgb6jRyEa+ap+kIFR89m8kixBrjFQhnDotrHMyomV
gF6NJ.n1O7Y7+yxRy9RUs31Iibf+qAD00lFXnj90avIDWNv6N5V4dlYLKKYi
MvsyBPAdR4LK7kJoY0klJoJFfLXltNox8fwG3mluKIMKmeTKbCrfTYqOsmfh
zOBXck3bcgiZ0hdWnEEx0VPR0gP5yDLeObAAmOXM8V1RcIAwqZQMXKhi66W2
ihi1Op2Pi.cCX3gMxfsiZB3moi2c+U20Odb3uOQUyYqc5nlVS2cSM1C5LaWF
6QN6F.B21xmuXHefeX8SDSWX3t7S5VNF41nP1K6fBKSFssdzokPg2UfSrtcG
A+Qcz+hcOJ4FMoDJxD9Cwx9gOD8Wakzww4mU64V7iqAvLzO9x87w69OH6EA1
u55GsmfpEN152U5hah7gSl9qGjNsWcW.IrYto+42pd0CkOXSl8pHv+DvCt6D
.bKJ5uSQ6g2G7ZjtEvJEXqsqA1YRqm39Hpn.zfmlMDeP6GPmCa5CtsbjrYnY
lglnsPVJveytAGRJdTp27h4+tgVil4ozvQrf0eZICTWd0CznLd+n2d2attt0
GrqY16udPhzJtogLGTFuOKGHAbGewXpcl68LbgD6Wxn99jjJ6b8leW7v1vB9
A7OD35Mbm6vXYF+XJMrq0H7apGDN9eS8zf5dglp4YNfBYBiyR9CG0moeY5GC
yAZevcA6Z1zWUyOsq6APGLZv+t3q.5OgMlNhZL8BlgzhNcSHq6Cyf+3sMctC
b9q6yFc0S4tcAsqOFc7abGaoo22ACH+F+TTvT3fJOXe8w61eHOpRHda+caY9
MIxdX2dpgywz12cMbrPZ6MgnO+MQezMwc9ah5nah+BONpitMLkGfJH2UtIle
bPNMbPNmrqsg.3g.agy1+6NjAkyB8n7LZ2W3H.zN4u9w97iaKk8feKmb39nb
QN.IAiu4cQ9oN3gY2GH22vO28rnN3VXvd.4SSewaZWtluOW2OGqD7iwJQ+Ga
VIHEC1N8jr+WOxJgvz.Vt+fxO8WstKJZd1CVdLm+NswbgXXov.Ox.h96LYYT
NCrOOHLCYmCtnuohxfzOcIY3+tiQxaJEs8zD+qIaD3VrQdP9EvibQVxxAbdj
Uh9ivJQEh8gwJQeaVIziUljWXknwNMMA6BbwSbS+UaYcrHL6qknoGHS0s0GZ
gzvg3vPLEqGY9X7O4XGyxbEIYdf+ysUZ7DEkQFILP.v6reTTLGI66ORRzP.V
dvsY.svZg3stSHyg7e9QZWsa5bXLURRLvGHITHcMPLIg.HEDwSysm7tyeGlK
MAR8kDmi4UJUrLjG76WOJATGDrED8qcaN9b3ajuNGW2FEJ.y2kAG7wnuOTGM
l6w6L0+kqxE51bZIIeAl+oD14GZu1Fx3GnraFtdvtJtZW2t46EZC80j98ak5
Qx+o+dH86g9vXH3e7W+cujYUGN9mX9F1G8gT9PpnNTvPS2KZlgjbwws.t+Vg
3.z9RayVRWRyxdzixhWOaOJKIaHPjBxlk+YZOJ1MIgNrzHeB1ihdoJjiABxW
O37jIHFhj0dHzyr3MnckUQTKbtmsuPffuVDH6Ace.6EoulPLXZ21KGIiBfO0
MhtiPH2JpB7jpnJpWJ5rtfpn1DR+eIftcOh9CL7MIEiFgTxf9J5vKDwE.pmz
vI.y+RQDOC06bYhAFefLUF9mZAw4VvhjIDz4d19BYh6kbulmxzvO4vMF4JKk
HXkk9YNZig3iSzP5mijU7qUspRJ6w8yv5.+EA00Arsx9e99kwtsvpHsSN3yU
FKo7zc6FztY0t+u28KoIZcaWAt0xTRCZ9S5JvGY0tPSLmAP55PXzSqbWrHjx
SrPZGMUK9PtbDS4mNw0s8mskxgdYnbaMDknbj96HkCw6mTNFRem90aO21NWG
3h.1qOkyWqXPDO0gTN7KCkaqMJjhC7b.1qOkyGpw6fW0YjPRqYv8P6X1ueQn
Ag8kHzPe08.Da2vDgXX5ugyPVen1.U0jMj9cOf2bkcf4+FFTZ+XxEaW.kA9q
fPjALR.3Ui6BMIV9ts.Q.E9UMFWLmC84CgbwNSHtQ.UcsvGi+3A6+KluCx6G
ZFrOj0UwajXYf4o+Nf2NaL9vO8TdvEmw312I99oQ0O5rx2V2.GISxvDuM+cT
2.j1uDtciPw6dLXra+5k4aHpC91SOC4bOBpKV66XFxA3+Rzl5ZAhKh66n1Tf
udB4sVn8H7swPSc4iyQHGmjx4LxJf3SmaI9fmPbCvi+6Ij.QzTDuzv5fysov
eg4lxm7H3mhjYcll76+2K1KiulGsg7XfCYB31DrrL1hhmix2RI34pSsynaJ6
CQb0y765veR5E5lH29d+CYaNt+gaKPme7q3GsEHIy.pZpR+Hf8qLlOPPu679
dnwS.INMDf9VMTH7gLb0Bc0WR+28DtaaGVB41XU4dtbidOiqusuA9L7hVxlu
p0JXRu4f1MBrjCxx8nG0KmWS.Cowx3V0EjvOiuZOW3z8321.P+D245x5uDbG
MGqei69DY.rzFQgdWmuCPT+Sl+W6+2ORXpUz5YaBm09UzGlUjDnbW2dQNpCC
ysmZGGltV9PFSOUSY8uGX0OcD3YY+LzCritdUA8gbe7GtOgRS3AciRB.v+IL
qy0l7e7IrNm4ri6fOg44SETkTtJCM+A4UFfCblIHi24nucWfh8cy2vce48sP
y833SL6ke6TJja2TlwYB08N690ryLEWV.pPHdeD+4VQYD1VLQZJKqeg+3+T3
u8yjmcXR2A+neg+9LMaxsCOBhE4OoCV+vlQI.evT7EZx8jLtAZaq7TRwlwf+
Ng1veBeF1epbuqWhiNaTcb.MYSKFe4NOM3i2RtHZRt3y4ZsRx82kzjtjABJv
6F9f1WBDGT98PLiaq+LcjwUSR0ORG0PV+mRQSOHV4JgsdodQ62HapV1+YgZZ
b2b1uJVtIkRWNdjT8CEgcPn1ohDJTsZUqDKdr5nksY5YlrVMwwiCEDVJXnNh
YJxjZdLgv0yEIb4TpEZMbPN5oI5ouQuctbU6Nczf1UzyzaXi0IplesIsIUhE
cp1VICynNxUWZVcAZzn1oTzS2XTxDIW2YVgUpJoBylNUX0v3AcjYMGXNfuNH
XnXLy46AYKkPOX8w0wvn77EjfLbcmOYMVzDxyv0SBB45ghJgj03PPtNgWjje
QxpERwKZDx586FLWzo8BQWYR6Qohjq0phCSspep9oUgiKNtm02iYPMtkEyWD
foJRuLt435qypLbS5QV2vZD2fhlIGFaYiYsD5DgoGVXTOobY5Pqk0rEGTIif
Y0o7JQK0q2rIY1HDLgTlQQRUrM+rfCiWJUUygZEYqvpoKIUTQaPmoxbAaNcR
E5UbIqWdrX+FlwyqIEdDHlb8I7s5Z8Cv.KJyW.Yo.bxfgzqlIERkJ0Bt0YXn
mmN3lgEJNN+pALBYmozrUjUSXVlguFXtTbtdKBVo7jAvMEZlIKt7hDJBazWj
LUsg4yEL8h9ix0IZb4D4kCWMwhEkRTJa3pzgKzNylpbsUSWRxL4LT01A4qja
URtjF0KKEs8nLwMnwkFFlNqoQ0jKmrhmaPqZ8jYW2oLBmI07wKlMeXKSXpRA
4xMLVZTofwytJLTkq7vbEY3SlEUYbOYZpxL8lIWfoZRnYSibKrr7WRNpvzg0
VNrzzVVj7x4RWn5pzMZCXgEaUrW4d8D5hhFCWTaTqVh0qDciAcA05FJI4CEL
5vMCymZNRqUbkbCSXDsLrylxyilKFWgEk1v0Woz7xqUgpwUjSWnj3ljEROjR
ybXakY8FjPcpXtEknyURJQ7NElDLbrPkiWITLoQCpDobxXKyEssX2hFcn0y1
Y57xYxtrXkLKUSEKInwxTvF8JVSHauJbQSjqXOyk46fE4n5FclYSr9jk0i2a
8lR4yunYwZ4FIkXPdfTWkM8WMkdvlF0hDyHJuXuIqRjmaSVJpJS5poPOjlta
nNZI4TCqVjSI0l9iVtRQPWmO2j3qKVIYyxBbLkW0uWIgFc45L2rSmRixsoyJ
c4fh5pbBUVmoRewdqRFL0pdUMVOtiVSyZShVJIrrY3gBIBWVbcwvMpSurrt4
hg4X.hqUAh34MZWkMb8MYFSaVVM+vvk4Jzre9LqpKQOGLbThRYRxzbdmUKk4
VWs3bFITN8IkWyEpcMdylZISFGElRcvTATiZhFSwwZNuoEeICiDkobsBLYpK
vjiwLWrjLqmtLR6M0SMLh3h1KWyEUIqFdThlMpzaBdVuNQZ0pFSntZyMpWfO
dG4f5S4KSo1rbBsfKVVVAhaDOaYTzBnPKZK01rXB7plnNrcjTxjoZwP4Wxpv
jI85kpRbMafwskmXJgpZlItIH4vIYYZ2QdnN037LLSlWPbPLNYSF8nYluRAE
cFchZMBV.OdybwZSMalgdCUIwhsVoGL3x3kzAaVNTje83ZElqWUrvXU8LYJq
kku+nDEyavjKc2PQafkmGjuX2dq6MVfplR0NSZTtIsZt58BkTKSlVZZqEaXI
o0LpYSAKrTWrTbrXNJyRcLhxULEcHq2MYAsvlUG2Ok9z1JBUUCGsU4Zx8BpF
RPIgY2dc6GzRhoxzdB4KKrPpY9b5.yDVeGlgoyfmNUczroCYEWfWFbsxjjkY
FFLxfwi6GjmIYqJIqKhSfk4ExyLZdwdrXpBgZq.VHqjZoZ3AMMC1.uH+jL3I
nV4xrRgVFxKWOemQZg6oOqnQ7B7JUWvHozoyfdhzLp8zlv0cz5paRa1XUwFC
pmpQSPM8UYzvgqsVXJXczVJql0nnViIILYMWag2ESCWlhZohYvvS3irg0n9Z
A5vUiR2SczZwzYz.hZ783KALLFEebKkx3jRcAn3aZCSVqQ3rxnHMyTNtZrHM
UpEYQ+zIhUMmZ40azZvEqck0aFvo1c9vv0gQBtN3xopwlPIWneDsJo0VLdHa
+H8QiRObQj5wF2CHTJt3prYWjp0j1whOYc+TJk6WYgTrAAGNXPtN8EolNwjQ
njoJMuVDF0hSYmRUYECLjgoQb5xoUWkMXgfR0zE4ZjKhIW5YohH2JW6tajmP
0UJTIswJE5LzfugTZnXU7hrJkqI1OVq3CG1majDasJZFEn0lhl1bXw585pKh
EqVJXt0S3K2rRItRMZqmRn1FijSq0KJSgpQSUOiERQUODdPkMCRMX.sYxLLC
mVVihJKc80E3GBvKlsrBTHV0LoSlnMktXj3gROTMMEWVU1lkWrJUds9IRlos
Re0nKFXtndYiBp8foVw0cXtTCKxFJTunKzLoyaPshwzr.CdzxxKms.XIGQZR
moLq.ppSfQm1mSms8xHiRFIbNb7jgaVcw.4HMa0AQU.1rbgjK4anNpYjU3jF
psvCplJxvrYZGqeJAgT7wFVuhxDPbtJoB0VmOuQtFyyZNyQvxLNZVlBSyLnQ
D0FwYlx1RC0UdAmz3BkJWzVgWQ5ACGOVKUmJKKPYYeX93EFMjt85o55CFlFr
NoTBv5zx8ixhVOotQnIwKFJYUjlRgjoFzvHUn9Jn17RySXXluXwpLa1zhhMW
jQKS0JnvhxMRiPks3TJGSWdbtrM3YGutqx.iFyY0mAy0b1vrkJHUYVjByWst
QzlB0WtfMoQ2EEWITsXFb6kb4ZstYX7bpdyhCnqx0hMxZwtYLggSlHtod6kU
0WzxXV2IAyLHhfdAQdnYB8MqGToNug9rwIiudIMMGCqzTlNFYQQhqC5hoZNL
4lEBqhoUoamR77SmWJ8LZcvTUStwSJHvTtW89fDILRziiCkOVoTCJoz1nj3D
ckrI4jyNIuz.lLSFKZInoY17MElNpaRvB1gSrTYktRg0oiDo4zYIhSUrA2Zy
HhxAWjtcRiVboh1aYQlnEi1OUlTLivXQTrz4whCSxMDmVZ5FLLHcibC0oo0P
cTLxNDOvhVNLX0HLYDfEoFpWZY0TUFkN9hUgmMZEnIcWzDiMsa2Ld7AnjqKN
Kml3xDovEAqBmZS04QCiFEtQtVUZggkRjeQKgJlVeu0h.1MlswhaVWHdFN7l
grPd5FcAgUkGzG2Zb2hclEIci7iC2dBJWhnQXikqvRXq74EKKTeSzBYJrbdm
d5v5zhYnsLhbb84ZrnPQrrTHagdBELalXVTE4H3UXtURs2rIHn3HHdxnzyJP
o1MZbNlRkX0CNjZwxUqKqXHLrRAIiQL7AqDQPZxvfLqoR.aLq5vE5iyIOBAM
1zOd2oCyXjoCH+3bg5nxlsR4FMJl0xFxwZXT69sQpcjZloaV7RwlUyXNXHeu
zz4ZjhogZKFpksVInsvXTRldbqWKS2Oe+1EalYS9QLkEZ2ZwTsLclkDkSUuM
CSP9ZMSzGxGct4hpwKyVac144V0MQ0vUpEqpRY4F85xTfYbhNl8lpaBJUseD
gbMZxDEsHHq5vFsj4LLAwWSWMelHvY8Vtp3p1wyJW.V2raec4HwKPCnm2TDK
yleD6L915Ki1Hccf1r7LoMnzaAL6udSXF9Q8PhCGC.nwETFaIdpVA1hKAsoW
VQ2TtzbAJ4zVT+jJkgKSHNoaxIBaRYYTP9FKhFOYWd54L02.iKvZvaA5cawJ
2rltN8F4w0FmbSMF8Ekkj5FIbzoYGG0Xbtzfz8BuLWOX6hrFFahRsoRytZBT
IapKzq1.gb0klLCyOPWOX2pIqNJb3tMiqrzLsbTYTog8mzkKq7jtVVB2oNL0
blkyfCJGsg1zFkwBaxHHUO6.NkYqUD3WfFupnnX0rQZzrclYCW0jMS5lMQrl
qhJENLeeyAimjFmWqkpVsFpC6GlRrhdGkL8aoHTYU+FcMsXUyNNTktgqIJ1q
rsYKSSUiRZdsMZIE4SFVq1hnEpZYC25QwKNSMEsVKs539FTVBwSGqLKKm7lx
PNTQn4RET+IUrNVyRiIKqLLeqjh4iVfMir0ltLqKZXwUUUPjcFiVzB31B8kf
sqK.UiFTIIS2Z8XzVmzTaT2Vv7ClzgtlNai1yjoSnWferznLEBtd5hAAyGEv
VukLUmxIyWY75YlUjZCljcY9gKGExfZSixl0pxmNapNxQJWbbWJKDUVKaErY
PXQLy6VnUbi08kamtGa3Y4GmcNNtVy4MlY.LRLYHuHteRV0QrBRoyrZbF5gk
JunR5h3vU4yLbXjQY2jyRnmkb3xcSBSOxR28Lo73EKkFSsZLbUj1LfzMLxLe
wXTP8DSvSmzZUPslpgfQqoQmgULOiZeybgB1b97EUlywUswFtPYWqHNLeuEI
DllsezfYVO1xR757CmySWisNC0f7hyJ0qYskS5V.rrr7vp5bVRYfyaktw3Iq
xHXTLwn1z00lHTDtJubyA.P6Yyowp0DL6mBzenJhYRsXiJ2cPU6SbLHlZPKE
fgKs1RKwfJhYmSUne5nwpNTSsOm45QHq0bazR8UqlOjOa9UyyUeBpXuQYTGo
KzOICKzfsax4AqiRKhyYjdYwN7cqWtbiVomFId1QQT3pojZJuEqQHipKGgzq
NrYq0EyTmKyrwc.c.rh33EwIGDMChBFtHXlTkorhr8qDlMT4LalNpQG4obqF
ojkdTWcr0VPYVMo9FYnmuY5JkFRimzGhaudPyVw0JUPKV7kEh11xzfn8KTsZ
ulUFEYYwUciiqfyBmhRuodwMJY4ispqQVkH5rw3fYBlbx5orgaxjucxjKWUn
xnxKClJof47hrc6JOXX7p5KsX+ClY0ngP7Ts0RbxqSC1vpK21RJnYAQA.S3T
VKwQFFiSjunbesUSk.TCDVwH1vbsk5554SVZQ+UUvb.Pm1EwEVqYHTuplBez
VTso6S2sKs0wlsrJSZsxnrnZi6NZ9frBkStLSvMYyjRLqkt23LwmMXnVnbgG
KkPNIZInW1BK5mZcNqsO8lDrTlhEGzgs9ltvBoyGNbIKityNuXvMIimrS6Is
DGFbvn3Yp1jqhkfx5SxNJ67nxc1TQJRgp0FMqaQA8To4K1tXUS47anlTuZd0
MsZuzr7nUxEjiuTHkJtRP80EEPazEVnLSIuX8rcZFqKq9Dsoo2LNKJVdbaiM
iVLp4TsBJcWUvXbwjyhnLYlT25apUTjOaEIoHSpGlSoaqjpgGghnxNN6lXcG
2zHwv4pqvp4YP3E.gEpoi1HtVGNjlkwhCFnrPdIOJIMy3gA6NPqVlkIUDLUR
MZ05QRSsVEwahpzsFE2JlfKoxhXiGLmVwwB8ZfJomojYl5TlIyunhPy4qW1D
uLMhKCixlRZymUp57ZwrLbYIa8AwSLtGcFr5zdSxsbUNHeB3nnhpUK2JduD7
FM5TpTvdqfziPQGAxzLbxBQmsJTZtdKUjlIWsES0zyAMaXg9ilWcYZyZoVlO
Q+BgvkWlHVWkBsxFTqCFDjan.xLeBsAYalWPWsZ6070atbVGfogD0vwShjLa
zr4ytNlfXvIC60Z45M8Zplsw5Q3TiZTIUwRwFMd7jRFY.flaTDDxOuQO4nMn
oUxUQaZYyxSnKojKXYkVAKomJXnx7CZERVIWTkbxkksTAWnW2Y.qSjooHrPn
6.SqSWxMDUuw.iroVTSbAp+ZK9UnkUsLAyZopIaO.8pgxpIyqV25qmn2FdCZ
KYTcf8KtPbVrzYWfSDjNI1PqdE7xVSFOSHHW0xSLUJuRn+fliqfiUsTtIkhZ
Y6e5PQJaQ7RzWZSqplkG2WsUKKKBakY8vMqMF1Y13QAgBi5MA1sMmVlInHP9
vJBalGsnZ9oKCmrHcba0r3PspMMXLqiZNXT4oSRx0q0pTza5z2jVHjYaldqa
OiqA6jYT7qSUM7rNsE0G1tvrrUWELBP.jMTpbffzrliiJHXfi2HWAwRoV0N6
pAYzUa2n8DNgTqx1LKiPasEEaMn7R8HkSTPLpd6JhSlpMnJOLU0wEjfqVTuF
pJWJPu14RTZ35wCG2bd7zMBGRAAmpmg2HyrHwCmcbpMBqFvTDKGuRVXW00Im
lMCyn5VnJHcgIIRTmaVz5bLbZw61YFtLpDWuHV58LXaqNYXMw3Ypfqmfuj0Q
Km0Od4tUhUteC8FJTSgw5jv5XJv7MB1BNZdXA1Ui1HH0qojrY+HvZlrCaihy
WOa9D7MCNnbYMogFZEXxZnkqMusjbs5q4lVioQhhLE6srFXFW9HUUmwyLoIe
q5gSJfhVOWENyLbJoBNdR93yW0tfVVM9vkxsdEy53kiuZ75IyMrcuoh7vf5V
J.wMFtvxz5H0nlKGbf0geXqEqXRlIyiIzneDyYSLiNIikzk5AElMZdlf0zVf
imncdyBTFCaSIHNtFVoFBMpbk47CfkKWCVbLnxbY94qpAmmzP.iJX1.kIgP4
TkhEeT4UVpM6zSzRidJqmQ1gQLLKTxLBnchpbJQiBmxlYDBEMX81UGXcVqDM
ltQHRc4MEZZzWujvvkSJxXcr4tqSFux3JcVEc7booV1ftH7r0MDRsnEhRZb8
Uz7qlhjn2zCsJWNgnYFsNwpTEDGgyHMp1JpbFIkSgJjIQ4XxYaVjAv2Z7R1p
4iqHMUaQ1H4TazaiXwNHkdSGCXpms2z1kLMJrNmZ3p8iUdSu0S4Tk1DSoZhr
ihNYIKNQ9YJU6srAtV9M4GCFOgoXCoB3NVmqIZ1lIlvyrrXO8z8qTHY4Q0is
pU5zIhVTryxJfLCWLqgLCXnXLSM5TCixsQ1Ppc6DMyHrftdPsbQVmmpTrhxs
WkkOqR5hRVr.sMqjkscS8dYJavY.Z0NsDLbSiFlQsLSbVHPuQLyg834ZCUSK
qJjZcqZyCmqyJ1dLsKsYAOU79AqTRI0RqS.EEFqJs1.k5UoLzhygRVIdzJQR
EZX5bsYCMfomPL4pw5tIJOtgNtPpgPAgYKyBLpmac+N4GVfKQo0kRrre5psV
fREdRMcoTgKGkYst01+b1R3Ja8rBJGcrkw.USfAcRDwRd2PK4cK5mNVlpCiM
HWv3VVjxkrc3LhQzLUWUjKqEGSOrwFcqiGzdETGjVLmbBinCJyoLnLresXCz
CMVrX608augtxxgwplJbjXnXcoSmwx311fzK5pvEiYV6bkmLEAS0JYkz4ZTp
l35XMQICGSsVjTkzp1SIS5xCSS2t67YL0jmNqd+gEhEe9xMUh2KDqboH0TpB
Yypjq8TpUMDlFhlYXjr3LQ5RkZt9D4lFLKQQm0NDOWvkch2UIxZoxUyILUle
QBkLsVxVKgY4dTq.hvNwSTutkgXrnpMShauZbhLyy.jGmNY8Hqkm.kASmxtr
0.l00A4qB4TGjPftAa4IaDEZEcHJj.W4DqYXv7gJUMKKaCCl0r3hTrrSqORs
HaAkFyzmokL+FizgjSThoThxLghVlga5XAJiDSsD4hRYfzoDMyUXSCobMLZN
JeS9EcrzPMWpdjJFn7iZ1XDSMjAdglbNNCKyZyuTlkt4prfkshUNr0YLE0nT
F1iOd3kIEiBUGNWwnCdtQW6C.zYBGUWIKM0aZNlKD2jMgfUa2bZsLoF2dE8p
bCVtDWAjDFtc4D4wYMhlo2HbCHzr3ZtDI5IBlvOPLCWQ0QbT4iMnV4XYFVRr
TkzqJMtOaIKzvvBsT543o93YJmb0FHOqBc+1VGNcpRQVkAKm2Ne5b4EqonYl
Kei1P6HC0X3br8qP7wX0zYhJ0UJRvfgX2rJylRb05MHocXwBkt9npwvSK0Oc
p29DIt5w4Vv9Yn60FPUXDI8.YObt+37mGZixvXnfn1Rm25lyfTRiXvs.wIIA
Ofi9P.RWatpnazLo8d9Cd0wqKlGC.No.BFvyP47JVdHfljYwrLXVvAID8GIY
IbywZpP7zLbLnCS2Dp6JcIH2pSuPwX63QxkEwgDa+AmvnXnMWu21.D6zRts6
k4G7PEkLLsDbu8o9usOsCbtsKyT58mHmWdhagqGwCj0KOP3If0DYwoZxpltX
V.myHHXatGyr+pGCLx3IjB60gQFNanhwsyW99Kb2cSVJrGs4dmTBpm1pA.wd
Y4XmJc1EG.hZ2UmArAOQvlxqfscFotCpOGxF9HfZZuA0zOtMT1zMvMYVQWGM
A3bnqHJ2LEDi1c4iAJQdZKE0iCsf7DZghbWOhGHzKqPziaAB7DmFf4w8Do7x
Sji6w8.8xyi9w8737n52GGQjySpe4dbpe47j5WtGGSiyOE7lOP5qKdhhljpc
.m1oO.fo2coOo0zAtuo7Ctqqzjmjt6PvVop6.6GHx81TSzSlZBN07sGpgAbd
REK+MLmYKKDqCi0NRi8kOFLE9dfxGwCDcG5etD+JhijQqt8VURU0ezU.RWum
AyclqHcYZFh83NW8PVZrdSt7IX7gxhhRpOJtNVVuoa3wYXGqm3yYOw7uGpPP
GP3lBAYgW.DfOJP3lRbXAOL63bdfna9.otvZF7zn7.VJeTJq2H8.F7EfApmG
df4R3A3yCOPy62zBzsk+w4mzBOodg4w4YJa4s3aaowU0mwgnBgrmNEtk6OJD
OEEkcKj3LuEzssqyPL0jh8Ao8hwaNx..eXhvX7z9lGmM9LXuoaj8w8DgdYWI
95mpvsN9vjJpEw6b1BLoxZeDvnmNfN5ARF7j8BWEkvRlWYLTrac+y1qdHPH8
y9D8N+T2z5A9KZ3nunRwa.E2c.UfmFTcpvrqAUnmGTA8NTgeZPEj06PE8SCp
146Yu.VOBKGn8lUbmXm0IBl1pUl8vCgdxUjNcIvsg9heTxwwdC9odbRsvdx2
0rnG6C7YppB6IWICPON2ifuGGsdQmFQ4DVDr6n0xMJIXpGUfGQdR+HD5im0.
4QefC8Q2Nf7jWwAONuhi7zVbD7phn1Z.Izw6WHF7tqdLvH9tDCcIfjxwCeXN
G2ctEjsuxunkdDr8SVZjmotOH1IuEJP7C6.eHOcTCHyMBxBI3JrjrSX+E9EY
wa.MkO5TCD083X4GwCzKJ1Ydb9PFx6cgF3KepPfiIUXVGQZ1t2G4d0iAH8j3
dH5pRe2lDPtIpFwVvStxctSgbik3iJ7DPVudva7UjK6reiliiz4zn1ckOw56
MfFvdgcenmGHPAugFMBlizIb3YP6txmja4Uv1O8JMjwyZXthydbPbHLf3qGt
cW8X1U3siMc8c0bDfCS1VvAoCAOykLjYPLvsYp+nrFGdGVbQeErLgijjEurL
m4Ja6uruBRu6pGyB.44Sd+fdfPuiwdLV9.8lSVebgk.R4YkUOlGHvSpvcBO8
k2GwfbTcSi3b1wvRFQCjK8IELf6vzCzs.bLqydaZd5P.2q7Io6.ukGEVFF+3
nvbdyLTNvC7Q5YlJ+x.DuABD9C3E4OrmFvGve.4Cw6y7GrdCtYebNKa2u0sd
jz9nOY7LPf7wSxCX83lSnOlcFDfvCoFAuuCD21Y+Lb9NPb6DSfg0WYLQdJSA
XX7cff91.AsuCDL2FHf9NPvdaiN8edBOX4KvOUv4Q4Dz.eGS.8FP.8Uf.4Mf
.4qBqvdCHv9JPP6Mff1WABFuADL9JPv5Mff02.BJumggfGjwbd6I93rdziYm
E9Q9H8DZ8zJ76wRZ8FL.X48SoudKgmP9Yxi5QX.f8UqB7ZRf7.YBo8lynnef
tpg1a0jGG1OMJ2i.AMxOs8g1yAj7AIVE6sikieb4f5teqmVzC2Ii9FhSnefO
QusuES8.ejdTe0ibU5siK7.KjNfWy.J1G7iD9bejdCu93dfdL8kPOxGo2DCf
7U+O3UfvOScLf2x0GH+CD26Mc7He8H1dDHtXrzeL3duIO4gh78D09Ap9yaIJ
BYM9fLq.x5ox.m2OK8Tf2x3fqWZuzjR5.vRlyRjA19IWQFNzaKeW3iJLz.nG
akKOP0qdK6CNsas7X2R5MX.6q1g6wbX.9.O2k2x5fSaeIO5sLdRl7UpajGBP
P4IG.C.WOy1H6boIIaNIwcct3AQt7TJI9H4O7TMf8.st2aYh.+0yNVRqiBy6
1K93OyUr6ZIBau5AA+dK+B8UYYdzsk.eM9V.Fuse5AZiCviEu6CL0L7lcUr7
O2p3xifE3FUjsc40t2LDDC+tq7MNWukL9WuMx4BnH2FfIIoSP.fukdtdDr20
uQdVUI5NN8OkvTVhRLx381cJne7U9lvTJOoLfyOqGEOBCuy2aOVFLJOcXpKF
gbvCCF.dBFtr8QtoMKsqVX58W4SIesGQcHlmrDZugMO0OTuHf00Uab.M1V3.
G+tq9ZYMAWTPA54wnAttpKdWjE3fJ9y4Jea6Aqmy7+GkPcu0r0fOvmHz6EAx
CxUTTfOTcmbZgzSZwarTN0BEjbrliuhA5nIda2+.R8vz85IGFd9vO31dsElN
cgjtg6Wg7rdahvHRG8l8GjqkU0NnIq+ltzB4seERqI+MA8dCkMk5YNWmzE0W
YmlDjusl0lA04xaEkXuZsezNcb8Sas26lA1Ks+4BLQSUyXpPusi0aq0Xeg4J
lmfZrm02Nsg7eJqZubj11Nxo9wA+yQVWJoHMQR07nlWNKGBfgjlhNGCx4UbX
.DxdxWt6f9xJJ69t+xdPwBVbmQ0uMPWPT15Qrsgr+KuczCyh4.vyX+HrmJwT
XxqrdKvwOL2uFv04EtKj8+yo2HbWqXmAxhocVCrTzbb+3f1y9weuc80cH69N
694ZQ66+FyM01s91oXaKo8zAZtEmXdMUgdZucHJ7HrAOKKMf2cUYcIOMxt4w
eDV+nu.EfghmzT4A.NZmVNOEEBQic+Va42+w1cU5Vv565x+uMwhaRd2RvYiw
+k+Aq+7+uY3TxI
———–end_max5_patcher———–
</code></pre>

 

Kinect: Human Theramin

Heyooo

For our final project, Ken and I originally wanted to control a videogame by using a kinect sensor. But we ran into problems getting it to work with emulators, so we decided to keep the kinect and make a human theramin with it!

My contribution was just the getting the data, while Ken was in charge of the sound synthesis.

My first step was to use the extension dp.kinect2, which is used to get all kinds of data from the kinect to use in a maxpatch.

We made sure that we could get the skeleton data from what is infront of the kinect, and I then picked out the separate data for the head, feet, and hands. (The data itself is the body part on an XYZ axis.) I then sent the data over to Ken’s computer, and we used that to make the rest of the project!

Overall I like how it turned out, because if you’re precise you can actually make some music with our project. But we didn’t have enough time to add more to it, but if we did it probably would’ve been doing something with the video footage from the kinect as well.

Project 2; FacePlace

FacePlace explores the intersection of real and virtual worlds, through the examination, digital representation, and sonification of faces. Utilizing FaceOSC, interfaced through Max, we were able to capture single frames, or a picture, of guests’ faces. Although the goals of this project were mostly technical, the experience has proven to be quite thought provoking. The idea of “scanning” your face, only for it to exist in a virtual world leaves the installation’s concept very open ended.

These frames were sent to exist in a virtual world, powered by Max, and experienced in an HTC Vive. Simultaneously, the raw data received over OSC from FaceOSC was analyzed in Max, and then scaled to be appropriately used to control multiple parameters of processors.

Adrian worked on producing the VR space, creating the virtual world, and handling technical issues surrounding the VR delivery, communication between devices, as well as over-all user experience design.

Joey worked hand in hand with Adrian on user experience design, as well as splicing data from FaceOSC (supplying Adrian with matrices over jit.net.send objects), and utilizing this data to create a unique sonic environment for each face, using custom sound files. In order to process these sound files into the virtual world, the HOA library (RIP)  was used for spatialization.

First tests of a virtual world in the Vive, powered by Max.

Testing the VR world, using Seymour as our test subject.

First playtests of the installation.

Experience photos to come.

Git Repository

Project 1: Convolution Kinect

For my first project, I utilized a Microsoft Kinect to gather movement information on a person, within a space, and apply the tracking information to parameters on a granular synthesis. At the end of the pipeline, the resulting sound was then processed into a Lissajous pattern and project onto a wall behind the performance space.

To farm the information from the Kinect, I used Processing, an open-sourced graphical library, which was programmed to collect data from the Kinect, parse out only the left hand, right hand, and head X-Y Coordinates. Then, using OSC I sent this bundle of coordinates to Max MSP.

Using the UDPRECEIVE object, I received data from Processing, containing coordinates.

Next, I scaled these numbers to be useful by the granular synthesis parameters.

Scaling the data which I am receiving from the Kinect, to be useful for granular synthesis parameters.

Originally, I started with a rather bland audio file to be processed, however, I realized soon that I would need a more complex sound file to really accentuate the differences in the granular synthesis. To do this, I used a file of wind chimes, which proved to be much more textual and rewarding.

Below is a video of the piece in work, as well as the max patch and processing files.

IMG_1881

https://gist.github.com/jsantillo/9441d9acfa79fbc7548cc4aeaf5d0150.js

 

Project 1 – Vertex Extrusion Objects

For this project, I started with the simple idea of vertex extrusion after seeing a tutorial on youtube. I used incoming video for both the object itself and the texture, and rendered using jit.gl.mesh. The jit.gl.handle object allows the viewer to visually spin and change the view based on mouse control. You can change the shape of the object being rendered as well. I then created multiple of these objects and set them with changing rotation, position, and scale using jit.mo functions like we’ve done in class. The default starts with 2 objects, but every time you clap the number of objects doubles until you reach 64. At this point the number of objects goes back to 2 because jit.multiple can’t handle a huge number of objects. You can also manually change how much space there is between the objects and the position of the camera (default is 2 for the y coordinate). I then used a motion detection patch to change the rate of scaling for each object as well as sliding between MIDI frequency notes based on your motion.

Here’s the patch:


----------begin_max5_patcher----------
5401.3oc6cs0iaiir94jeEBMxSyoiO7pH09vAcP1fECvLSVjImCVfcWzP1Vs
akHK4ijb5jYwN+1WdSxxtsTSYQY6zimfws0MqherphUUrXw+0KewUSy9ZTwU
d+Iu+t2Kdw+5ku3EpSIOwKLG+hqVF90YIgEpa6pYYKWFkVd005qUF80R04e6
a9428g238We+u9ie7Ge+uTc8z0KyVWlDUpdZf4rwyUOS1zO8Zhe0sVT9sjH0
4a7vwoUOKzbxUgkytONcws4QyJ0TNDSmPf99H+q8nb1Df3+7gW6AofIfq8Ph
O89mxm9e+xWJ+35A1V++d2G9369adu6u8wO7+9q8pwhbPiEAXSnhFGBKabiU
a7meuraz6O+tO9t21qNTL2EsQtpsAIieS70u88+xG+v6+oe5c+Yue8su4m9w
e4uXe+YGs06xRKKh+M0IgnIfdBA7.EDP.XcaGMJPvGd2e4G+0O9tO381e5M+
U66hYCuKlggMZePHaTZew24sHOJrLJ2q79vzq8dHNIwaZX5Bux70QU2eRbZz
rr0opGBYKLfbfpKFW09oLnTlNPc.FefnPZzCB55Qfv7vY+t08sPaEeqfooKl
kkjkqaNh9u.JgKz8Bl.A.bfu4an.rnWV1tdRVdehBKvZNBzAhESWWVlkt+lM
7wMaFo5V02W42VEoopqjbKWUS2V1U6NTwHn3S.RTAozHJ+zkbHEQId.O39QK
7dPKT2n00a9q0HGdzPNfByH9ChepEj6+w60BkVVylg8aE3hkZe9mmJYOCVYz
CQPCBqtKISPt6GTP6ATnWUSX4gKiDZquMJMbpFA.sAX0bYcfZ2kkuLT0D8Op
RqTbf5OfAgiIQeIJQgG+t8bXvCkCaYX9mixMNC7ZeAgKruQ7AVz9eMhH9.hD
eHQCgPU8OzdATyu05hHEkwGKbl3SUlOfLib3Vg6v4sMv4d3hQAsB7EwKRCSj
7qlucxGMgfANXL1dJmi3Oejy4PtD.YA9NPNuE1OA7FVJHIr0B+HZq7fperS4
.LbEFwElwfvTBDKURNHTaYTQQ3hnGAaH6GNFEztPauwpmHvDLBtNvDn.ksbn
FP1h7v4wQZOPZic85FezDtM2Gp5FQA.ntyACB3.h9ahSA284tS3Nj5Yuspku
gP1yMo9DZA8ryiLHJaKL3P9AD5Nz8eHFn1O7l2vp7rUY4kwB+EjJhlfC12ux
5xrlcRhepCfosHIddTdOXPqc0VI.Kt6UqK21mx1UkVG9gMM6CmM285PMt6ID
FpkKzrRDfiUITDUJZIhaU5kCvdzuC+bbh5AsQhbZM.DPGiAR9geWxT2igQ7Q
OksLmtARphR.T6oRvX.X+2dzd.VvyTe5pBgn1F4li43NjZ12lkD868v.kfyd
NKJGo3rFEQQYjFEzg81LS4W0kgwmvvqTAWBy3jv03XL2qfdDPOzXSYipF6p1
LhnZyMbe5hYb+QxLtVjtWVlcWO3UAWcFZUV0nFAJwZLYLzB9Z4b5YOPQ.moi
vFDzLJTX9QMZJ3fmOgSw.jF8piS3T9AIIB5gUvXzYazTpX7zBoiiQvJWU8Hd
D6QLjuiPL2asBE6qmaUkcJ7Qw3thYgIQBWLwRuLU+eOTxgG9fA9iFpAP5TNg
OFv1mhKmfaQwGYebYrtMI95dZZr6UmQ04lChomb+AhZqWNssPFsuwEFwvrej
L8PO4DACaT.IW0pGhSmm8POvNpkdaYclLYxuE87AhwZ8NvQPBJbZw736ty91
JrcOKE+d2JL.HO9q8RPBMZBRZSq3vwP8inYtXQTtWh3eSsNEHf9OoRnSrzDQ
ai.jolLeNdrTcWwnXMeWfq46FAE3TsfJve7rVPhc4KlhRVuLrGZn.m+nWEmm
VomIKNcM7IFXKOS7q5cS3rx3uD0V5KsW6TQtIauFAC6g5LeUm3qvgw30VVQd
e1CdKWO6dOkAqy8l9sdjdfANH8dAzGMYvCMIeagK42R7RKu2ZwKHG6lvsNZY
nEiFLAyE9lRDlSDbLSQRHK3rMGIY9idNRpxOXgYBPOeqcUAxXcF4pFdqzm.Y
QGMlKnu9OiShY3Q73dPeOLRzU0C9N53FSectmaZ67Kwz+RpYXUhVRbQlYbdl
XFZ62LI2FBLrYNtmw0lid1EV6sR5MvnnacVRTn87trQNs2pVhZpAhwWzn9GT
Mps4+QwpvYQdSiJeHJJ0SvPJ3bJr1EDlCV1UUouqOq1XZHdbVhcBRppI9ORs
uQBGdizW2hXLxj.pvmK4WGlOV8KRz9fuWCDck4viY1cuR68s05roHaB7yI2n
AtfGyvs0bZIa9bQ4Fzx.WhAlikK0k7BiRICw8hqBWspwoeQiGQhweRS2rqqO
Ubp9T35SkG8k3pmmVe1vbA0WJH804ZL5q7JkJxelLgcfoqiUjh9jhd6WV8CV
yjXReSX85ySN2EbvllqDdSxl8Y8hfATcxrUQowoqxiJD5KBq0DWc44Q2EtNo
718u.h2952ITj15CmJj4Tst2jGKW9IlaYQd77rTIQrEVKOc0qSLDtdc0Pa1X
T2QZ3p87vFEb6+hEhF45hog4xtBizOp5hkYYIaeo5mKI5tRykWEmltCJVlsp
8KlGu39Nd1oYhKtrqea0UJtccp9p2JjlKusH7Kai1kgIIFw6s+4+ZXZrPhLp
LV2Ef.0WTqA79hY4YIIa0d0W4K64JyEbwyhdHdd48lQi2bEwsGuphI5p5d44
wKhJJ29bkgKJ19LORKg3TqmZjRusLZ4pDQqX6aXqRFQSQxlJB257cZC69lB8
WAadw8pZ7Qti07IZ2p1VZ0sYcaaJ6PrMyK.cmfz9hpgHLJNNPTRQK8FFftEF
.1.C53sgAUet0KoxrnceMwoyi9ZCMrNAy1Zn18LSUYSVEkmDm5ciIUMlf7tI
6t6JhjqyJn2M2kG8+6glHt9pnn4RAsN3DQszEzcePKyRis8Hvt6Q3pDnRLjs
py.QFEVymFl+Tl.jwd0I4m8nGaLAOb2fWkgd5ImfehvtJVzt4Ko8FY8OgrkZ
jExzpJ8giBzpaSsiKf8iK0EkGm1Vw5J1hK0JtwRL4pHnkgfUDj756GvJxVmO
qpO2Hu4sMsILonLNs1tz+9FTxy19q9RD9VRDOlXyxmqcm.cxIL39IL3ImvP6
mv.iBggsjv7GQ1I4Hv8oaabHBKoAbq.g4jU9ddkz8i42pc051vRgt5oqK05A
Z5LcubIP3e5zvDiA+0NL1k+Aabh3kanWWERj7LiCw1FUDBzkQEA39TZze2nh
zbvumgQEwWGFHj1BzKQE4RTQtDUDG4XfPUli7Pkct3gJjwNEdY8Cd27kvDOr
eco6pGfGXLAOjUdnRX6KsT+Nv6d9o26dseYmbu6UxwfIzAIHGb5co22Lkh3y
JW5AihK8nfuKboOvROO3inKXbKoAo1zwyOPVOPhQyOPfsQXAbwSvMdBtJqHV
R3E1mPdAtzUvQKAta5JH+Ysqfbe85+fxu3J3EWAu3J3HO0ubvQcteolJgy4x
b+1UVELOd4gjSAriaREnqGlP8zORXmSYUP2So8101AWkaAlIuVuf3NTNLzwN
nB8OdB9mv3ITsuKnGaldpbJtn1iX9D7FOhQ8GLomPOhgbccKPkznPN5jClPY
5sTAlGPXBImRvTOxhQa3oCMUw55Fwn7lcHDOb+wQzILpWRIbY7V00NAHgdx4
J2JnWG.WI9TxUp0WB0iNOVbkGXTuv7qFiFKJf7cQXu31FnEFdDi4Dy1Df.Nl
ITCz17CAOlAATNZr8XAZrnBRenhQKLfmG7EHaohyh7yQQEvKgDsZbzEISVtN
oLdURjmvN4EIpEVUQcvR04OSzW+1u00hKZekUFx4ZUF1D0z.BehuuOStizfX
AiU83Q.vxiWmG4cirC2SdTQOpsQcFB5EI2Z90cQA5A5yBfAWW8MR82XOInBw
b+l1wLv8FqdtBugOi1umfLtdkBRqYOG3xErufI9Yzxk+TikvmQLlANFKaal5
B+rfnjYjTO1F7fCu7CLBiznpwobLqFwXiSsZndz5WA8dEx6UBRKIK6yx85I4
+rGEG2cmDCdHUvUseJyfWJkC+wrTNHsndcr8rljCh0T9VzaSFJ4gizJWGB7k
h7pcoq.HbBFiIXYEuAiFQ6LmIFfI29B+HjcDMsbvZQaZtNiN3536cqJVzF22
9LC+fclo0rBPkyCMqxa6I4B50V9sCMlGoyKMTfZGQRuO6goNu.CkUXewp.Ox
abVRGW1TfgBtLpzeLGUpMlUUF1XMuJXb4UAAnMkz0KECqKaYPO1Zf7vo1O3F
67u.PCA5B1tdneBabK83lomcY3JOnGxC2lKT6CLOVUS6gL9NjSZFrNe7QeeQ
niR19gssHv.zlaKBP7nssHHrz99vz4IQdhyl6ciTX9VcXxaqhguO..3l3iOF
gxUOwrDy5wXb1iDpl7gnh6M3XhLARkjhN.YBIuaJVlkUd+sE2KTUltPdFUiT
7E0+p9QkSTjJUJZh0OYOfy2z.BFMAUpNk0P5sbgC1R7t5JZy7l8UOUcMvgGM
fiHzCTUNFateR9LL23qpy+50vmOXiL7lbiHZdrRBaGfVgwUe.ujL8WRl9KIS
+gkZZ+P+SDZvQMivM6cOlIYb2cv4wO28TSCld.evDZuQqfi5BR.q2s0f.xoY
A91etI9wslEx0KGKzIhYp3g3eyKewz9uLLbKL8DY8HV6ZhOZDqsicfRoxIJN
QNxXegI+iJLYTMoWhe93iMLEm5g5MBQOp5ipTd2H6YOxHD7Lu7gZbY8zAP3d
CPni6PZlvjbhPn+qy7pvKTusOgLokvQeDMQCrKYr1JNENNK80f.wrN45dYCd
xq2Dvyg5MwXQDryfBug+4Pg2fdFTDHsMe6IiHMf5WcM8zV+QveeTLLcajTWm
tJb1mkIS+mVubk3uXuFkDbOZsIBO8l8msyKWWGcFLMSXyz0AYi3DInBt28gq
plUFMBn2C0jc.Ukmcn2Mx0tOFAjqQY624Y99YV8Las0Xxv1j36Y94QGV54o5
5N1S+Y.euq4R2wW9PVdxbCCopjFXlEqMyv0cEggpY5R3etLn8p++ln7vhHcx
Jnyf21lXw8rMh285tQkU4m58x4M6HnjAlB4kYKVzic7nCakMzmMR0wJs6gjM
6KFG79P6pvznDq2vvHDGruLC8gSXz5srarNyk1ZZopSDxpem8liMxzkoNag7
of.tDCkIYqOS+MDiP2FMkOSuSWncSfmffwGooCGoY5xZ.NPmRGTserbxEbtA
N6fcZbN2WFT.CNiP9SPzK.8twzB4BFZU93B0QM2rww5eAlaxOybgFZILSYzM
6A7XcN1A7m.gLel+2i.t5t1NjTZ7eW+LM8BO1Qa3VA.pEuKQnsBLwUKimuJS
XuPQU82RwDi70ATSWNt19Hrob9G7nCfH8JpEpEDjGU+d1du.4QLY11H4HKZi
zFkOfC+MYwKJvAuGVfM8Zrt5zfFGUoDyj+pVX.z1M5xZZyFzlQbAJfZt6wzV
751Aq1AFX51uOVUc0Ybp7OpiFJwYAsEzbSlYmMXlA8hQV7hgsxYfQJTfPLBn
H+5Cc.n7TrFbWvYXA3y6DCPz.sAP.S0zhVenqUO4Cr.UvtPsguMRlacOtpIZ
i5pN0VACvpwXXZ0Uxn+TcnqEfn1n.SV3Opp7NG9axhWjuC52IPaaQvA9lvA1
9lFZaBaEyrKFTGaS2D1E8SXhM5GcRaBMbCHfzww.BrMbqUcJC6MAb.J.fUsa
2hBVPZjtnLjRCoN73z5u6ZkkXqPPzXLnBJvFkMaW+vdT2GgLI.pWB6LY4Qpp
hM.T8iaN0.6MQArdPqC7UYi3CzEuIq7crSWG45jpjiBl3q7BWZCtxxqMmZnT
oUNjT2AMv2kUdSC5jkznCQxBJEcAf5idrDD9HPtvdPsPb.sCxEbDH29.tUlU
1B4BGexEFzCxkAIcPsngQs91HlrS3hbERY+6F5blJeqLNlBbg5ApUlG6ibx6
xNsyAN4cYkjIk6j2kUFsQch5bpsdlOX6CHV0pvNgyfXeTJaInYDcAa2TLDMa
O46bHEiaphUc3PobqbuDS5Vkpd.UFRWXuad3fIOqrzvIgxAYkg2HW3UJxN67
1QOpqFZvtWNoyQ8CzVySzwzqpKWcnyGNAYSrGQNwPejUgUaG.b24tgnCrodY
ew0IIz1GQPACNZ3HzvC3P.R6aMcKOsoCWrEYitWnSDkfVY..ryXSS8UVAZpx
ZzfMGMXpytICrkPDOPAGnkiJgaedKz9dX1BsgTS8sZ6CIlQoPAHcLQ7GNtAr
bZMPOU3sMIoW0Pn6bX8jQn2ZJLSFwfHcH2lwQ7cgwuP6lzxNCWP07yoABldF
L29Htd49TEEA7HLgM10RfLlUMEkYHFKpTG4ZO6rkbo1Stb8TB1B4BFH4Zkey
bbW5HM3ISG9Sl+liFLWL0Zpqind42j5Hti5rxhfti4PU.mBTpKMC1nNxEDGx
Vha3uJnUCyN3WkU7Ccp7myzA7jsI7yZem1bpgRjDqz.z8Dc3OAVUrWIvZRUO
D0lyLTJEaIbN3WDpGPxvdSPKaROwT4nhU9Vn9lyLTRDLzPBH3XUC3RAa60OX
3d8aE783.inyMtcJlQx2wNEwncJfQOt3E0dgKZ2hVjpfEoyRwcxGu5h7SZzC
29snjjphH2Ux5iX1h7r0q1FF1tzE4CXbUJBxkoUnNE6o9b+pDq+kaJWRUEWn
g7yUk4iylEkVt0ihQThZ8nfIUI8HloOWymLJIZ4tOJ2jRjfILhLkKUuU4CS2
ypCPWryr7oEsn8UFK2sfW0VA6bGzwxLyz7T0IAJBGffpGSBG.j5aBXFu2GC8
TkDz8m2oONePqp7lh6e2xs41azOOYoQsIOzz0kk00+qgvBMDFgdQwl0Hy3Pw
OEWeSBYSklZCgb.BRM+IWElKd7cy94qTaoQU8zM0rtGsMUUnhyZ8MxUU1Yfh
pVqRuWzLcQyzEMSNQyzCRKp7VlklUrRVcDsUUB.5CBTTG.B4ZrB.vXJ4owJF
GCIJteVf.bUeiSfHzNKl1lUkQg8k+bVZ3rrqdrVpaiSk1VF0mp68wTxGZniM
ezln9F9dNCP4b821iFhwUxOfwnv.C4JWpKT7dGw4v45Vh.PJfh.gVywA4btV
kImCMHOU3tC7IGBRvdBBzLYHjVjhiA.IK3SypBLq1aN.ff5NDQ2gO+YLqprG
OHfQp9VP2iOwEZlAPiZSerFsD8VnfiKSq3ERvJZlwoTl9aHDDcvbthm4e+x+
CFZg6i.
-----------end_max5_patcher-----------

Overall, I’m pretty pleased with the results and definitely am a lot better at jitter and matrixes than before!

Project 1 – Visual Singing

For This project I wanted to find a way to combine FaceOSC with a Particle System. Most of my time was spent familiarizing myself with making and altering matrices in jit, as well as creating and recreating the system of particles through learning and understanding the physics principles, learning max functions and codes, as well as experimenting with changing parameters to influence my output.

What I have is a particle system that creates graphics based off of the movement and motion of your head and face.

 


----------begin_max5_patcher----------
7031.3oc6cs2aiibj+um.juCMDBR1j0Vl8K9HWtCyhI2dH.IHGxlCGNjMvfR
h1lyPQpPR4wyFju6WytorjnHYWMEonjGMIq8LjRjU+qptdzc0U8O+4+r2MYV
xKAYSP+VzeC8t28OEW4cxqUbk2s4BuaxR+WlG4mI+fSlmrbYPb9jaJuYdvK4
xa7g+x+4u+O7W+geKB889yC9y+vGPAu3ubUT.5gzjkneHe8hvDzCIonOjF3m
G9b.5OD+OVGl9Ez+UX9Sqmg9k+Rz+seZd3bw24G9RVdvRzeccdRZneTl5gjE
F8bPXp+iIkemaJ9Reevhfzv4InuOQ7W7SS9UYnuao+OEF+H5O4+Rwq9gGP+e
IqyWOK.8gm7iChP9wKDus7zfj3WGKQgwAySVGKGPdatZ75kgwQA4xwOdyUCW
HG0Iy93sXxqOgU94yeR7duOMXdtBXwVb1TaaaGlqEy10geCh3YM05FDlq9Ew
YpE5uuyqSPoadeVxq9u94+rheK90MfYTODkHdT6PYo9KCxCRuOH1eVTf7gCd
HR8ZaH5Y4VLP7rK9oZPQHMOlHatrPXXou7YXu4RpOV9WVEndzSlbCZxL+3Gm
f96mIPAqMnv0ycJyxxhvXXlkMgWveYeUfK3VwEW2oNdddtNNdDO0z.LmNkJ9
Cixs3tbOZwEeqCSjVmI453MkHDevDhkiEEKkeb4eMH+PraEXrUCeLtPWpsC1
gSjBRtmkHSbvmEioWGPO6mFKfFEnIrNdeX7CIGZBcE5vatGtYUm0GL.biSJ9
osiNfpcT4f+a6iQ9pCRKwjMfh.vCiBdNHMKTXlcGF+6l3uZ0NW+c69kJvxOl
HeVt2r8ZgwpqYs8ZoAOGdviV7rSEvPt.CVmpv7WreUocwSpvMg30gxuU4UK3
taHMIarfeksRvNjOfB18q2eK5RvdRKe2pL8go1RU8t1zcfXgvxiQIy+Tvh8n
9IIqBhCiWkFjI7mR3PjZXr89KBdvecT98OjDmmE9SRBAWvGq6C7PIkV+ceU3
66JblZ6H4wzvEIwEDx9Lmhqu4UJ7fgq7VYuwj7iD6uptutPrT.QMc2Lwfcc1
L+zBdWoZBxq2MOIIZ+6s8aFE7Pd48WEFGWEPySV0xcSCe7o191yRD2cYqOd4
sxtecr512KjSxuOy+4JHeteTToBfJugW7iCE5eBxCU7Cgp9WuqRm4SYySShh
1ebqt0y0cqEhY.yC9b3h7mjur8DODegvUaDrlrksuH7wfr7JWL2+wrJWJK+K
JVvtWa8rx452KbPeUjXzT4SrWPE6MudW0l6eiJpOUZe1NksI6GU0Exb266Tm
qppYnLWZwunVa94VI6Z7Ae2asI9m8FyRxHdQfbvY+5EKsbrQ+Rmgi8syp0Vq
A3kMT7hRavGjVr11fEWXVc6S7aeqw6ayMatuHbyawSQh++sXKwusl1rjmcSH
ICJRZgkZSwXHPItcLa.vpASVywSGBwk1YbrrujE0VublvMnA.9zNUEy8lZKB
wxy1i4RXDbguw1JGT5.Zd1Cas3XCXT01RGpRsbNHvUa2tKhVuubmb.e1Zg2N
wCfbpMWKhRISIUPTWpJzDqM+r6JEu7PLsyrIdNWhHValc+cnJVYMY1LoIjzo
KHoiiztCwaJ2PCxFMaNrvowSruMAQHKDty3LsIb1sSRrVRYUWOHZMocFmkRy
2r82CAn203SnZANa43ai+1CR7IjSpL3J+OIlpiZym5llNScfhVJepU9Od94R
cmkVzFSgsxH.V4OxfHsPuTjVrIZQKGuK.okJav593Swx7gdA8KQeA4mgVE9R
PTlbqLK9WoIqRRkK2yte281TSh4dmf0Bqpc+i4XuylZRoZjBGAbKIM70UZ0X
bfqM7UOtT7hS2cyc04Yl0kS.7bNvIXT09LbgFA+vgeTc3miqagOnWwu5wOLv
kX6J9U+RTpUCFlJk+3t3KX7qy6cfVuMEQxHyWALwy0k3J2b9gzQc94imnf8s
Z.gC14CbnchDgMEWcoXcT4wwffM3QXOSD9oy3Rm0Q3tuVNMsgJTanVKwJ+Ns
nF6OuYqF6nrwTBv01Z3.Yvtz8lFju0ZJGU7epsArC3HsK1N1.pmqaEHHoyhc
LUfeVLw+fz6Bnb8trPTAc4oRkV7km7YqAtNyOKXAJIFk+TvqIT8ruf9Ppe3i
nu2+o3fzha+Td9pe6c2Me45fkYSEOx6HVX7c92sNNL+VaqaWs3NfKKPeruZL
sSHDyANXEhYJsKLLnUPnMl3okIUPVOgdJnHCiPyEjRZRTFJIadXjedRJZUnX
3eCRvxxBPEIwDJ3KAyRS9rLc3eNIZ8RASMIIK+TxhH525SkybdkodI4BisHl
APP+d+Xz+aXz7jWPK7iSDgmD9I+hIH+XbA3WLs5O7ce32ijOSjet7Je3O8+f
9g4OkjDgRd.8comT9BF9TGO0ebK13Ja41Ww4SoEWhVdKOx4FKqKw21G3JAZ3
uLta+F96Yyl9OVPOUaVV33nxJO1aTjuMWo9y+vGtMUPMAn6j4wI5NkkjI8Na
.CjMfkS.vLxvtSs6jF4uczxnOMsb3aVafx+XKTQyYW04zuLBGCVjlcXDtzut
UAIcO8tzAQADwsa7jx3jgEb2U8Q6A4ZiflHz1aaI9i7GE+wUf0djq5i5WFg1
j4fXyKyzzcbqGae0vPOyHzGek.mOHHJx0nB5aFAQuqR3ZXDtNWsPOXVnocim
PHWsP2UH2pK6c.109p5ndkOf0u++VrC3CDxU9POyGzFjPQQR3.9.29qPqBqi
W4O+SnGJ9e8ts.rWWXDXlLKGrG3r7WHcJXZ2bve4szDAsKkjKVVYgrccrvB6
xphpBieUgT+xGzFBsimLHMx0EwqugdFv7S4sKzWyIi0ONNYaACYxKivwlEXZ
YfsXW5GTVXle6ciuZE7cJKdbp3.roCKBO7VYAF76pjrvBIezcpLP5tlNTG8R
nYPYBJwbBFDWfc7g+dyoOgu1gGnR2k61jCKE+EzcezW72hSxxSCix5eeQ0ZG
vcpqbUIb8rYtLYojCSKMKC5jdY2Ork2fqPg13.X3COQ+kYj2WYAjoTJYOE4M
UcNFs68ThDa0I1gR2jm2kW9QNVh8tcIEF+ZVruLafKN4ixC6euK56zINhRxG
S3usRc88cJR7yhZ515Twe4gj0wK5cSvb8yGHacEEqRkq2l9BsdwJwnNnnDV6
RqTSG5En1FFTqxH2wSm9NkCxhbhsoh9mj9K9.Mf6YIqSmu4ssoTggpLZVHjt
CieMp2+1qmDqhOHbtu4zh8YDs.kTbGbRw1EJsXaeZHFLHhgO7DCXtj8IfMAV
5cybtgjX3fIlSfLCA77ZxvSLVfkYbTh5CHwTXnGQ.QLCNvvAqlgbZnEPZYvC
Os.ddMe3UxvAOu19DvknFQLC7TILThon9wNzHCXZY3MEv7L0tzdtnltPUp4I
mGjncKjH9rfDqyojWIQqgjDAqnhM7Jp1LIC.wL7l1XfslvOIzBHbAO7ponf8
elN7RLT31YG9v+nf0fyGdQFJX6r0YD7jn6ANIxbFIM3TvNHPsFdVJFpJIxv6
g.At42QR7BNExGIoKB7nmbFdFJ3vmHCuwWBXiL3gedGArdJB4zPLvXSCeXtD
vqKBc3M+BdAiXikBIvfEarTHAckkvdmD1IL+uGd0QxgKHfgXcZHFX5FcOMDC
L1zvaBCC1Abpygj8IYFlAjn8HolByLBEGC8TFPh7wBEAaZb3UkBOHF7IgVf4
9h6IgVnfnE9IgVXfnE1IgVfYsqcu51bisMuyIEciwE2qZ.k26mmmFNactJyD
1krLs4H9XTxL+nxFe3qo2QcMOwWon9p2wtMIqPBRNHH99EgKyl.uu51Z+g0Q
ksNVbUeKUW+g0p2GUq7+T8iERc85VG8iEa2F5lOMjPLMmvK84vDaYYYv3r0d
LtperRUUIQtNVVyiyc5HQ84P00nQJs0Qpp0RnFpGCKcfFponkA4olzrlsZa3
xcTIMmpFDw75NqcHFrQI9KTMUInpd1dTdm7T3hE62HfaQx1VkHgVce7er8u6
kAYY9OFbHHTXRA8KvvEvIswvssKmDSUEdvyKF9GCymVdDmvn2+w0KWgHFX2o
UQ8xZ5jicYhLx.2B2OXnKHy6W5Krz+xt4BZeCDp2.ZYQUBkgjGCJJQ3cG0fo
CdsgHLUanqTV.ycN2QjGilJll7TQeG5iLz68Wmmb+7jnjzLgKauW92tunUqi
d8La89Eo9edy0DpjyPuW966KxEUAV99nhhZRArnRq+BwtrkII4Oce1S9KD2.
0vLOu5D.cZW.zaJ111lay7XXlkMQ1h5vGbfpcv1mCbhF0H8XfJUdAqQxAfuE
d7yQKPqPOjLec18RgF3CX2V0DUVgsXdNRVeE4gty5KY368lUKKvdAh7PXTvy
AoYkAhrsyt6uZ0NWe+fpDv0GSjOK2a1dsvX001lN2SRCdN7fGs3YmJPgbADr
NUEIyK16bfSmTLCMMdc3tKyx1Xrd2DImpHJnLgwA0Cnfi9582sZAo5Pc2xkF
57XpV.YQClYmjGelH7p4eJXwdD+jjUAwgwqRCxd8.dt28WD7f+5n76aJY126
C7PIgV+caHg8m7XZ3hj3BBYedSw027J2Lmo3m6LljejX+U080Ugm1zcyDC10
Yy7SKXckGtIx1HMSRh1+da+lEUFpx6uJLNtJflmrpk6JKnTsb+YIh6tr0Gu7
VY2K7YPd66EhIBc6hHxq7A8ihJmhW4M7hebnPcYPdnhePr1dWkIgmDw.mDEs
+3Vcqmq6VKDS.lGHqqtxW1dhGFsD.aCweGN0WhptR.YqmUNU+97fkqhDilJe
BwvrwiJQ2ObJ8T0fjqBhl4Tdvlst7ZME+Fy6cj5KNiLERvJCJw7dE7Iqe.OT
Mfd8kFNlpFLso+Z9Frky2SEXR59MhzycfR+A+rnQPI9oskUGNOyt5m6U1ChH
csGDctztbJPHwOc6DNo+zupTZe1iSC0DO8EpoRIIBw6qZMTXspxojRgGxktF
pxEvRLsqCUcD8ZxUk+QrpwIX6b73jLx1Ay6.4XtYfvpy0bBBqRyMTeKNTqlm
Qus1OTy+z2IZ7bm5H8vz5qZEU5qyXLqoWN3TqcqpjnE2NOIIcQl4Jpz5ZPwp
cJ83bTaM4som9tVa7hjtVlzvkakFtuBaavJ.ZCWynU0QSbceiz8YWkFrJHdA
5yh2exm+KEqL3.TZ2JQMUIDCSru7h4XCNInvrfAnjqg4ropRdDSs1tWfPj+m
TkoKy073vghOLGUoo14BbozJ5Htc.aXPcvgwXaZpjmsJl6eqVN50Yq54lLUd
YcVa2Z.fGB3oVW33ysc.bv.kcnp807bdop6YjwBpXykMzbGhzgIU15C5TsEG
T9ktNmNAOZWEZdI5funQmiY4vrczW4QkvhJ+Eg0BHFyUCqMfRUZE2MyZLPXx
FHPoRvlNT7taJaSFCYorNJMo2AZU6jpbwUcLuihTKJcVt.qNPU+LdquJ9rYE
Ob7.GZpGevVzCxotnXZbEW7jer4LfDGqiMmC3yG4veT0b.eJCkT8vVpxb.WD
BbF9CHlCwHjYfIFvGuQmSPIfE7w9z4DT1J8LBYviv7cCHQ7HcjsgWJccHiEJ
BmDsFKTzAbM.1ajLOZdkA9LlDYiTYYDNel0hj34AEJqeFrwX9L7xejyXQh1l
VaKG5JWM47nXKXyAqn67otQRNepNSCuOZXWi74XTJvIvqLbzwp.m3XjOGiBJ
BlDIiUMvDd8.5TTLmnFY1YfIF7YTA3ECNFS7IP+E3XLw3ymZKjlFXwWW0JFi
KLEjVqCGLFWteE7yxiEbVaC1ZKMAsWTFTIpipNxTtcemzRhSFp3LulaPgEvt
swimZ6kTMlNly.Nd1KMfaMEf0Ol11twZoXI3JGMXL93Nl1CV0BYQ3Rzu.aT8
BgaCXbiUILUMab3nWvPBdYUJ58xe9iSBi+aV+8eCYZQZj8iSfCBrVY9DUBtf
IkYyL9bn9LHLcjusEDejB+LG.ieth6y17ySeUxoM4f3jvrftVoTXb.ieUNcW
tIwW.kNlnj460lpA.CsVFvHVDYELYuhURY8zwx5BCT5rjRq9sPI7cRHErs2Y
eM0IHFsd0hhhF.XkkTNfBsjM2YJU7GLwy0k3hkU2DslOn.giC.muRp5Ikrr5
p7IDlx5rRKkqxmYGhy0Bex0Bex0BexvbXNDtbgJj2uetXhSPZ64klUWO2KTU
jg3R2O7tDO1KEHkrTFJjKHc.i.bny3SKrwvUsn3KvR1f+rNbPLwZO5BTFYmh
z.8Rr95fHCyYouDYJ+E4xCYdNXtXBEQ7e1HLB2LHw594rmHOvyuViObtTQI2
BsycAiz2F5UqRIUsfWNWf5mWF9Ry3BsqmUdpZ8RnkUW3KPMOEQGIbX9aeNHx
b7gqUADgJMYUdlDc5GEPG7N2FMTEbn4nhZJxnpOfZiPponjZIRI.QK0XDSUh
ZBZjSUhdh6oTuI4D1JYUla0D3tg.nfDDEn.ozGLEz.pZKnJfAVoK3J8AXoOH
KcAZAHXK8AbAInKPAdYTvWsE.l9fvzDHllfwzDPV6Ak0XfYMDbVSAnAKHs5C
T6.EMUUme3GPqZ8J640mC+IzWN39M5Z4AKBl8Ae25zvKBZqXYRwpijOq9vRz
nlWusvJ1CqXS7DAlubDfoCDvDq7y5qAr7XDL4fvRK6qBl..SFDvTcT4diCkx
nnT+u1wSVa3IEDdpjMIXkewzZO5yW7.ZQvEyRVGOOnc7j1BdR.Ie5phynbS5
b5WAzZe+6GyQMPU6wdzV7G08vZLNj1hEQS7H.iIo03RpI1DShO4fc3o7vkpN
D2kEHZtUMLxVBTAZvJfCXAVPKlD3htfWLH.FHAw.KPFXAy.IfFfA0.KvFnA2
.N.GiCxQWfNvB1AP.O.B5APfO5C9o0.fZIHn1BDBdvPMGPTsZ9pyrT8ePPlm
12DUXLhV6mnwMsoVi909HpKYyJa+I3V1oBflpfY9uFW.pwMf9E2mKrUrayKY
Oah6pW7Otdd3BezGRhyRhBzyFnM8DaTeb0ErDJeREGlJsUKW7Rhq2QvnzYdA
nuGkERgEAkB3uj+G2jsO+6nvXL5aE+j7u8io+X7yAByig4eQdC0kBe3a18qL
8Ez+g3dze8+r3l+X9NeCgqvei+rruYykl9xuFIqbcBf30q8kes7o9up+Q+6P
217yt6O3uHnYwmtgm61G6MnuYmmW46n0m6uS8QN1GrfKhkeI0mQdiIi9bRf5
BwGutPrYywdaqJDHrSNdXm.E1IBsZ7q3trV4.QdGqA3YlIuSUItA0wDf2BHf
VSjAGTvbZArq6jD0FjevIK5vSFGri7d+IubzCApoCgxyw7YzPfzkg.9rZHf6
xP.tfTMySBVDJaSlydT1lMUOZqod2ryOjsXu8+hUe9i4xs8ssuJajVVkMrGn
UsrbqdToSTCErwK9UsrN2fZ2Vb8Gvf1PRaYwJjYowF7kNNRNBbzEzl7fsTIX
xacjjdDHIn41XF+q.jrVe9fuYYbKS1bGOaMd50pWdGBSURbkZ8rqB70jg3pf
3gkgDuZs.2TsXfUiSPFwm6Ng5ZLghGGBkYLgVymtlJbw45P.6oYHfGgg.0wj
gPwl4NRx0TaiIT53PnbiIzwYBHkYLgZMNDJ0DBkaMZDJwLD04LTefgCA6yPs
xDy0JiaYHPFgg.1HuMZRiynxELbHvNx4BU7ErCqdwtOyS0IMXQXp4mx.l1SF
micQzzptkEy45YLXzNiAXOaUWcix28TF33b8TFb8TFb8TF7V7TFbbqMEFzRS
oJ3CusWYpeS2W7dpG7T3lTd7Veit18BykK8ipzggLaM9ntFjP77151PW7n4s
GwFJgM.EKKsRW2Oo5xqCCDGuteRsfifTR5xe6iiG4dfvLXlMg4d4tEHTihnm
gGu0Kzns.g5MdqWnQH5lpI8XPntFSniChhwFw5cGOB0XQT8b9Ky0.aYwGz3Z
8CwVeMZQUMhKquCWWErqUZiqqA100.65ZfcBV6FD15Hbn1xfPkU0a2FpjaW7
gl7sBIqiIzDSpkAzxzw+sbYg3HJxFLpwKfCy6M6BObLKfC45B3zKK7.w.IRR
Yu89xL2KMJgNXiW9+vLJQkXrwiPsLJ2KGuT+hPLBQgQnWdwIqplxh4mYAcqh
SSzVYJwV3cJ4zVrKuR2ozD+O8YyWKAp1JprcYUJPtuVbxEJ1ru6O.wF8kzTu
sfB6BrR3dWyfBoIPQaMTFyjGnIraamLryZXo5tKATOiCvkkCiuTqM4JcweNL
dQxm+KEVf5.Jw0gRdp8cqrDbq5uJWVvz7nvUnaE7Wdwpiv6P0bWaU3lyj0ob
U1F3dAVlx+VyU8fsAhJkxLWfZdJBKhzA4ENvpSNW4oCEj.i0oVoKtCpSf49x
kqJ2CBTFlDACX0XmawOdAhcZOQGDL7wzbZA2EssqrGgCPagGbO6c36lwbvMs
W1v2h5A2yooVCNwPA2k5w1COw.lKwGq1TObRjQOradeRZv5TKiXoCqR.B7FR
+vKeQrMZl2.iLbiD1ICKwXlX8.yl.ykHsnEv5rfBGK8TXWijtFVQcLbWAbGK
7BNIVCyeY3hUIgw4ktwoRenx18T4QFX++EwScQtbcej+qQPLFSMZV+vpBBC2
SD7fqBBiMwO5AFXrLgVZFW1IjCC2CiMOm9t2BqVULzpzjOxPuW1skETkXH79
hzgB4ZYUTDyQuObQTfZ2L1115KPv4Iqiy2qq.qs6L2ZurWk5ULhiJWQb2rF0
l2alk8w7ApqLmilgBR8EnwLTQJtkCu2Ty0O5KOsXdN55DyLsCdIQV7W1bAE0
N.Px+XYPdZxNcAR88nZF.nf6pZT05fhgqe1mm73iaKsypESNHOH8dUBms6x7
nm6SALjIpcx60eZ9PNLNev5E4QSSChEFF2nxPJgcuTGVQCbDu2OrbPuet.tR
8kMkDxTN7IJt5gJJsbcAc6dKbuY0Dpm09qMTI.V0.xFX7PuT22vQSwc4riUi
Z4XfegT9dg711Kj1KuPWPiPJu2FgtVPFg83KzAx.zt2dc1PFdtV816i6BY7w
6uAH2FxKjser4UqtKmDRf1.IfOYjPkZxR0XRNRR.BE31e7cPB185qinUQHoW
eeTs7y9aZDysKxvUBSl3o1tQGUxFpxnX4+penQGSlp2GuPPxzUgtdchMLRn5
D654KXU2Uin5Zc6+unXUvQtk6dr6zgROQUYnA2hKCjEo90mI8BMrATnAFIT0
axdkKChIy5MPm.x9W+odlPMQcYe7BOwSZppQokWHtedgfL.UwBvSgKVTdt35
CR.j8EBt+.YPplv8W7bXJ3WXOwUwfi+nGegbsxsd8GjV7BYZegr98Ep00PJt
eeg588smgT8yC6OmewVl3jU8KrSkSzs7cU8DbW8jaWyI1tkSp8AmP6xSlccm
H6h0j6m+yDef+e7OjuaL
-----------end_max5_patcher-----------