Author Archives: tsaha@andrew.cmu.edu

About tsaha@andrew.cmu.edu

CMU '22

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>

 

Arduino meets Max

In this project, I decided to explore how Arduino can communicate with Max and help create interesting integrated systems. The class discussions and patches sparked the idea of using frequency domain processing to control a system linked to Arduino. With a little experience in Arduino and looking up on tutorials and help from professor Jesse Stiles, TA Jeena Yin, Youtube, help forums, I could get together a system where 8 LEDs react to the sounds being passed into Max. The core ideas used were-

  1. Using jit.scanwrap to get the a 1 by 8 matrix of values relating to the amplitudes in the various frequency bins. These 8 values would compared to a threshold value to determine which LEDs to light up.
  2. The conditions would output a 0(LED off) or a 1(LED on) for all the 8 values in the matrix. These 8 values would each tell determine the state of their corresponding LED. In order to do so, these values needed to be passed into Arduino board through the serial port connected to it.
  3. Due to restrictions on passing a value greater than 255 or passing separate values under the time constraint, passing something like 11000001 was not possible. Finding out about these restrictions led me to think of a way to pass an 8 digit number into the Arduino. Then I thought that a binary number can represent a decimal number which could be passed into Arduino. An 8 digit binary number cannot go over the value 256 which was perfect.
  4. In the patch, the encapsulated code takes in the 8 digit binary number and converts it to a decimal number which is then sent to the Arduino board
  5. For the Arduino board, the code I wrote takes input from Serial Port and converts it back into an array of binary numbers. The code for this was more than the knowledge of Arduino I had, so I took it from an Arduino forum from the post by ‘guix ‘ who is an Edison member of the Arduino community- https://forum.arduino.cc/index.php?topic=333006.0
  6. The array used the resulting 8 digits of 0s and 1s to determine which LEDs would be on.

The following code is the Max patch-

<pre><code>
———-begin_max5_patcher———-
3851.3oc2cs0iihiF84Zj1+Cnn4oYSG461rOrpm22UZee0pRjDRJ2MAXARUU
Oi1929Zig.jJWLI3PRot5Dh41wGe722mswl+7u7KOMYdx6g4S79ad+aumd5O
Uo7TYZ5TdpNgmlrI38EQA4kG3jznfeDIyK94joU6NYaQTXQwORCMWoI4x0wA
QSld3sz+eobQgLINH6GS79O0WmzfhEuHiW+bV3hBykBBvnYfopuEkeQA5uvp
OaNs7heDUdmmrCQwa2HiUXpDwvVoZfZYxz5jkKKO4j4e6KX+cWhkAEAUzPMO
7zjEQxzczU68n12JYTXbvFCRVlscy+HIIcVfbU8kr9f9tL1bGC1tTlnSo8Qj
GFEVxMlaSY9E1J6pOlH0UVuaPqzVjDWDFW7bdQPQXMv6fPUAUlbsTUJn.55h
W1ju6Vz9pqJtSVVWRNOHWtXR2cqE.Um4d6PpJ+xeQtptva+K7+caPjr3Gm5Z
quDKRxx5vAcOlxyqXarRoX1Ogr2QzMe1hHmTHW787IG9nKB2jlTgbzGHkUIY
aBhOVNaURTTxaqiRl245r2QkGsMqPtI7H7tdW4EYgJJ3vmdZX3xiBfR3c.pa
2A8+9K+R81pMq2QcpUeq9Zp0lBhCeSUqYWUlhv2KLlHNtoAolBOUMdtOaF.B
ED3TONlLiwXbhXpGhKlIvXBio1F0m5+hCW+Gdf5+P.XRGrEl8Aa.5JruFlkW
ww0WlmlDjl1J8tU9T712RJuV7oMoIiMogaRKK7UY8kf1jbPlhmJTjz1LSV8c
FYRqqjpFaV7VYIfpRUWRVCsF5srZP4GLR4WDQGc3j4JQ7huazY6ruLIIMTUe
KMKLWYiInVe0r+kgqB1FU77JkUnb4eThQn1x8gNfUAKBO9ouyF5umI0NLpOl
0YxkIwZfzk10oWeKUULnF+DcxSkGRbP5gNcUwthbN1d0VS2lOOHSWpL2HyP6
1aQRRT280blQgqJp1epLNdeBsHI8D6UYQ5kSc1yST6cyIu7k6J+4swlc+rpR
qx4Pvq6w7EJqjUUi26N7dPrbixWRsAKDnYuJGcpL7K4KxT185luM650CsqkJ
s8hv2jKM1jAcjGpSPlVKrlzTruTtVYTbuDKBVmuWRezJfJssyqpE+r1nbTkm
wIa9gxKUwj1Y1vi4VuwD39dSOgovtlCK7l2YGevn37.sqrtNB+nkQJhMiSUQ
+P4ZMNhT9IZeOAGfHNZHQmvr39lFEhIGwSxTmPZ+0SSYc7ibTFCBLLFpzTGx
eF8RYLzEvX92VFanjYbvXJyXOfxLJYLkY7GRYFSEdvHJyHOfxLe1XJynOlxL
heYOFLNpLzimJigwkD13HxvOlhLAa1nYJi6+.JxTwXLdVx.OjhLNRLhhL9im
HiqhvXzDYbwioHSYIazbWxe.i8myAim6R9MNlreyChDCX6xQ7RYF1+xkYWBq
Qt0rV69p8pakYMogtsjF9VSZXz.1loQhzP275mrAoI.vwjzf2ZRSLbQzVQY2
Z+.faMkQFt3yFGJi4eqorgvbFmBK4pwgxD2bqYCAkYhncjnrabDsYdEujEl+
RRzxSScmm2fPNZFFiI9L8ieSYKAX7K2S.n+rG8FGdqbk2uJg+8eUhTzXXrGz
KLJOzCb8ToR1IpoRJP+LMPYJcHDCuotVoOvxQ.pj2D7QSMh+bnF84hYvJhbL
0hjGVsnfg0VFwbxnoEgeNzhBUkZQMSNlhQzCqXjC8aIFAifXjv+bHFYbViXj
vFOwH3gULpe1Q…DgFKKiDzmCwHEwmQqYxQzxHA+vJFIPybFXTzgXwmCcHl
S0sXdLkfX+GVIHhZXuwQBR9bHAQPb8b+Yzjf7GVInOxn.MQIBw2dOx9eR7HC
FaUHzApvR.cZpYUTRPgs7CY2DzauoomKkX9cKbWjrYSXbwGuOx3kgu2dNxbO
xiUl6FGhD0ShDcGSjUgtLNDItmDI9dtlcq1hLNrIomrI4NlMa2MCiCaR6IaR
uiYy18f33vlrdxlr6X1r0XCLNjIumjI+NlL6LreiCcJ5IcJFb5zfxIV9.ARH
3YLfR.5ecb0Id3SAGiq7GnXHaMuiijwGcdkVxB5C3HrXdx1rE0Jt5By8WQ.V
FlWHiCZlu+0Cy6zSLy+mNDfgaMXHtGLLqACx8fgZMX.tGLDaACA6dvfsEL5k
gEWCFj0fg6dv.rELP2CFgusfw28ESBqM5ItAfg2Kv.2eYlYoY0DAde.wCvr6
fHvkPzZq0hafXm1KvLJEo1CQ1XUjZsal5LiKACtWfYTJRsGhjwpH0Z+iB2G4
f.zKvLJEo1CQzHUjxs1wtv8QlxE8BLiQQp8P7PL6soH0Z280YFWBFqcrycuW
.NsWLynnurGh7wReQtiB+liuiBbjitiB4gCuibVyA2QtYX92QFHYh6HCjL6s
VOVMqf0OGJigMbp0Pj49NkkR6UODCcKXr10Ay807n3d0c0NlYr10Ay8NUovd
024NlYr10A28tNH98pSYcKyP38ZTEbLXrt1TcfItDLndMDGtkYv1Gtg6GIJr
nWi2hiYF6aop6CQES50f+3VlAZOyb5gRs0J59tkF8fWCW9rYIt94fhhL47sE
lgjtMt56xurYctuZoUd2508oWKlaVxlu90c9Mg44AqCOvBOeldMA3nK97mdk
mW3SmwETNfM0iyI6lUc3OtJXc10bdj8q47rpmp2gbA3OOTu1o6szym0ZEs+f
KfBSOKsfg5GiRAFriQ398mQNxagCzAXDA7xYjUQIpavIj.S2eoP6fScHVyjp
THJ2DqTElGw4KLemFjopoTDl8rYIRu8Cih402P4MmYOOQDNP47wYdv4HnpGC
d1vIJ.GJydEhhiZu.NaWZZS1KR1ZdjePWnIDHB.2wKrJaH54bgYpngYNxFBF
8HPNPU9eLHGvi.4.33wfbPzG.xw2u7AorZ1Kc63lGgZU9HXqY10siadDLGKH
hQgadDL3vE3wfaf9OBbCDomjeLD61xMNHdtswoAK9tGX1A+63wIadF2mdcab
llagmAg9.nuhjQzFRlxFr.IEGfko22M2pSTRTZiwcG2nKnab14c7+tz1oyDM
0Ho9s19.Sr4As5Ia3UNeSVLKOUFEc5VrdlP.vnFRnkhgfcqhA5H9XQP7aYAo
deUyBdklRvHuutTtQElrGz6qAKCRK7.deMMJnxbuG93Ln5h9rp00Yx2sn2ND
rFtDfJC6jn6DHpiIS7vSlKCV7yS0Hd+pozd0RX9vU64PseW3HwRjbYn2WK+5
4soZ0gY6kIuE6QGFQAkzHJHbd41ZQAB3VQAwMb15nY5euMSQb5du0S8qSSTq
idt5LNOYg4M0ZXfl.vgWh.qOj0UXdVyJouIiUhlqwPLk1JlZXiQYgYYYqyas
3KNa5f3WxZd4QzamwsxlTXS0jKoSyA16Kl3npFwIx7POh2hWBxzuTG7PDv.Y
Cg42xIMqU0BpaqV.FGuz.m5ltiEYBXmEYpOxorI1Aw.9a+zCdplMT8lS+Lce
HorS3g9rKsu36SOpdE1fzu7jiJGGjlXS1Dj88vrpYJ6WXJn+E8q74unGykuf
TEqpVmn9P8KcdqIK0+2tz5dKq7kdr4Mfb8q2fKPqTg4s4lW8t83kLM1Ag5kt
ZUwO89WYIeCp1RuZISlbR4BjWtPniMsV.IzKQTTmN.NX3ckiq1VPvB3NKHN1
wEx2EiY27SUXW8xbBJDWZX98nTF4n37MNFphWMXSZ9g76fnLcC.br6lpkRMi
6F21oLH9XOR3X.topgeqb980PgibTey7ade80fnlWDEWmLBUIczlaITzNxDB
XCl+5CxNNJZ4xtVVU26aa2j5g87GdVhh.MQJeIw10GVB6FVppK3awSdeMY0p
7PcrwVaf5RYPbqniwngK5X7g5DKWLXxEayh8.yfT0GTOvk5uuZYRGiz1tX65
gBH1sgJCcTUufX4lYKyjuFdMcXQaRgvapogbbmcBbVGaojQu3EEtTEEPhp0.
OmK+iPOp9WQ+34MIKCUAH3.q4sGkPDUze1y2d1y+55mqUo4q2JaZ6khSJWx7
tBYT6guS8USkKdoeMB8hzQqRhKVErX+nChKzkokjiNFjVou6IQ820CG2D6YT
lyjiKTPJKnVPlK0OgsJq9fy0yz8oCWg9kwhY3Zn.51N.wYT05L4x7WBTwzWx
VlMySeIT2M0l5jJrktsPGh+hjnjLcU4x+0zoSCeMaDiry+IwwcgMxMj6aIYQ
KMrpIdaMkU1vIU19TVC20DAa0fUOJnU8Bk6hyvAgYbwAVvMsMD5C0czuu98e
AfAurVH0i.K7+.IXtMcWz4pHk8mTB0Ty4l.KGah61Y1Vt+Ls7fEKN.AfCf.z
MCAX5Qf.X.f.iaEIzd1Ucc2Pclge1rL5Hk6fABAryh.fiQ.8bH.QcLBHmEAt
tT.eVD.cLBPmEA.GZAZuR3iLmO8cLBNasenXzQ..3Paf1UL..isVz.AzXVgz
.ArC0BD6f.wgPfZGDnNDBL6f.ygPfaGD3NBBDgMFFHCWfIDlM2Pei7eHteDq
xffgKCBr5FxNhkV3sCBtLfWqXcT60liqLFeqjUjAqTFakCU7vUuAYUiXP7g6
FZUSVvtTGaGDfXGpiQrarPFYWMG7vUNis0f7.c+r41wbYQpUhJpC00Pp0hpg
gygVE6MBOXpXHwt1aLb4PqTwvgydLDZyMj5vt0xND.YNr8TVBAjKqKArJXGe
nCabskXP.cnUMH31ZFGZkEEwAueUcrcPZ5qgY4Umh4VMYSv2RJIE9Tyukwle
aF2fIYguJqOEpIofrEuHKBWTN5Z5tS+cV0CKY4fglEuUVWRWsT5X52986T8c
C23a5Km2lj3j7T83UZxjp73pfsQE6wLyWWN1UlqEXlOmS0y.xxwMQ8SeJlgK
+YCYoGihxS5YYrlABqO4xSo9iNmRXTn90WSmaEWfgDj9n49BFtbKAAhP78N4
1ikppj4elDGrHo0ffLe8JYTztqcmURn5gMYx5rfkxvlUiG8qTmVfAom3m5Gn
2YXfu.PLaoRB1ELUmFrZXlpxnMer+AhpuABFhSnk4QNfJDlsDD7GtAAwqMCJ
Ch2LfxJocVRZRVsBUgN+lyXaQxt7WyhfYqEdoN4U.jA78KKlfPAEVtE.iojJ
nTq2mVWoJScg+vXEMYiRMI2c+pVwmTe8+AvAChMF
———–end_max5_patcher———–
</code></pre>

The following code is the Arduino code-

int led1=1;
int led2=1;
int led3=1;
int led4=1;
int led5=1;
int led6=1;
int led7=1;
int led8=1;
//2 is on state, 1 is off state
void setup() {
// put your setup code here, to run once:
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);

Serial.begin(9600);

}

void loop() {
// put your main code here, to run repeatedly:
if (Serial.available()){
int x=Serial.read();
uint8_t bitsCount = sizeof( x ) * 8;
char val[ bitsCount + 1 ];

uint8_t i = -8;
while ( bitsCount– )
val[ i++ ] = bitRead( x, bitsCount ) + ‘0’;
val[ i ] = ‘\0′;

if (val[0]==’1′){
led1=2;
}else {
led1=1;
}
if (val[1]==’1′){
led2=2;

}else {
led2=1;
}
if (val[2]==’1′){
led3=2;
}else {
led3=1;
}
if (val[3]==’1′){
led4=2;
}else {
led4=1;
}
if (val[4]==’1′){
led5=2;
}else {
led5=1;
}
if (val[5]==’1′){
led6=2;
}else {
led6=1;
}
if (val[6]==’1′){
led7=2;
}else {
led7=1;
}
if (val[7]==’1’){
led8=2;
}else {
led8=1;
}

}
//Serial.println(led2);
if (led1==2){
digitalWrite(2,HIGH);
}else{
digitalWrite(2,LOW);
}
if (led2==2){
digitalWrite(3,HIGH);
}else{
digitalWrite(3,LOW);
}
if (led3==2){
digitalWrite(4,HIGH);
}else{
digitalWrite(4,LOW);
}
if (led4==2){
digitalWrite(5,HIGH);
}else{
digitalWrite(5,LOW);
}
if (led5==2){
digitalWrite(6,HIGH);
}else{
digitalWrite(6,LOW);
}
if (led6==2){
digitalWrite(7,HIGH);
}else{
digitalWrite(7,LOW);
}
if (led7==2){
digitalWrite(8,HIGH);
}else{
digitalWrite(8,LOW);
}
if (led8==2){
digitalWrite(9,HIGH);
}else{
digitalWrite(9,LOW);
}
}

 

To show the LEDs in action, here is some videos of the LEDs reacting to the songs played as well as the code and patch used-

Hope you enjoyed!

Audio Visualization Experimentation- Assignment 4

The patch used for this audio visualization system is similar to the one made in class. As documented in the following Youtube video, you can see me experimenting with how different shapes react to a song. Later in the video, I decide to modify the helper patch into using the phases in the fft to modify the shapes. As you can see, it creates interesting patterns. The pattern seemed to be resembling consistent randomness. So I decided to compare it with the patterns that the shape creates with noise amplitudes. Turns out, it gives a similar effect but is more widely spaced(probably something to do with the magnitude of the values). Here is documentation followed by the main patch and helper patch.

The main patch-

<pre><code>
———-begin_max5_patcher———-
1907.3oc6as0iiSCE94AI9ODkm.zrUw14JOUDHdAPhG.wCLnQtItc7tNwAam
4BH1e63KMYZ6j1ISwspBsZ2IWbb7wmOe7243Sb+6O+ytJbA+QhLL3qC98fqt
5u0kbksLSIW0WvUg03GKYXoshgMjG3Kde30qelh7nxUNmJIebnbZksTcUeGJ
ZnTdmhQTpmZINgFJoqZvrvf+nuFsXU4czlU2JHkJWkxQ4yhtN.fhMmhSMGgv
YQO+RR0SLaKFNHoltZZiVV1NMXiRccAWw1R+mO+yLm0mtdxfPMQJwqHuDETc
hlfHy+FCIfI6GINLFfhPyRLJeg4TJ3siAvgVWPjjFEVQ4MaIgTG7ZkPj45nM
aeeAcsL7SLpTMpoBD9plJWO9Ul+pnkFkBKd5vfIHJqvneoIV6pDqxhh7fEUR
ewUXEdMJzCCWEVxnsCy117I5msjxHM3ZmL+1u9la9UIQHu4leoSd2cXwM27c
7GZXbbktref1fCdWv2haB9MRvOPkxfumKH2SDAewRBVMK3apDTrtR+rfSZ9K
7WNqtE0qH8R6CzFGvi6pnbSIaVCIgQrnoq+ZgHvFHjoNLNu073nMJqj2nzVW
2J0FXjdDXKUUaOvq5GTWfkzxvMaUcmiKpwM8iUaKS83IUOdVxEhs5diTG4cz
k6qQ9yNLipd5.cBIqSnn0jA0e6GadjTIHZ4LZOXImw3OrhwWfYJRcKezZwEz
U5wRldnek5tMPZc6W9A433xqn6a2l0x8n.xVBoZOnSeSrQGG.eQKXQMUWidt
kqNww6NLnmpOzGGJeMow5K6ePeodmRAbdnT.QNmTwWpbJZ74Nr5Id2LLc4xO
QF7Ixf+eRFru3SwUkixOj7FnGNHEPQJxFUFvM0OyagoB8NVTgGGKxCOj943z
.YGs9AGW+hNMD+YmCd+hBGeeTwEJseknq9G0TyFV+SGoO3Sj9ehz+Bjz+8T0
LIiVQBlaOcaWa.n+5J8JpBRFi5Hd+TG5V71ZrRPezRUb3EsmV3nJsmfQnKXW
BVjpD27f.2FL2nvAK0K2TgfAyqn0ZFNy+miqvsJ8f4b8HaCoj20nBPilzmT+
hgwPyojB3ELF9UeTiQil3GTx+sTfAhhco7I5nyAFz2IxgQtmvpIJhX7r98rY
QMV7AhP1Ic7M46EJnFN+C5tEZggX6ZsRsXA53rEV2mbM66R0Mz6hy0GPo5Cv
X8A.TePemQR9OMX6yFpc4R0GCz8X8hzT5wcX7nfKHbJVKIVbpnvayYh7t9JB
VLZh.KN5Lk5HLf4HGuwaW2iNWi0x8n6GLLbfyaB.B87xLhNI9Tb77AyMAjZM
qGy4BLI03V907o.y7qOEfcVBJI8BvmhFOzM0nZ8A7jZz0EXS3WGz6AL0srDq
95VixQpt1HPsMa5yBTfstAtUupiEtlI5bF1xWEL+dLK.LJ34qP4by1Rhcq1y
e9eOMPRKt7CA5IWuuqtM.ETLJzf7IzD63i.GS.ZmUnoqYWvIXNe4RIwDV6nz
NfjoBTucXC5hqEA8WbsnS0W0bVR+eihRwGqG60dzhSSLe4wBvEPrsGx.B2Pq
mUIn2SFEFhNLa8qXTj4XncIUBdoufwUrYZal6z900d3a4TSVen+EIHwbG6oa
Mo4Q6XeTl4Bex9jrN2qoGgushyLhUp8VJv8XljZxiicKC.FeoiGFmVwt0HfN
A40wJfih1kIuiYd1413ZkfVIuC2Rbnk6xxtEjf4N6CcmnsSYhcrjy3B8EQF6
sMRYwnd97ooGH0suIfEW334CbAqxAjt.0L3jMLbsZM9bTvDh7bhVcq2qEdbs
nGueNrRI5nipvni0IFL0YM.xbejjX+sKk5K1zscqazLOH7Tn9YGq5GG6XUPa
94uOQpucp9tpuSNgLZyK1Pa1tq4A6.JRdmnrW85yR2FISOrhH0yMvOmn8gbu
LjN6Qw+IKP3jDngDySBzDj1YUflMzklm4UDXtqR9Rdu9P3N3NWTQDuRNP7bW
HeO8.fOFkmDneRAAvaYb+zABScXvGC6noHuB+MUN5LKuroHOn+jG57JuIYt.
R7m7lDdZ9LZ9RfESBPy72H3Tn.f9aF3j7sYRHnm70zO1bXAF6uAvzyrBBmFh
h7mESxj0POJPvjzvWBoqC4D21dOQHW+JNYoC398bqqrrqc2Sab2ib2KH2S6e
E2N8IDKzAUqzQTaVKuIN2GSWmRM61kQzniYesuQi1ZDsMj5cC2cXq+7fo4Bp
4MbYKtrOaUZcbItio1AZHLRMwr0RXt9oYCijki.wPyuCfrh7Tj8p7X.Dls8N
AJbwpkTFa3c2ZmJ0uDhvUBbEUKhg8XT3VBCVDAJLet0Ynnh7nX2U5h.6rsib
uFXXmqb81G1shvdAjmByhs+zFxyhRxycWkGidg.zKq0sREncut0Wbqf2xE81
F5dWwyuQmhOneCgP0ON49vIMp9QFsY0Owavk7MVS0VXQDHMpnv9Cv..xS.1q
hPnj3W.7a8dEYYIfh0Xg91hDTJZmWwjS.6KcKswX2R1XSG87A6qzauec+rJg
V8dwx3Bq0VSzAsd8N5Qe5eM4APxN
———–end_max5_patcher———–
</code></pre>

And for the helper patch-

<pre><code>
———-begin_max5_patcher———-
945.3oc2WssbihCD8Ympx+.Eutrr5Jf1+g8KXpsRgcj8nrXIWfbRlYpIe6aK
I.eIXGRBdxLie.DsUqt6CmV5v2t9pYwyMOJahi96nOEMa12.Ky71bVl0YXV7
5xGWTU13mXrV9fY9cwIs+mU9n0a+OdJB2aUcq2FLw+DuypYqsRZseYiLDx3F
0JcYUbz+1MiMk1EeVoWcSsbgMLIbFIEkDQIT+Mt6JALsyoF6Wp7qXbejzaWq
zPr7oLYOqgTvaF6s98quxcGtk7tgf6T1zMl+S9TDDcUDNhLHffNMf7BPgfjR
EvOVRDik0OFiv+JgJCRSDuYPIuHkxQHTF.JHQZFJL9maP4udZHPn380pP3jP
IWjhnTAhCHBOEtRYuIPXoQaaTe0OW.GATlfverHT9jrYxuIHzv6uvOMDoz1y
iOLNzLA+X9cUXdrR3vmO51nsqmKqGpZyNy9FIQwyK0qNeIyIdJQa0Vj852z.
ua0qKWKsx5aj5x4AePCCEjImMrboUoWZFrqgcdJQxP2NOOA6wItvCcr2CncH
tvt7G+fFBgnu4ieZkmj2xh9Y9PmEk0VyFS0fbDxKtyZxqaOV3bYGhfQSFhbg
ZZNkv0WAf75fF3vFdlfPD.tDHLEusdm8O9IilxDTJRLL1QOB6BQKtRoe1G.3
Sb2ebDh1X1VunCBZoLQ6k12Ja.zrzpL58ljS+uaVm9c2niWwXhmKovSR3xGa
3llpiOlvUDptdlY8svwhtiY9Qk.4mHAvSPBvNbsGNAxNLKmTDXTI.+DIvTf.
cMKmOCDe3Y.8DY.4GVF39J5KFOvkAjw7V3R0IfGCQrXx15AO1N+oKbjwPwvW
JJ1XR.OCaL601dTZ4lM2KqaZWjPvAUH2Y7NkmDdVoCOSCOWKuW04BOXprFjM
XAMCaqCh.dLqU+d7ZCjB5spNZlq7cg1KX33iw0v2h38+A2xEs1nMMaJAbHTP
PUurbak8HrRVIWK01ElpPd9oHTZdAEyHItQhhLpeTACSH4..suvk4qVppp58
c1t0Ezb0JeJdUc4sJo6CM59qCBFQfvhLWH.sLEHVXDXBeXvZcC2prxq0b+KG
OQRW.JxH4LtuFxQ7hhvnBF8YA.91wfNLRtSDam4M0fH55N1Bjchcdr0Z5qud
pR26oNIacuY.h1+XzkKL6oZ7.r.gyPBQheDtfi8iPTJm8Lf+.+D44brnEKfG
EbZF8HWbZf8NciR63sx9flr2EuKc78jt1rZn7dlH030.aR0W09FiquBt8+Pu
7vsA
———–end_max5_patcher———–
</code></pre>

Song used-

Kina- Can we kiss forever?

Patch used and modified upon- Meshy patch developed in class

Unique Convolution Assignment 3

When you are given a convolution patch and an infinite number of sounds, there is a lot you can explore. When I started exploring, I was expecting a lot of unique outcomes, which was true but didn’t sound as well as I would imagine. So I found the best 4 IRs. The first video shows me using Impulse Response recordings of popping a balloon in the elevator of Cohon Center, as well as the Morewood Multipurpose room(which had quite a lot of echo as you would see in the video in the second demonstration). The third demonstration shows me using the inbuilt sound ‘arctic.wav’. After experimenting with all the inbuilt sound files, this one sounded the best with the instrumental part of the song as we can observe in the video-

For the fourth IR, I tried out different songs to see what effects it would have. I tried one of my favorite song’s(Kina – Can we kiss forever?)  part with the climax as the IR. It turned out to create a really magical soothing sound if the volume is controlled well enough. However, the original song can barely be heard anymore. The way the song fades out is pretty clean. The first video is the IR recording used and the second video is the outcome.

 

Citations

Patch made by Professor Jesse Stiles

Songs used-

Ed Sheeran- Shape of You

Kina- Can we kiss forever?

Messing around with songs- Assignment 2

The following patch helps mess around with audio files by adding time delays, shifting pitch and adding feedback. This, of course, resulted in a lot of interesting experimentation.

The first video shows how the ‘chipmunk’ voice filter can be achieved. The pitch shift for heavy voices generally worked with 1.8x transposition factor and for lighter voices 1.4x usually gave a good chipmunk voice. The songs used in this video are Pillowtalk by Zayn and Hello by Adele. While experimenting, I also found a time delay from 50ms to 200ms usually complemented the original. You can see me messing around with feedback as well.

While experimenting with the pitch shift, I remembered a song, ‘Cinema’ by Skrillex, which had a kid-like voice before the dubstep drop. I decided to find out what the voice could have actually sounded like before it was modified and here it is. The first one is the original, followed by what I thought would be the actual voice-

Continuing on the path of exploration, I encountered a slight effect of reverb or concert while using feedback. I found out how the effect of slight echos are created-

In the end, I just had fun with the Iphone ringtone, creating drumbeats(may need to increase volume), really cool sounds and some other effects-

 

-Tushhar Saha

Evie Bot Recursion- Assignment 1

Evie Bot is an online bot which is programmed to be smart to a certain extent which enables it to have good conversations with people. The concept of feedback sparked an idea and I thought ‘what if I made Evie have a conversation with herself?’ So whatever answer one Evie bot gave, I directed that towards the other Evie bot. As expected, the conversation grew pretty interesting. Through the progression of the conversation, we could observe the conversations dying down and one of the evie bots changing the topic or asking a different question. Some flaws in the programming of the online bot could be seen, particularly with its memory. For example, asking the same question again- ‘What is your favorite book?’ After having a look at the video, it becomes clearer the kind of conversation they are having. (Feel free to increase the playback speed). Since the file was large, I uploaded the video on Youtube. Here’s the link

https://youtu.be/u6ym9nC0z7s

Feeding back the responses resulted in confusing, humorous, complimentary, sensible, serious, random and creepy dialogues. One can observe the evie bots being confused about their gender and making assumptions. Then, you can see them making a joke about having a brain disease without having a brain. You see them talk about calling each other nice one second and being rude the next. From serious conversations of being a machine with the avatar of a human to a random comment about being asexual, we can all agree that Evie bot was creepy(she agreed as well).

What we got to learn from this is that feedback results in lack of control where the conversation loses its meaning occasionally and thus, doesn’t replicate a real conversation. However, the conversation is really unique and goes on to show the kind of programming underlying the Evie bot.

Here is the link to the Evie bot if you want to have a chat with her- https://www.eviebot.com/en/