Category Archives: Assignments

gravity flanger

Flanger is receiving values via OSC to control delay output of each individual string

Flanger is receiving values via OSC to control delay output of each individual string

Gravity Sound connects strings to planets in our solar system where each string’s tension is equal to the gravitational pull between the two objects it’s connecting. A frequency can then be found, knowing the length and tension of the string.

The strings in Gravity Sound now have delay capabilities. Select the delay button on the left menu and a parallel solar system will appear. If a string is selected (highlighted red when selected), a user can then create a string in the delay solar system which will modulate the selected string. Only one delay string can modulate a selected string at a time. The resulting values that are sent to MAX/MSP over OSC are:

delayTime =  abs(y coordinate of string midpoint)          ….(absolute value)

delayRate =  string length x 3            …units are AU. which is the distance between the Earth&Sun

delayDepth = 4           …changing this in real time didn’t sound so great. 4 sounded okay

delayFeedback = 1 – abs(sin( angle between camera and string midpoint) x 2)    …wanted it to be                                                                                                                                                close to 1

delayWetness = 100 * abs(cos(angle between camera and string midpoint) / 2)

 

One handed DAW

For this project I wanted to do build a digital audio workstation that one could control entirely with one hand, and with as little keyboard/mouse interaction as possible. The leap motion controller seemed like the easiest way to do this, but I was stuck for a bit trying to figure out how to control so many different parameters with just one hand. The gate object was the key here, in conjunction with the machine learning patch we looked at in class. Upon recognizing a certain hand position, the gate object would cycle through its outlets and activate different subpatches that recognized different sets of hand gestures. For example, the hand gestures in mode 1 would control audio playback- pause, play, forward/reverse, etc. The same hand gestures in mode 2 would control a spectral filter, and in mode 3 they might control a midi drum sequencer, and so on for various different modes. At least that was the idea in theory…
I definitely bit off more than I could chew with this undertaking. There was way too much I wanted to do, and only a couple of modes that worked semi-reliably. I intend to smooth out the process and eventually have the daw be as fluid and intuitive as possible. One day maybe a disabled music producer might be able to perform an entire set with one hand and not a single click.

Here’s the (WIP) patch:

<pre><code>
----------begin_max5_patcher----------
28738.3oM68ltiiqjkXv+ttOEDB2eLKUoN1CRCCCOtaLK.igGLyX6O70SiDL
SwLSdKJQMRTUU2dfa3mE+O+b32D+j3HXPJQJtEgDkTDL4cIyjhTRwY+Dm3r7
u8SeZwyo+HZ+Bu+cd+duO8o+se5SeJ+kjuvmJt9SKVG9iWRB2m+XK1D88zm+
kEeVcqrnejk+xa8RhB2tNMKNcypcGVuu7I1Fl8x6wad6ocQujo9hPL9RfOFC
we1CgoKAe1CBQxegD+z6OT7N2m8qIQ4e3keVaNrNdSRTV9JAd5ESOjU9pfhW
MdU96TrT+BJn1ZIZWAzU.deZwqwIQeKZ2dwRuxG7mVDtcakW9SUdKRbxujl+
Aw+7wWJdi5kPGeocQeKt78SN9pg6DXjLA53vNE78Ce1hSeLoqh1s4Pb9RQ8h
+O9oxkzIjHHGewxQdTd9u8orSnOAc7sjzW9ZzpJnkOsHcazl3Ma2EsOZSVXV
wZ63sWE8Z3gjrmdMcS193+X9xKmzzx8eM7knNeyaBWqfs+pcwgIkP2h21EuJ
cibQTCSKe4xuteu.dTPUUfI+I1Dtsk2rfFKvJcby8Bf7v9mC2IIDOq3mJoOK
xRSSpeqiuujnWyJt813MaNCKlkts6atK9s26489bp3lq66yN+N6e5vF0ceRH
6k8z9vuUGamEljTHLV+i+GgahWGlEkEqHAHvwaFsIT.nuu+kcoII0fW0c9VK
2YkfG9knuGuJ687unpLChGOdaISzhiT4UwuEsOq9qkE9195uRC4awKc34BYz
mxhVuMQ.Em8.um9cA2U3y0Vh0ThUULspxrZudeJ0pqXKcSzygadq58ZQkFuf
mEwk+hxOWYVG.bCkZn52nhhsp2Q8xY+51BAlEpUXwuq8cVQOHcQ4K++3m9ox
+3yiOFa+1nnUIwq8n.P0GHIdSzKoG1jcN3zB9jJvmzbyBb4uU52vzwDgB6Cg
1IRDA7GUz3g0OKLHoIxfhj+lBtTtKXsumcBUzYBIMkneUkHFx8MHmGBDbm38
1jlEIVedvqlyCAx47XnKkyC2IxDzAVRrnuOXo0geMRhoj5qjlGtZoTeP9uA2
.jUubduljFlIY+T+Qm7eP3cBytSf4V4AWdwXT+b6H9XkjNzdT6wtWVOhR7fd
WLKISocDBADIFjfGeNRr1Vh+buXTxc2PhOzWgbn.W0PB1gbh4HunRZ1lbhAb
248NhLXX2j2CFvcFmXJQ1HD3N6DCLv2wbh4HiYfc6DCLHvgz8Q.kw0yx1.GL
fc208EHbFADDDvYm3ybQEfz6Nl6Hajqt0WXvn5wx5n86CeKpUwVvxAPlBehC
j3u.zUhLGcYR+f6ERBRgCil7y0VEPo1FZhaM7REakHfRrMbD0ZvQb092CnVm
3F9NtY9u.8fWb3P.PkOY7bQQB2V2MOjyu61FghcCmabD.bUOJ3r6lvpG37vJ
0lVMr5.UA7.KSjk+.hVjuPuUoWq.ByU4wP2IkcG1rM7ku5EK+2KUgWP.coXu
r.H5DWH6higI7xz5EuIe6nU9U2HWvC.4d4n2Zrzxc5KQuAiO5kXF5cHrLycN
9rxMrc+O9LHi4XQd53las7iOCxtaoNvKgIQBK0BjpGX4UbNZPHwWhSCv4pPC
t3CRiM1Fxo2KY42BEbnnK1PDlrLPXHBQNY7mbCNNxAMt2CljbmvjigkG4FkU
9pq7i5hiGJYrYHI24yFeL3HCn4VWH91RTk8Y2UMjeAK1xmW9OfK8PKGEbpJR
8PH1VzU5CuuNW9pI+6B8RjCNQ4io+ReAdlDb8ad5L8mXCLv6z+QWbIb+6ULD
Rh2KbM9x0f4K1IGmI9GrPLCqLohrEMX360oau2KOAo+x6gaV8EwBX.bFGe7n
yPpSNyO2MDDbLEiptmhtSe8yPYB2hO6scLk4EKt6E1Tlo55hLwviLfXnJoTH
1Bxj73Qla8j3w8meuWRSTE1grpK7Q9be+OK9KHNfCT+EgSgh+5brXamIf7H3
J4mYJKtpjTabsKPzlFztW2ed.uuY3peFWLFpi5LQU9JU9TyE4q8ilH5SE1Sc
xemE3SWE4yYu81J1mNJ3mtK5mgK7mtJ9mZE.zYEADNW5kmGAKJIeOEDHoNxo
8BARihAp6BBBtrym47hBRyBCpmhCRuBDZfhDZvBEZvhEZfBFZ3hFZvBGRihG
RmBHxjhHpmBIZvhIp+BJp+hJp+BKp2hKpqBLp8hLpaEoCWrQsWZQmqb3byNM
t+YledIc85HYLeq+Lm1krjAH2Nj2e2u67mpsfHhxcjDyTpBTQYH3LIitwB8Y
RoeS6CaZogMiEs7tayJeMK80s1eqQ+RQXCv9XnJPNEXenEi84N.1+DyuF3dH
2uBtWcRCVJtm5Rb9Zf5UNtVf4oXKFySr.LuBVzQWNnBCMhV9y6CZsZLgO+is
j2I+qzlvXPUX0e7nLziFk0Xas0kty7R7RzlEjk+yff1hMv3gNQFKXO7ID0P9
22BT.L.sYm.rh7fdHsoOHURKfTID20Pgv8RgviDEZHpDhZ+TIw1jE6Ybk29r
zcQZPon4Jiv.kmg92VQI3HPn5ULBL8HPvhL+YZPgvA1OE5kzjjJQ+2.ZjpKA
4CtszHxHptaHUd3A2O14PX32hV8jJFVOElksK9YgYi8mQcNi77oEQqetH9P0
tQMFfGI6vwiuPeUpJlANd5vL.+.vLji201CGHcbbnGXjRYyT4x.Ny9jPEY.2
CeeRL2YukDUwmXA3LaeykuHze+Vj9aWGgyCV20u6E38X2Kcjg1MLnyb.Gvzk
PgX9SWBkCrYyLsBFPQDvgLktIr0uClAIMXWfz.0WS2DhzfreRSiTdeH6PpJ.
BhuZxC5gGnSLz9oOxxAN+XlxiAfARQEQk19i1YuELbindxbkXSmCg5StTGJN
Mv8kpPD6mD8GS71mD+Rjd1kP4hR99mN4VGmBcMtLTO8wj4x8.45SNFU9b8S9
1mdX2KkfPYnB7ZhkWEsOKdywLu62e5LqZ4geOd0pnMssWwUw6kIZUyH6nMC4
kBWcrTaGtjmxiKAWPcgKr6.WlvGJiJoi.WxS+Pa3B6PvEy.3RFasoHbkq2.5
FvE0D5ExcnWTSoWH2.tvln2vgjuPST3BZBbwbK3RW+MvtieTxs3pObgcK3Ra
9P2QOOxD87c3Lo0BWZyGFLMgqIJan6X8RFMI88hxcrdgL1KJn6.WZKcQtQzK
u+vOUAH+ISxAn+sqsf55qrOeKI84vjhRn6XX8zox6NUld+TSXdDJw6lk5xon
k9pr0C5Eu40zE52J9Ppt0.q0565ATr7zf6Twx2GlrQsx2V4tyP1KRz2BPhuJ
vWQ6FBMRQAMPi.aAMxs.znT60gcQCgGQAL6EORs.7nL+4y0PNzzbIeHtbBER
sCTH7NgB+k3rka+d7lUoeevY2mpA+Tz+pKpVsy6eE51rmt3lkGuVi.74zcqh
1YVS63d0AV9V79CZgSkonFsr4WbIMOE73x7wgc2QTjXSeb.Bxj+EGD3CHF0L
T9n1fSfvbxK4zvjI+XqQys3j4VbxbKNYvMZ8XZwIM6gdm4rVRt1QA5fQklYf
xeDHTG9Yu0oeKJK06mgd+Lx6mwe1a+VwhORh4ZjrT0Z8dXM5UGksKTkGepgm
.4lk7K25B9C4.4J62h9w1cd+7qPu+BIIDPWnOYBVLbKTF6AtZcYNPFjgtKjI
8kHE+GgH8QgLj7H9zcId+L06mY0tauRqDMp.AUCjuTZUUyeThyJs5.oOsbWM
ukrb+WiDTCUSP5+XhzXsjxnLz4A89OtecZZ16Os+8vUhanUVGVPLIEERR.81
1wXtG4cHz2IxLzeIMdiNUVaQQtgU5dCtV5iEjWnvoD8gvXSL5Cj6JI+922Eu
Oaa59Xoi5dQIOm98iWsMLYc4EWqEuBYvhLztnodxtbZLwdJuc1LstU44oHs1
E50cJhsLVF+lSsbv85z367qzrXfPataaBcfV1ytN6E7cR.NMQoJkatF7O3gt
o.HzEHQczf4GvLVAEB43THzDq8wor6T1rqt58gYGsONnMDJLs6uML1I4C6tA
2.IO5FOxMyPNFvcEC4roncbjZ9HMMriSlflwg97oiYb7zxJtevDzHNxEZ8K5
0DkUzmhM2iQskcTtUvtoNj7iG1i3Q0mJozs4ytVpDqWpDajCAiNRTNPDV25o
R.1mh0xqshQ1MTcNR7a7fGfdCnY8QuBLrIf1RRg0jbzaxg0WBh0xGUWIJVOI
KV+ILldIMVeINVijG6rDHSsAKUWDlDvUo7QKAZs6THSyzHS2TISqzIyfTJaf
zJS+TKSizKSqTLSqzLSiTMSuzMSqTNSyzNS2TOyzzOafTPSqzPa3TQa3zQa3
TRavzRquTSq6zSqeUx5klZcmpZsonpMyTs9b5zbX6LFBXUVvyGnAwN.3OjUo
gimvfQsrQraDrre8WWb9yTuOP2vOfGFhFwYVJhFNDhdm.RbG7rvWJ6DOCFBO
uNd0Jwx4Ahoa0S25d61Z62cHsKpdenxi2170c7IF3VdhgcB4SWPa4cHOfGbW
KNNMtTw1GIZr+GMZbgR0ORzXt6SiyZDCoNIvH9RtLpDESjD78iBCGOJrNjU1
TfrRzjrBCXePHqzo.YEqKYk8QgrRrbxpQaMAxf14VSvCsyj3Mqh9gctEv2i2
j0IZp0vuqv6VGQXv3cj89g0OOk1cXIo3ijWkX1GrsNTpz6CEQdR3MBRWJLl9
AwaDLdJPWglod9C.YE49j07wFD0PCuPfR0r+XQZQCRZoiqR4dyKgFzYn6Smk
ienbGA8x8I2SclAdxinwScfXlIbqFaTP9nIcyFjEfMdr.mOph552CxZfl.tk
04XNZHd.PvoQcz8QK.Zj0BLH4k39j2NGQRcQd44ccDe3oojzDk3Z6dk0VU0z
OQqXX9MZAm.bQtbMb9o2HbcClKA5D+hlozUqS0p1IQc0mj6fP0neI2ZeSuLm
hZqyci57MzYaStHCj5n0IewbmWKn6aJnCmLfN2TPGLY.clgfNd5P0oebAcBz
PXu89iuaB6ebI6XSk1mNV2vFKsOc.c7GXNdzGXXWBJDCf8foEniM.z8mVfNx
.PmOs.ciD1YSKXGZBrSmLvd9blxDEcroEnahhtIFU2DEcjoEnajvNdZA6Foj
e5rIFjo6cEMgzzcQ6hANcfcSj2Q2KccUlreEHiy5hACOg+ZAIbcEv6Pkt9vS
8uANfk1l9eMwOOl1QQRZ3J04dObabK.VYLEPY21VQwHzfjxgq96FkAVPCCYn
QUfrELj8YucoYxr1AC7fKUis.w+Y.YihpkBGt5XE.5BsV4h4Jfr2ikDY.MR0
h3XrIvvBvE5inWxvZQ0CklJypkf.KXVsLBCoCf1TNBuHoxAtuPV.0ALe8Vhz
S171uhGY4m8NM4c3G+e4f2IOqMhdSl6GGm9NGGzNWa2muPpsbPXAc6QqS.wE
5bf49s38rWztv85XDzGCN0jG8g2VwyQnGOlCeUyaTEf1aaSE4Pss4B5gKz1l
ajIY2811rd1v1EsYUztBaXo6xdOUNdodQv2sKT5Puvyd7Rg0szzuFlU7BvkE
l6dJb8ywRsifk9G+e4cy46dRoUEt73+csSOPe0bKubDVQTJMAVrAyNSf6Z40
e+SIBrkLljTYuKSa+ZP9r9ScWGZPV46JMe00QYguDtaaXh21co+Hds3Oh2jE
saczpX4t0WEuOKT+FnawztBguZmSoVUe9DwmNs53h1D9DpWGi.SwlcbIcZ51
sishnWNz7p3Mwd.Tc7XO853wHNtRGO1tGTE9St9MMB.lv8aZBYtgSO2voa+g
la3zyMb54FN8bCmdtgSO2voug344FN8mla3zyMb56FMdtgS+AfFO2vocQZ7b
CmtIYctgSO2vosUx5bCmtQ7Dma3zyMb54FN8bCmdtgS6pD44FNsi5MxbCmtA
cctgSO2vosSx5bCmdtgSO2voma3zyMb5VIuyMb54FN8Ci3N2voma3zyMbZqF
zma3zyMb5OTf9bCmdtgSqEYetgSO2vocZXetgSO2vo0.zma3zyMbZ2G1ma3z
5A6yMb54FNsyC5yMbZMg84FN8bCmdB.6yMb5ZqyOpMbZsaubAtR2k6hatb09
Pa+Thpio6RN7L7cySEp0cF20tnaU1qa4ttk4zlC5t.WHj6.WDSnWT2AtL.r3
sYxvZgJnAPExYfJjAPE1YfJrAPEwYfJhAPE0IfJtIJ24NiRPtApKbLvBMMAK
7zDrHSOvhZfrUfSAUl31ja.UDSbxEF3LtClCWPSfKj6.WHSfKr6.WXSfKh6.
WDSfK2vsPB5Vt430wq1lFuIae4PNHu0wPvD4uB7OdQyu+GKBQWENXf6Xf.Yf
BGWCtz1vm+Xx.ifp9upswACM.iPbm33YhGNHmwQ.rgPka31Fx2DyJtylGPFE
FEe2BtfST3BMQgK7DDtLRIO1cfK7szKkGHbglnvEbhpmGXfddBwsfKiB+ki.
WF.VTmBpz1YC2Yqnvfo4YrACllGxFLXZdJavfo4wrACllmyFbhtoRHyD4Kx0
EZNFLe7BfAHUlNxOdkEEZNHyDJMzsnzPSfK2HLVP5cjClBoN.GrIGeNzgzAa
RxN.cmzoDZTdA3NATAhMgdwbK3Ra5k6rkOHxT9PGQ9xnM8AcINQibVABQNDj
cOS5ApZHuJOkXP0jdvprpCummh9QLhpy1UdJ5XKCkXpBK237lgFddy2BQ5J0
IX0ZDTm5CrB30acA1UMA1W8.pQs.1QEx0VM.dBlO9WmnmGAiyp2uSf2.8Dzp
yb5+FAfdXWz9yu8KoIpIX7u2CrzG4y88EzykPb.Gn9KBmBE+ErtjWqCEJe7R
N..fHAiNKWIFOuK9iNa+Isig5rqe28bwn+9DZsoyU0oo3hKFpqwYfpxYr342
p7ol2UNq8ilHu5Sw5pLs8L8p6ZxUWUjtiIVcGSq5tmT0COkp6ZBUWqpdqLYp
oJ83HkcNe0unAmanq1botFzO7LoVm4Q8fyhZMmC08LCp0a9SOvrmdv4N8fyb
5Al2zCOqoGbNSqwLlVm4KsIyV5dlqzCNSo6edR2+rjt+4H8kYpo0YGcWVPzY
lQuX+6oeWv0F9bikeqSR5qoxxWGseeXiI6xIyNHu8B1Go5T.ABgd3fkXeJGF
3gEBjTX.IH+lbr3O9BXYfOLfS0nT0g.0zsmhyGEAXfuxKwKub0Q2vxUmr3NT
k+s1Qvq5AvWi90rvsZfbQfbkzLERkhtVTKrWTKePT6m63+6CkyaENqawsIFs
WKu8Y8skOptrB2ik39sFqmE49rJ2vx74VmUczePtUYVw.XxGzR6DulA5FsKi
gMR2sgZzxdet1LVafA6ALZqugaMLdqkAbsLhqggb8LlqkAcMMpqqgcSMtOfA
dsLxOrg9gM1OrA+AM52mg+tM92upU8bBnay8soo5tLLKIP0VAwLkE6xe9vmi
h9iwHHvJlWnXlBESfVFJlOYPwHetchhYSGTL1RQwzICJFxQ1IJlLcPw.lchh
wSFTLwR0SfrYLrIyVJJ6TCAb7vu2qYKEzlICuljJfYybcFp78fB5JfLiAm91
vchcOmI1bgZ2QcQwdMcmX+W5M.GG4A7V9PZbHpOy1mfeFwAT3Y+LGfIb.19P
0tTWTeCwweWrjIPFbAyXTTm6Jkd+lAyfKlDWklwlRRsEaVbVp0DoV+IEG.dl
CvXNffIfd6so6iMPscIeRgZafio1tVx037BsEQGAp5G5yBs5HzxgS.gV4gI4
8ms+O2P9DWUnEMAHYxiNMxrPx4rzK7DfdIfGSBtmyRqr8nOzdlactrU5VCEs
JLYxGKSlnKJVgWpwtAMxY6QTPfZdNZmYRX1jWNVfeL1d.HZMM+pK2dXy1vW9
pWr2duWK+Wy3IHpxj2GcKYJNUhHCqTlOdrBwRKTJNBwtBByz5OFjsgORrMMS
xrVGRQsyQcsCMLN2vAlFWmgEGzIFXZbtgCLMNUigEmCA6FM.fgSK5tIiCUVv
zB1MZJ35OsfcpIvNcZA6LSfcxzA1McXvNclErbpoyC0oCna5bd+RmFpmUE6P
eXdSfWVlRs+sacnpdruM0mO38XdapOU3YlpafOc.cSGQ19SFP2Tshb9G3gD8
Gig.spj74JyVSyg.8XgRa8PkaMpZA4wXkD32enVuzBpUivq18AH2ePWGNJaF
Dr0ZQL67r7n2nk8vofjYJ34TPefEPAa+LGGN+I6iH6C6O2IGm5dGXLYpJtG5
RROXNaV54bJH1onfnYJXCJHwAz+0QdH1GMtP8GvlU+QcIgGDq.iBlEdNRAYN
fvSG4CXOzXmP3g6.n91xquVS7n.pyf28c.7di7yqUjN1crTXCaybn1jVKIZW
O75k1Q322Vd1kXInOK.A1v1GaMg45gk+gZC+wXoNvF1p4.M2NMx3s9ziQICj
taWJUsyCGefdf2EPKGkzZqFcG4TAnqHDqH1rO1cVB7NQHVmof8TB6SkPrBBr
9PrxXtXHVmkd5oTxchPrNSA6oTvmHgXEDX8ablCbvPrRPymOQ2kj8DIDqtfv
CZBFhUW.uimZgX0EP5jIWHVKsi33gXkScvPr9Psg+frTyl5gXUFa04Pr1fty
cIerYAAKgBoSerrmvhlcz9XeA2ohyJCGn5puyTvSTPpa3u9tLOCh1PIkV0.m
4AVrOjTmJXqTNQIBQlEgNRAchrJZaTzJCHvXp0u6KpuCdLsyFepRAgN3wzNS
AqRAQSyiosT+mMeLsTrCdLsyROUGHMAN3wzNSAqN0l.Sxio0Eb+i.cviocdi
SUofjI4wz5DBOzo2wz5D3c1D6XZcBjN2ANl1CaWYF2dgkDG+fZI9N3A09Psh
+frUG3lGTqwGWKvWdbsTezwS76QblsPvC5PauvyykBbqCBTMgZ47YmwOFKBW
HmIE.QRjADXFv5cNA6TEaFkMK4bNED4Bop+tvUwG1a.E1EDc.N3A.NK5TUzg
6fG.3LErJEzEBnwuUbSs1eWIE1AT9gbgH3sxfSds3nGbBbuKj2+ujdPx0+RR
5Ke86w6iLfDTjvbPpaGaID1AOgnBj+r0kbJHZRdBQNgNNvz6DhbA7NLXhcBQ
NAR2eBdBQkVRb7SHBxbvSH5gZE+wXqFRbrSHZu4mNDBmOdPIpjj+QbvP92ly
E5pO.HWn7ykC3jC6h71+xtHwyEt06ee7p+Cd+6y8hP76UG1kO1WjNyItrLs4
79Q0K9U4CVts17ac5pe8+fNrRH0tqTwYkiQ1rcQWhr90ne8QSSIXGflhbIQ0
uGuMZ7IohOLY8Po9P2k8OT8in9qXD4GAb.xOzgH+uDu6kjAn+GCv0Fg+yhW6
WWm+p4g7MmfV7mRpt5TvD+Q9AI68msJ5s+bCHvAb6m95.4oyNArdj1pjvKzc
ezxr1iqKDPQL7u5XUR6klPGGunq8+81+2b.oz+FkT5dsIVppohn1PJwN6Z5m
eumEaX3MAG6lUcsY2WCUSVPTeTLoydm8A+1KoIo6JTvjiYp9i5yAvGDE9+zg
3jruDuw6uOJb65zbstk5lED2z21jakb4+xl+5zcdqSEub3puEt4knUUuumXG
qumtZ+m81GE4k8dj25COeX4ew50dBbPRgY4zW8Ti0vyWNxw7X9oYzFVtaMCA
4aUi.ToorcZLlaN61QVJjUoDv6e5WEJt+w+NcrlB3mlzhPrJFIH6j.Atb8A8
R7HVAw6epK6sxmX.0S5JGVLqL39VLY1GMoIyJuqtkzXUy5ypowL9zVTV5G8M
jDW1KcrYRLlLoIw+17cLcCowHpu8SiwNMMda3lnD82cKkI8QhiTZY42KJR03
IXH9N+FEi67yt05zUsddUpr5Wdi92jDXo+mq7iVYs2ktMcW4TNGrDGXczzR+
gdjzT1LMcbooE9+7HoozYZ5nRSKc34QRSIyzzKgl9svcG8m3uMJY6esLmIzf
vm62CL+H98KRxe7cit+b5tUQ4XaROwinoTd9aqFkhSY9L7ma8uZivoMSEhLx
bU53rpIbU0d24wMbu5KpKlsbl.4y0OK29zC6doLN9kiHNulK1UQ6yh2DVtZ+
8mlifs7vcmxGqh2KysGkf7EIDcUvETW3Bz5CasvERS3RNglcI5EVW3h3VvEQ
W3B6VvEUW3B3VvESS3hG3LvkrO0qsddNysfKc0yKGlFNhd9b3RW87bnaQuzU
OOywjuzUOubpF5Rvkt54ky5TWBtzUOOyc72fYhZCtSAV5pkmBljTKx.1t.VE
ToqqFtiGu4rUbc4A4tEb4qKbQcK3JPW3h3VvktVjoH2Btz0hLE5VvktpCIAt
EboqMYY2wzQ14UNbosQYGSugt67h.bK3R2cdgcG4KrAtafgNEXoqVdjaQsz0
nLh6TfktxVHlSAV5pJT17cbDSWXCrbgPNE0RWGMfLmhZoqegP2wOCnAf0PZL
tzXZToliDf3OcZwF9snUOoJNmmByx1E+7gL0Qq2B3IWzurKda4htVRRHVKxB
Hp4qed8sU8dukj9bXRNlM5TlcT6s2dJYrHK7MUdhr3mZByG+qSzyifwYogxI
vafJcrxT2w603MuEsa+42sdV0f7494YUCDGvAp+hvovlIYSqcqUHaIA..Hhr
Q6j25xgp4yz4oua6XnNSXkd5G48mutZT2iedfZgrVV6WsdVWbwntyKbpJ2xf
DRYQAKXWL9uFmD8MAEufwupxkEga2V4VspVPvZ8KpERsQ18BAER8x0p8sE6h
9Vb4mWsDyYQ3NAeRlfI4vNEQ5G90y3y7D2Y2lCw4Kye5SsI0K+BJYyTknUdC
qvunTNCNu9MEHRYkXG0HIhVjtMZS7ls6h1Kq0nioxSMsBQuFdHI6o9zBT8YJ
yn6Neftym7EusKdU5F4hpwJUdqxudAyfpdUomCn4O0lvsc7gnzS1yCHKj8C6
eNbmj9UzCeP0zZkllT+10d+IQulU7Hai2roYB+I9.11+CrK9s2G3y34TwCrd
num76t+oCaTOwSBMiYOIsWz7YCSRJTW17q5GgahWGlEI6kd4nCPsGP0qidWX
VIMIoA9Pc2u0wcWIDSdI56wqxduYFocY1pNYUQCSP6O7bgZimxhVuMQ1CuZ9
Pum9cAWa3yMV9BbyPIw131lwxYM9R7lUQ+3ZKDWUGulfqzujulBw0r9Plg8J
T3h6P1ppVSZUhrD0T9AfU0AR4Ou64fLsQCknrLkNwrHj8+5uZU3u.J1NPeLv
vnuch0tUg87KFjcOdrGbXr2Zw1dDKBaB+wYAVB9CML9Soo2lPeLUt2aAnO7v
nur2Or94E1vTdMWIrVcegplVHPKtYFwbgIDZt5aMLI4ibFztKLaAJz6qg0L+
.mAw6DiGz11ZPaVACXNCdm6B8Y9bKMZf2A4UvlSf2sg9ts19kP.VxlJn984W
hL7PV3VxvPKYSET9fXOqaGYHnkriBJaPjmEtgLHxR1QAkNH5y91OF1VBEEYP
jmysaLBF6JNIgmPaFCWzVHcAz9jZyXHB2YP7SoMiAUirdm.uOk1LFC5J6EC6
a+cN7LuDuDs8XARU3awZGCQzwcfsbSFxN8OhUblV6NzC4g8HdTsIUnBADdvH
Pp5e1ExtAcx8gHcDf8S5jchauJwNPCeWgpFEIW0P6F8YhTc5FYjoa8RuFbHY
bNDNbFR1j77oEQqetkrxrNCvChcX6tnsQaV4sOKcWjlLC4BtDRkdH5Mia3VO
04HHWRhU2c8TNeeyEXY7Ij.KdVf0PAVIyvTRfk5RBr5ue4hFArRjU05XmHhr
rYQVCEYkLCSIQVtKIxpcjVHnpdESmPRr9yRrFJwJYFlRRrAtjDqtwnqXJMWH
vFLcDXofYAVCEXK3ElFhqT2XVelUTojdwqzYVBRQpv5xwpn6Rr3fpScfvHTV
npOoG5WlKEpXzVPAv923.Ibum8lTSClPKkEZapI6o7PyueGkHZKeTcUpnpa0
Z4hleqNKYT02+PkMp5iu8RGsfk8mN+K73dWxcDVUXDD0fzkHmJlmSHpWGofy
u4v0RZ9ioQ8j134ZqlRa7P8x20Wskd71CVeomdxNKgTEpXf5LsP.r+ZMUoJn
25MM+QFrlSK9f1N7CMbsmVniav5Os5hWmZPU87cVGpkpV6sVTUN7zW8nV4I9
VOOQu0kZwSzcsopdf1qO0BvrkZTsecx5UqpkXolUkZaJpZyVUqOmNImVmgxD
mmwynhifpyLTa.veHyRC6bv4VRfn19Npl0ZMyS2ldN2vYfGFhFwYVJhFNDht
QJ8Z03YXfkhmACgmaI6euyX5Vc28rXD7d3lFk.+PZWToLnJ+0Za6FiOw.2xS
LrSHc5.brbWXpe05Zu5jmZQGe0cs0EGmFWpX6iDM1+iFMtPo5GIZL28owYMR
irNIvH9R9o3Rfv2OJLb7nv5PVYSAxJQSxJLf8AgrRmBjUrtjU1GExJwxIqFs
0DnJi1suslfGZmIMKrNqAO+d7lrNQSs1COT3cqiHLX7NZVfdNtWkkjhORdUh
Yev15PoRuOTD4Ig2HHcovX5GDuQv3o.cEZl54O.jUj6SVeKLKR6c6WZ3EBTp
l8GKRKZPRKcbUJ2ahIzfNCce579nDubGA8x8I2SclAdxinwqshOaHgaUOTnL
gfFAV.1fr.rwiE34PYw6L7uGj0.MAbKSU.o4XGy3A.Ap1R98SK.Zj0BLH4k3
9j2+Xh29j3Whz19c05dghmvDWa2qrbjmQDMLdbCNA3hb4Z3LlsQ35FLWBzI9
EMSoKY2SWybloqgHSGDpFCSlVG.Xk4TTayIGTmugNmpLEYfTGSVlKl67ZAce
SAc3jAz4lB5fICnyLDzwSGpN8iKnSfFB6H7zA1+3R1wlJsOcrtgMVZe5.53O
vb7nOvvNrsgoZOvdvzBzwF.59SKPGY.nymVftQB6roErCMA1oSFXOePPahhN
1zBzMQQ2DipahhNxzBzMRXGOsfciTxOc1DCxz8thlPZ5tncw.mNvtIx6n6kt
tJC97BjwnzWTtpB3cnRWe3gh9.GvRaCG8l3mGTWAYeTh.WWzYJzuqagY9m55
V1ZOAw9aIHIogqjyIXOlVckNPET+32UQOIp+X6lNXGnINW1ti1E8pVhMBAEp
XSGfbgG9zkzYCMBoCBEdGzeb6nDmf.PmDkvjjzuuZW3asoR5BoXwYQqKNj5p
STmO6s3yxeTsSHV8kJ6moUeMUSIt5qTjaWEuT04mZ8Wq9WPsw7a8Wr1WQ0YQ
cCb01vcB9orncOo5LGsgx5MyqaOqL0ocBI7b+Nvc8KwYKeIJI4YYyyQatrBI
eHPX9DFDDPgxdwOnElsJM6DfICo8WRSZkQSXfW1IgFlNPZ9Adroo3CtdEGIw
6yzt0P0H4oWrK86sBeOmtaUzNwhU0Kl98dfknOW4GsIPK3nh18svbjL8bP6a
cS.5o6EUWQGxkFhGEiA5I1T7.AlhSwiBZ0DeLd.ck1eZUSg5LQvYfIZSFGxm
6.pl1xhkbCSndVLz2oDZ0cZxypM6cvSHQV5rHqghrRlgojDKyojX0dVd3yqN
9c78mPxryieGSkYkLCSIYVhSIyp6v7f6OUG+Nv4QbmohrRlgojHKxoDY0dh6
FTc963ylPhryiyCSEYKYFlFRrASww4ADxvNy77vexMNO3rfI937fPlGmGyiy
i1en4w4w737XdbdLONOlGmGyiyiaHdddbd7o4w4w7373tQimGmGe.nwyiyCW
jFOONOZRVmGmGyiyCakrNONOZDOw4w4w737XdbdLONOlGmGtJQddbd3ndiLO
NOZPWmGmGyiyC6jrNONOlGmGyiyi4w4w737nUx6737Xdbd7vHtyiyi4w4w73
7vpA84w4w7373CEnOONOlGmGZQ1mGmGyiyCmF1mGmGyiyCM.84w4w737v8g8
4w4gdv9737Xdbd37f9737PSXedbdLONOl.v9737n15bdbdz24.Kq57eSd8h6
8d3FsZOEnhSIDvr+lChCz1B2UzLkjn+uHV5ZP.P4m9mpGsvCt1VCB3g1.cHt
.EJeTInOABh7qPfPtMAB6PMGcsGxBEJuPkY31kSbvFMwJtlFqSusvdKfH0V9
Kr3agmrbdPHW...FhoMchMPFNbaDgLro8snw3vniDY3AYo+uNu4Soiocbtsb
El2WkzmVoYcdCb9ygu702D5A1rpKchkMeHTeRJrFcdpmeqx.CQM1Kp9i5909
fHv+MQYd+0EM3sMultasxMeco2HUUaiUsRUfcRwQlSwuyyXksgahR5S+2eaT
x1+Z4LORmdQrJsakDFoVybIR.8dQZTSJm1ZllUIIM7LnkArCmx7Y3O25e0lU
29op42PsoSz4qrtFcQgadqX1RYtr84zocoaS2crknsDGzCaUs2c6olVctst1
7+Y7b5kJZFkPRcuW+t2mu1BQWJXQwF.WDPaA9vdgKnIvExcfKjIvE1cfKrIv
EwcfKhIvE0MfKnA5Mnti9PhI54I9tCbwMAtXtCbQMAtvtCbQLwei.mwtbNbA
MAtPtCbgLAtvtCbgMAtHtCbQLAtbC6xDjI5Cgti9PfAzKpuaAW5JeQ4tEboq
9PJysfKcseQotEbos+7jIJbAml7gcroFmWuAgOM0ySnSS6xc3bhUBWFn1.4L
6RAGXh0K2Y2x3.Sihsi.WHCnW3grdAcS3BAclnafMIpnXr6PuLwKJLxcfKC0
x6FbgHi7Mzc7kGALMlnNBbYhvkaAVZqi2crICMwWifoIXwvtEboKaHC4Vvkt
aTlAcK3R2MJybL0FZG.6foIbA8ml7gP1zTuAjLM0yCcH879l3zq6DPzNDY5.
tbm.hBMJwMbH+nLYWJPGxeCCCAvs.ppTdCUKYWcJW2JfWukoaWknaekmqFkl
aGIFeakj6IX93echddDLNqZ.NAdmUpZGV+bztJeksVffPBborVnHAxxuHOM+
UI4+4khV6fQm41u3KSVfAYQ6dRMejOi32cO3s+xwn8xRKuuYWa0VszaqN8C6
rdztaXb.a5iw41DFOvGtjGDD36OcQ3r6DBuYAfUqU+Kv44Uu+.TDFonqQmOp
c3z1paeSIFcVGQCfrqNS9tWXwFUQ7IjXRZ3p0Q62Wqqo2Zi2FjyCig4SyVFe
LXna87G5tDUMlMtK1WJ4Ng3kX1vZiBpJ0tczqQUaABCf+Iz7xoGCxw+9rKE+
irA7O1Zv+GavAZh9KTgD3zneziWuibNs.FToC0mpv54EpK4hY5wFh0wWNVu2
QqRMp.3NQENHrfdXHDsp01TncGpz0iPmgoCSRR+9pcguctIOC06GmEstnlPW
HE.k3IkLn2hOK+QtVwiuZs0fYNAg6iTULw55kJQBVLhjheINa4KQIIOmj9xW
GhjnFxEXJQ4AYtEWb.+LZx6hMXlljzBZnckNujlzfdHDFKKhXTmnRR8OjuGu
J6c4q6Ctbgkj38YcNhpp0lOpoxZW52a.CsTB1nOW4Gmq0PP7i18svbDGsJH7
s1QnU6jBftDbQU2rtDbKQqv6jOwBR14cypA2FNVrrOtGEKvsXnMr4hrXguCY
gq2Zx1qsNLI0BvjuJ0W6EuxfcMac3QhEfGeN5s3MdudVazn8tvExeITfKoPY
2MI2jNmXK3RKv4yCa1F9xWE9eJ9WSBlip0.Akd+KamSvqeGvilamUl9tsLDd
6psl8nB5PT310om0pdxucM62.LfSxabJLJ.QxsjKv63.VSy4s4.UQa8IeuCP
nOps95z0QvXWWL15cBc1Um1ZwEiipQrI0bUQ6l8zHvXbd6BpUZGnhuuDd9F+
vxdh1sQ60o19CpcBPsP52hqlzOW4Gmi2qz7dp9k1Re6oid1ScxifTK+G9m63
uNSvnyV2yHPJOuy20ZvWE6bAIXIgBdS0PNGe7mlRMAZEmD8iDRPc4pV5dcUP
RG+PZ1SiNg2Z6LOqf8FtGFoaWou8y3r8y2rWJ8sZEC0bEuNd01TgAqBDJCxV
xKXWfApNxmRpJ3rt.1c.V8Y5BrbzkAtADxRh.bQj7vtjGjQ+.wuD9bvYkul0
B1MK6TyA6ff7.cz3kt2.MTSftEri4vLqILyt+vLWlISPnN.8EJNGfOAg9A7y
AZ+Fwy5dAzXcXu8ajAaZB0Ari17BTiOZHvO2Qz7KeHPLWKHleYPLDJ1aYYbP
BHHUGRGku2y7KeDfrdPL8xfXeH33NCCv4zXeZ9FDyu5Q.uLsfW7kAubw1dCJ
0UofWd.7gBu5wR2LysuDVZjJ.JPZdCJMnw9HsIRLANZj3.UK2u9UkNpDvoK8
wXLD+fbTQeobRig91EKk2OJw2eITrSLe9iDknm0MRiY.3EXcChphSpcUINQ7
aPwwJd+wGrFcwxtJbE5kolvWFXoBu0QA4.diW5Q.yHcf4Kz8ceBbIRFvA7IX
97W5NCysrSDc67JcjR.mqbTEHQbgoONuLyDpbEH2qdJKOTi4WcuwBXMwBHzk
gEHrbS9DkjMS4aa8qvp81PIJrvCXaMTzcEKPUS8j5WgUgetDKPe.RDMp4bs6
pH5gEX.EjpFzKE3j7qdDPpVQQ6Bo2z.xQdYAM0GUkOu3pB5ccpOxVvPZhfvb
qINiDsCMJ3BIpEpoUpvoAvJJzOdkhDWP9w2eUYsPPt.UY8YJmiOZ2Fi8Uais
v1V8qF1tG4gY2SaGd7uz8BJDnwGqhBXwdAO60d..sN52Y7KDnA7l.ciW6A.z
5HOvtznzJfIzwp2Psqlyeo6LHiz1cF.yZTeif5FOcDDbYjJpZ7XAQPekw1JW
duIQPnlBiJn8BBNSg2VPj.LEZYoBUuHZKWCCxC5JknRk27Ku2XCPf1zd30Q6
gpbCn1k2cn0Wa4yfqDZYjZPKi7.fVcObP9EZqsvaKedPEeuxu5tCpDsIrWnJ
LFsH6jTYFQsKu6Pqt6hBFvuRnkWGZ42enEFncdLD3ecPKBwqBs4W9PfVn1P6
kb1AJm+gHbt4HNDtj250pvnw7UtSle4cGav0l1Gbkb59903z88e.zdsyli.7
kAsDHQAdJyS0t7tCs5tAA3kFv+ifmx0iZWdugVNWW2NA9WoqGPbMWOf3GDzp
Gm7Et6OJDVEZORaeHPq1xsjKzIZwVkTJsAnhIaOBT76ytt3vMY3G143AYAZy
peoIklXGV7hPgU5QlupR2aboh+fCnscoLUepn0O+RKFcgGEzkJCXTd107xbU
k9BWenkW9PPHZct3AzKMA+pj2lEVGBjix1Zul8B2b9X.28yHfyke3pPKe9k.
l5DzJTBme4cGcQ01+A104+PQXqpc4CAZgZCsWv9BHA7kUBSEgwJ1GvYWWD1J
Blo3Ld.gspsLEqKQE1EeNBp7GymWDqxbCv4Wd2gVh1PK4BSC1ZI2tOVkaLEx
5mcop.E84EMf.N4AgPzRXfegg6IPvseNBIH.TEgb7xhJ1D.HmpGhGGZQOMhA
iQQPTvXnRV7FWpJIj5kHwCnxPZym69pQhKQ5ozaaU2qpNuC49eLTPMOiUN7B
OOdgEgxrOEgUA5FpZ4K0uhpZJLrVtBq5bID+FWfTwlPUKQnGQjIzzMLdeIua
e4mlL4yKS5PEBiS3UPekWo5jQLteyqJvXvh9kVsqJPfAOTDHUWDHxbDnvkDR
Ezkv1LssKU7aGQeTyPePzCE+oi0sK03lrWGVlVvEHsFujkpxhcEmK24prN+k
rT0LrKbW+sol47W5A.xDcRtsQHiPTPbiWxHHtnZ5K6qvC0SgK.8N6kvs0GgG
nOA2RsVed+AVsdy+ohFkuLpTW3pkU85A+sv3M+ohOw1pEbgBV4l8HpMAgTUG
P0y5r4Bq0x4uut.V6sA0lEE99321H6QC06VF0Z5TjEW.NnVeu3TOu3Ol3E8R
bxoFsY63G+kAPNWn6.K9SJFi8Y4MBGLlR34ZQ0GYg5EgzY+pnidUQaXHHora
tTu4RfUcRjwAyk89tn8uqIVSwSQHm2+5tLbErSLR6XC3EwvTsoB2J7w4GKyJ
LmdjsfBLEJGQwmF8H3ZXB.aDEcd4cw2STeHHJ9HCPPvHfeZss7zNNnkNtSsN
LwXpCQ1zL6U8gvrTIiBQnonDQnho10KNzIyPilcYMTvsQp.phH.SEfY6UV.A
tDve8gjr38Iwq5EG3qR7ZYioBvXbHTZ2n3LnH2CTw9nLwmiXkqVOeonygl+q
ie6FXO4H28oVp33I9r06scgaNjDtac3l3sh+nRKnpi1jnZGfJTppX.tg5SN4
RRi+pUrElUawq5fQUcY703jnuEsaegKika9cQ31sUd4ZNXKvj+hpSCw+7wWJ
dSZ8tizhcQeKt78eryftHbm.ElIveG1ovJ+v+TybLugGsayg3JMDyiyViEUz
hAXphKu5AHwAUiP9hmeS1AUq2SkVjtMZS7lsBuEh1jcz4+i2dUzqgBopm5ni
cV69m2oOqcy16xWKdaW7pzMxEQMbs7kK+5DrTJVopArT8DaB21xaVsofNt4d
APdX+yg6jjhBwUzQ24SSSpeqiuOYK2s31ai2r4LrXV51tuYdi4s6a+bp3lq6
6yN+N6e5vF0ceRHyl8jbCP0etvjjBg35e7+PH3tNLKR1dNyAWvwapTYUoc3B
qemu0xcVI3heI5XqrETkYvfMacZqS8r+p8GdtPJ8orn0aEJeN6ADPWWcUpqu
amuM7v9nAaBzpSiU39dYflI3VaDzF1nyGiV0EDSVb25L76OLXS1jAAmirJZ3
f1.xZbaa0Bl0eU1pl+SZx.QNcREnhl8lvAcw+fCFu92GsZqaKId66Q4MMbo8
UTwWVe3tdr0VzMFWE+hT7Ob2u1MdlVqyLtJLKrqIAkbIVS59rGnvZ8QaK+l+
q6EVn+MurSt2mjeyuK86ajypi8+l+1+w+okdew6+xlHu+tUQgd+e+e9+J+he
2tvWyNd0eeZ5VCdTwSAfd+CG1tUfcEW7aeWnjKZm2+8vr8oaxez+4v0B2C89
Gi17+4+cT9q7WsKy6+V3lUQB1ikq2VswhVBNeMdiBaEdXUbp7UN6gRDe4MG.
4KdQXlUXD+IoItAFeXRlyhFiXi4.1yg6EDwCBuBdqHaDHMenTgQsXAcWf7eK
68xFS+YojdQLNjdNl8R5NIO+wfK17A2FKjMF9w1mbXWokr1+F+WODlDm8qG2
lk.bVL..b7C6yxtX8Kec+htfiic6yFOPYqob3uSoorzxyOocblbnAnBGYkGt
Cb192iesm0kpqbuKR7jchS2Fob532WuwkVSUXs3vV+Nif5RktlgzUVjQTf.9
00SL0qCmVy3.yj1d4sEKPJaNZv6NVfZMXAH2+ggEH2CrPO8B5+BYvBF.+TTB
5AprPVU542Q2r5qaZOtNZck3ohjKyufAxpvSrwDOs5rtqcawBEohh.CuDK9G
Yrg4Eux8bJ70KB6UgGc8fxnKtyy.N+A4v3pyWwmWzZHtTNr66.uBFrnmI1xH
hjSh+VzxpGBZ9i7svSm.6om32i+C5grCBJpppbt2yQ1FwmB0Z59zydkj+uhq
8yESumNmXO0Lut+cw9WJvAUEVjGsylnVlHQ4GI9wyBWiIs62BSNDk9Zs8JTc
mBUvGIoadaPBRs2gX4uKqk2RWOeItCzw8WKnYx6+Eds979YOiJp53tej3MwY
Bgh1Ivs8jEQoWt635NNW4QE6VJ6nDLoKDhzK6j30EQM6mZyE6Q0mZASmfgUS
AFUPVu7wEWUNQAe29WBKaJ+AFXHHeWVYmOlHteCoUTeygXZ.E5yeTp9H+A8h
tlvkGrKp6i4b59Hy59rVce83511WeM6O48izuEs6OIKWShGROIq.lZi2X3XL
ISGMkZcdtmmKhgQcLRbxgGvR+..TNCbD.awe06zv4FnPbbb3FUrkNlS4vMGe
mb3VK2BJvgAppyk8A2s.efs5VvPQ2PU+BAp.l5XtDf8cMWBl8GvY8GP9yujj
tU7FzzqfhBzOfV3U.c78J.d0dEzYfx.Nru.4VQDKMwZxCJLOxGdz8BjSX.Nw
+y4yG8ich+KNburqXlzaPP3fnEVJJEIbF9HJkmGvXDczPoiBxCvuSHucdxAH
8+eCgxDHniwUmBXGmSJzKNgg.iNJicWQY++OHWlp7UovS0Dmp3KsArU.dLQV
You8VxPYPEGRJ61GRNIBQMcVu9Yz5Pdfe05356ft3j67AcIqLdhP4U.WVId.
W8ztPipBNcFLopcEx310HIE9fOO98d+1W0KcEHjfiJxvnwOvDcjxB7Q8D20J
.Bk.rPg0QM2fw.fG6XEbAQC.dm3qVmkNHekupGN3CNwWQtsA7Re4R+6q2qBm
78X.wOjtwh3K0D0QNMYtfHps38pO99Kxpbt.Clfhrj6lof+S+iClYVAGGOdE
szWUKc6ZQy53iVGFH7Y2O7ye+.3GRk1+GK.dLs3wzGMRhe2PR+yCxDAQG2+H
lxy+aneaks58FI4e+PRCxIIbwRx8PKllXG4jHOZjTfUsM6.gwxx4SCQtSRw+
fgi0VsucgGK.XUA3Qlxskc3jZnQrciFY28jlDNjmH.e5Q0aD9oQJLGcujbuP
NRn8gJAnJnR5QKEVOpjb+c.tJaGEcBu8HcCVGL704bb.8AfoqvU9ABSeubyN
y6YugBcP.FWAse53Hvv6khgdQlk8Gk9CAJGb24cqh2ppPchy5xu6HZeF8zFk
UQlI3XU5LIwwcl8wRGz8CnX1cmFTIXEefX1uW6OK5Ga24A89h29+0cY+YaS+
9e1O+J7K+7q3+k+kOi9y89K8TuDR7Rj7W5O2.YFJ2+nhJzk2nEH2mTc..rp8
DS7gKgxMvwkczCvoFVgkumXH.ZUaJlHGLEEQyqFdDa63QjssUNlvtGqjkzWc
pEDr8uSNH.euQkfA65JrJnRzwy6v9Qk2+cEWksihBrhyF516B.896uaUlxON
HZHfZQaJl3yOQCpj0YN0lhg.+6NyaUDWUMpScl26el0PfAmNeT7oS0ZZu2XH
DXcaNt5IU+AhmGBc0cGWUzoZc.X86NlgspMG6K6t9BTGrnsE6.aKFhsqyJFB
Ndj6knPaeGwPhssMNwNKOEhKH0cNbSBw1BtPfB6kKRKzF5JHRH7Qb3kU45B7
+fDTbHjc+OqsJbkefPzbKZGw99rij.ezoDMzo1PL79ug3p3sJJTm5rt2+8C6
COoMFCfS+iIFhrusBWMej+.wtib1sBWUpAQIGIX1+AEiP10AEGfyGdk9T2Yy
vH6Zyvx4tUPQd56JaFFYcaFlQUU6PNinCsWXbf0c5vr.mDSBQ2+MCWiq6CyV
zvOfSGtJS4GGDsMkwzT.3DIvU2KL99mwz0vaeX1b.5AbzvUK3wOFaElYemJL
hcjH7Aham3rGJbEgFmZmv2sMBuWqMBiUkUMQH3cLQHH2sVbycKRL60ZKsJg8
Z3B58CWb+MwWP7q1GZlJ8NDH5A3rOX5hM8uqMEHgv.XoGprs.MTSABC8UMEn
7s5CQXqoaVhBrY7VACasdoj8f6t+gEA4Gn5kR49PLYDdIOJMgSvdREDeup3s
Ca1F9xW8Thx.8Dkk822RLtev365Bd31d4ma7Gcery2q4b8Oi89Yh2OS0CGhO
oNjxsmoB9cqBAEKpHusgI5IjiDJKKQWra.5ZPw0dPY2qsZE90vkIQgaWmlOD
j0AsAYm1jQ.xQltfXpgS6jieRKRh2DUapfeB8miij2uchv9zC6dobsUTm2et
97Pdwpn8YwaBOMBpOVcxm+jm1XeU6Fqh2KMmjCp5M0VLdQ6q4h1mYOqYtlqY
tEgmYFwbfriEM0nEM1NVzDMWzAVDGMVWDMDYOKZntHZp8rlA5tl4VyZ1WWFZ
er8rl0kg12d3maYozwZFZOqYckA4A1yZVWYP4XExCZEqYt17y1iKGbfC5OJu
IMuuEscvcvz0Oo.6QJjouKG1C2AUWO+ygN6veThtaKD4aM3YBy8T2QzUHjXO
98SHZKDZQKZcsqf8cu0LrERxiZQi0UyA1d1rBVWMzHj0ngFyLYMaGglAq6lU
P1ihi70rN91grm.FfAlvaXQqYntqY6vEZj155rGONP5F6brEgm0U+Lwd1pBR
6XmSrGEGHsictE4OJh3dZ6P5ZIDZQlBgN3lBgTnIAtylVzPcURaKKZsYosH1
CsCzQaLROtUs1nZ6wfXdBOn2p1l3pwDWjAQ6cZISEJ6YUC0NxRVzhV6nzXO9
4A0dmKPD2hV05t2EjEYKW6MufrHlZs28huEYfQ6cufsHep0e2KDKZQq64vYS
9eXvdtrI0GZaSzh1daaXvNzeXQ6EP682Jald1yp12EYPxW0PsW0PKYUyMBWi
rjUMynUM1RV0ZucQnE4hpAaM2hb2Cped0XQFzg5ZP2hhvNDBMIafrkEs1lys
IQQMsv3Srq0LRqyewtVy5EpIKxsZf908jE4qGv2AUd.z0Uu7Esk3oGP6n1XQ
Z7.5WuV1zplZBSsk3SMPa+7.VjyG.c8yiZS7GZG2Fa5XA.ZaVDXQtTCztTyr
HqhZ6+wXIIdpRryKq7NJE6iUI92Wi.PJfh.gmJ4awh70vCIYsCjxpg+kzjzc
OEu4aQ61W.u4U69oe.OqH2e9sWiSRxeeU9Xq74J9fKJM8EusKbUbzlrJEg9m
Vb7sJ+pPA.X.S9UgAA9.h5uDuDrw2bw6DVLcXTKv.4XFiT9WAc9tPkeg9PLG
.kuAeDmgyeq9PeeTPKu0vMukTzkCk3hJ2Y6tzso6JI9h0bPs22grzivdU5qj
Wr8x7Wv+7eNcS3Ko0Kl+vWdQ7YTCk4SERy4KaBBQT+EF.Hnlzpnjn0m+149f
.nBrA.jrC7I+jvPley2es2n.I4ijOMx2GVPonPLF1FORs2Yf.6Jmfxh+h6So
b0egPvxk7O0D6H6bLhkdasTgEqErzwUwqRokep5Gvh8geKZ0SBIxnWxdJLKa
W7yGxTBQU3VkBwurKdaIc73WhP57Mg7c8W6sjzmCSx0bDs6nf2hZho0eorv2
TshhE+zIo67epzIkuLpzMKTKqd5hEU5x1m28JZs8HQVxksaQbdSwiCWRq20J
ZtlasaUbVmpnnS8zQy837++32Uk9RAW0mOLDSD8GWE9xepGvEm2TwXPjDNI4
vr7m5BsnVgVPykOMXw3QH258p.Jh1sMI7WeN7ku1G4DjS.47k9LFWHPE3ede
HYHXD2JLB6hhtO9sMgIsSCg0VoQ6NW1RXlHRZVoP1pr+lrHb61JubMiGBD1u
nTav+7wWJdi5kN1WYVrK5awku+i8.zEg6D3qLAx5vNEB3G9m5ZsKVmtRHzdH
WsA7mpqsYQkgNlpajB4ApFSmpcRxkbVmLH+rPSvKesvzc4KltMZS7ls6h1KT
aczsfi2tvR7Sm2CVZ69uF9RTmu416KLBSswqR2HWD0P1xWt7qSBc4PEsJvj+
DaB21xaVo9riatW.jG1+b3NIsnnydgNp3KMMo9sN99RhdMq31ai2r4LrXV51
tu4t32dum26yohattuO676r+oCaT28IgrY1SRSE0etvjjBg05e7+HbS75vrn
rXEI.ANdSU2M6cg0jzjjZvq5Neqk6rRvF+Rz2iWk8txIhJzaCLKcxHSOVh1e
34BwzmxhVKz0jc1CHftt7wTutsjviGoyR82Jk3Xjpgsp5XsG+4srEyYPy7Jd
S2M+L58p2msM7v9gviLjZ7sP4GmK0Dr8z4yH2KbkPa6g0Chr33yQVWdOmdzQ
VjQsgiJ8hHIde1eRSFn.vQbBBq5Aj37sRgCFuVaFs5VJRh29djTQdt6Hnhur
9vcENg741+K4+uJ9Eotxvc+ZOMmzZil0UgYgcs8U4RrlpvydfBeaNZH927ec
uveleyK6DaWLJ4276R+9F4LvY+u4u8e7eZo2W79urIx6uaUTn2+2+m+uxu32
sK70riW82mlt0fGU7T.n2+vgsaEXWwE+12EVDh148eOLae5l7G8eNbsPmn2+
Xzl+O+uixek+pcYd+2B2rJRvdrb8Vb0MjW.NeMdiBaEdXUbp7UN6gRDe4mQm
U6QbSlvimmj9CTMZJMPZeJm4rXOg01mcN6c3dAQ7fvEp2J5W7jlOTpvCfXAc
Wf7eK6806OFvhFOYdeEUty2cRd9iwno4CtMVHaL7isO4vtRy9s+M9udHLIN6
WONjPDfyhA.fJwaYQV7Kec+htfiiw7nwCH8qUuuSoc+zhOHT63rjjzuq1kak
GtCb192iesm0kDYsOaWj3I6DmtMR4g1uudT.poJr116qemQPcoRWyfSt.d91
nYLnpI4V9yadGlWl.SUiFy50EATZwXZyHeANjiaPV9VGffqCE.F6gyfsffn7
bDDmXW3G38.+zSiVcq2V4bbXuFi2rbGxnxHbv.ie6UkLXWo8yCzcZkGB6Y.Q
Tmg.uifezU.PN2XYKABoifgzc.QFNnHcEXjyCTc0.jPUAFAjymyHp4ug+4lS
ZMDIZDlDcBUxfgKQyPlzSXSzKzICD9jACgxfgQYfPoLb3TFLjJZDVEcBshIg
WomPrLXXV5OTK8Gtk9C4RugcoqPuzd3W5VW0vggo8Pwzb+G00K2hq10zOWp2
+bWzNtKZICP971w6u62c9S0l1ZeeoZZJ.cxjGLnEm.aGKzmV698Mpwol0Th9
Lk1rEs7tOpTAdpGX2hSme9Ng9khvFf8obe0vt.UbnN1K1m6.X+SL+Zf6IJCd
E3dFxhw8TWhyWCTOFETQoiZvUaondhEf5ary1NwqEHT0uPzxedevqcrUkt2t
hMfxHpMC+3QYnGMJqwN+pKem4k3knOOHTcd1Ap4fC7VgPQFKaO7XLogJ.eKP
Gv.TG0biA5gzmBQ.pAFCgesjHbujH7HQhFhLgn1OYRrWYwFGW4sOKcWjNjJX
NwgnlsdJmEucBSvQfR0qfDX5QgHpIY9DgBIaFq1NE5kzjDubO8+htd5WPiTm
crO31RiHin9tgz4gGbWYmCg8mKksSd9zhn0OeV1M2jA3QxNH27gtbCk5TUbC
peNM3Ffe.3FN+7aFxMT0lKud+5AFoW1LstLfyrcIpBe932tDyc1hIigqDsiG
INy12i4KuKS6F820NlqNyJ9sUG9HsCFYFI94lIlXCa5LGvGLcITzhiOeRRnb
fMbloUDAJBENFnLVhs9MwLHoA6BjFnAZ5lNjFj8SZdKLKROAmBpCIuZdf3ql
7fd3Q6DCse5y9H0V9TgAPe5DREeFl8GwymE1Wkjpxe2ejOYtR.pygP8IWThJ
w1ceoJDw9IQ+wDu8IwuDokcIreQV9wNcDtNNI5Z7Yndhj0Xdq2jx0VSKnE5W
yIZXiFtPY5N0VeLyu0Gt0lXPQhQ0RiLvHNxKEt5Xop6nSxtgKntvE1cfKS3C
a1vEsV3p43nqG3B6PvEy.3hAmlvUtdCna.WTSnWH2gdQMkdgbC3BahdCGR9B
MQgKnIvEysfKc82.6N9QkOfIzFtvtEboMen6nmGYhd9NblzZgKs4CCllv0Dk
Mzcrd0b1tzG0xcrdgL1KJn6.WZKcQtQzqZUde0hwc3z.5e6ZKst9a3d8Dovy
a7d0gqaaEOKa8GpHv2aEOiBx6FeApBI5FTvy8Vu34KvNqYb.5tUc36+Z71MB
ViCOOXSXPkaVp5ci6+fpP7ZmwRmUJdvbkhK3vU8JBHJmV4qppCFIXtTwmKU7
4REePSXOlREW6DTDAxUDyBnc2vStKInHj5LI0IT0i9r.bFwxSpS0I++hzvv2
i2K9qzCaxh1c7EzAYqRYeFTUov9717X31k+FWV8nAwKriLk4KPSNQeFmpxv6
GLN1nLfI3tfpOr9YgueZfIUcbXFFONXRXiuxd6RpZj+DsxQ2vO3ywx91g1jM
qzietnTE7UsXC30REP2vJ.gZWEr.kj25tHjGrsMhy3N.hpxrvGNJ6gWhG5Vf
VL019UEg90ivtk0mEzx8vJuUv5AA.fNpEUSVADAtjyvLNR5D6CV23fVdPn.K
.OmtI5rnANDRlCNhjo7aKRFYjCU8irIVQ+F4Ycz6By6jPX5It4hNQO5dUiDW
B2rMr0f+R87hhmW7hXg55iH3fym8L2Y0ECUhIPenEfe+hV3WJNW4KlQbI7K3
dfeaNr.NCAqU8SEnZzyAmvuW+FxtkaE.x41.xUKcCXTdyzl.Oo8EBg1M18tv
51X.pzo3u.cA8kHQr3uP0MgQdjgL350RvftBiLQ39.RRCvNiVB5cwg321+c4
7APuRgTsStJNJTXZaDQg5vFGq1XF75CH1.T.tc3kr5e0mBg3mXxE6OAyo2Ru
kIlFmWs2lBDcWzu77grriClwdOjhB1cB57shPr2sh.g2kf59ZRpXkqSTg.3k
PBxGgTC4oyzFCuuVDymXKYUlSlZpM4BKOwAoVTanJR0lVRIGmUWyjwZjQWne
NuOKbWl21z8wUFLs5PtImh4Uwj2zRap1LWRXhTzo3oAyBS0IitPioWMdrzmJ
WQFRQksUYHemRFBLaPpcxHzkHikGr+LY7bxHxATE96hKGOi5SoqpNjZypCwt
jbDxGLKG0JYD3TjQ7LYr8rGB3.pCMXCVkDZmw4v.WRLBxnyavpUwHhCHFIKZ
Du+r8+4FPncEwHFvMhVTlNm2opxwbGbOzAv8wZEYA2x1AyF1JyPGs7gsqLhq
upoE9ssgIdyGkOVwLwR2Bxnf4+gaZ+wX.m4.MC6Ca1F9xW8h8168Z8+UexKj
bLAZn9n7iQzGOtD4S8fgANXVv3zHsKpyLgSrgYW6ezKKB2sNXwhQUNZ1Uc6q
2cOj6JBfPuTiqfJKbW2IbYwJZr8FbdhyxPsRFQAtvftNbU7g8FPlcFgHfCdf
hyBQMDh3N3AJNSFaPFYNftveajrcRX.Y1UzEZECz3ghAxEzMOJqYOP0pFg51
wCAgcvy5f3SlU3UiLx8mjm0g6nxCLsh2tyf3g9Su3sWS8liGucHy8h29i27x
iwHRfqEu88FGqcBN3Xr1IbxXSa0ML692lnre0gSG6JyiuWhEdtG4s+6wai79
ZzulEt0a+K6hjMo0s53eA.Ickm.NsyYn+U6JOsWhNcjlEbeVy93GyEFKbAFz
ewINS6f2jYwk6LSBLYR24NCPBF2jAV0PCnky06uNd01Tgt58kc0CoZGJtnjy
UifxpWnRS7hGiRaQWzCFSw0DSQ4WIlxmujB..L7HJpvf8YWUfwjOtkhx70Ek
QuNTFU5rJGRx8aUgjJNKxythhJ+Es3JaCkEnKJibcnLFDsjUjuEEHIFpJWV4
UJTV4iqpxaKDuQ0EugtN7FlgVhoRdsSJvH9UUmUbkBuIebakUioKJCdkJzDb
RAHepevIUXPzQyA1FZgnKZAbcnETPvRtOkiYGQKH+.qEs.MYBFCubzBTNAID
xWXxQzBjVUWd4UE0UFgYsl+P5hxtRc4PgCARkyL+SHIFpJJq3pBTFmXsnL7X
M+4FR3SfXPPBJ3DWFBQqfxJuRoFGgCrR03FHWxtR2Rgz71JIQM93QJ03Uufp
l3LEdvCAVGlR6oT1UhnxGANk3FE5H+BKBcPMYFw5NibTSFcf9ty.h0jnOLJa
SmvPm1Yd8K7qHjmegEwUiMvlK2+Zs4VESUXf8rqT3pBys1HxhOVSI5g1eNfT
AYUtGf5WwK1ntBsx4VGxR2sKgBtRQP7ITf7WVKBQ2sbitROOv7pbOEacL+JK
CgPFqw65PHDPUNjhPLXibH55MeGCa0tMFet27jpbHnppWPEar1W0XSoGuxxP
U55FOjcsauVgpTSxyhcOmekqhPfl5IWGXjNYdvzBbke4fKvlvUHjQm4V9nJ9
JD0vj7ia.wTiMGe5wqrJbhISaaYao8p3fJvI3hZK.VLQgpdEpnpNP4xa4WYU
3Krw7PWA9RvxligTysNDfz7pR9qJbaVD9RNtJLf+hCtRYNeEqDPcfeXRdqOO
+RqBo.LBovuNjBsPcrZzRRwviWYS3DlQLJzfqDmf.KYpYSPwopqlSrmeUwd3
gKUOpcoLRgEzGmck7QDFPgFTIbJgTXyu1ULk.nxao7qrJDlImOiRv6JzdWfE
jYP1o8sW+Jbf5HZ.fb7U.vBwWlo89ZvWnp3KYylGUdoMgTLxma2IjvPS7rA5
NIZWWNs1kKaAiBSLJnPZWMr7peExupKaH6ZO1J7EV6cYekaIPpHTYHFnL8dx
xLfYgHFjQtn.tdysk7NUuz5vJPibB4prohWxxmmQHXk8IhQ1UrF5JVK8DUuq
IvLkd3CqtMwZWUvEUrgRqiIxj7q85vUbdkMCUbBzW2lg79C+TEbyOcBJC+Vz
pmDK4nWxdJLKaW7yGxTIIeK3EIz9xt3skPasxHPrVdSfLZ95ukj9bXRNZOZ2
wJEn1izdgIrHK7s8mMjeOAWG+qSD6iK0ypUiSfv.0nQkFpn2t32dO6KuGtY0
WpUwgsUGF7hzLglyGWvTelzd6.YmEhS2UWX+UbQsRmnZEr2YcSbqQjIQupKd
jUjfNpcn0dgM8.vi05JJOH73VuWE3pnc0KLnVabSnb0GPhJP2pHWd9DF65vh
U6uZZTdOedfR9oV06QZ.dQ65RezqwIQeKZ29B8QUOsjEga2V4VsplWf7+kz7
Ob9mq8xwaTubsRVbwtnuEW94UatpsHbmfHjIn.G1ovo+vudYKsXc5JgxuCw4
Kye5SsoLV9EbrGMnhvLrPPnnSw2vh3hmeS13GJz+W8Foai1DuY6tn8xZIqTg
csGYUzqgGRxdpF+rT9qim40vWh58Co6p.awa6hWktQtnZPmj2p7qWlXZprB8
b.M+o1DtsiODkErdd.YCx8v9mC2IIgEkqJplslzzj52t16WpDq3Q1FuYSKX7
rzs8+.4FT5+QdNU7.qG56I+t6e5vF0S7jP8Q1SRK4Me1vjjBcJM+p9Q3l30g
YQx9YPN5.T6ATk066BC9oIIMvGp69sNt6JgjxKQeOdU164ewmyTcAdQbxW.M
bbX+gmKzb7TVz5sIxxVuwCIv.CUNfia8yCVpQIcxAbksOkWeTadJnhPVvH3L
IMbkZnUNHt0GqBWGlmugLFv5mT8LaXD9tK50ncE9CK1oxJsZej9D04aA8Udg
X0ikZD8AhmaqAZnx9ZbgceqdTHycKc.Te0wUqhjm8qBP3O7iG+t+kvjHuu.W
JLkK+OcFp2Td94EwUsnf.z0hnY2xw488QAvv8DhMq7fK0B4prfwKJwLqdVoe
erhoaGWIVq9rBUkKTLLPgmuspIvZ1lTJ90vc.EH5tnVVsN0ZtRmmVdbl5fmT
d0RuWshqZHlFcZqx9MVtHXUmbd7Ls+qqix1k50bfn0JJlp1wPtCWpLt5ApRX
PCa9VgusIw6y7v5YPS44.QcXEDhU6PKzpD+g.U9.hw3RI+Gj7eyghVSw+swa
95uZU3u.UNC93QeMGFVMQe6DqcqB6wU8iPK.6gFF6EuYUzOrKzmJhTV.5COL
5K68CqedgMLXIyUhngpQHnppwhCswRmJXtvnHLW8iNljJNWcW.uSc.7t1QFL
.F3LHdWnA7qrXnQDYU8v.m.uycg9.dtoFMrehy60FNAd2FZC0Z6XBAaIdES6
MlB44+h8smBLAZIXO9fXOqaKEHhkrkBJaPj28KZV5GO.pkrkBJcPzm8sgLls
DKExfHOma6XDF1UbRBOg1MFVkuaNAZeRsYLDm6LH9ozlwf9DmAuOk1LV.zU1
KF129mhEYdIdIZ6wBTUXDPwZGCk4g2XNyRtIyZl9mxHAtxXFA5g7vdDOp1jJ
Tg.BOXDHU8m4Nrav7DYHRGAX+jtWRSR7pD6.M7cU0rxwpbsb7GKP0oajQlt0
K8ZvAq94P3v00VSxymVDs94Vpkt5L.OH1gs6h1FsYk29rzcQZxLjK3p3C392
Vtga8.XifbIIVc20CkUQfkwmPBr3YAVCEXkLCSIAVpKIvp+9kKZkYJQ11qzW
GUjkMKxZnHqjYXJIxxcIQVsizBGU0qX5DRh0eVh0PIVIyvTRhMvkjX0MFcpp
dqTfMX5HvRAyBrFJvp3ElHhqTnCDI82hxJZ0Hdwq1qSjFf7ZQ2kXwAUm5.gQ
nrSu7jdneYtTTDiVUqdonuQc6DSt2S.ZpoASnktFSapI6o6wje+N5fLs7Q0U
mjQcqV6lL42pyNJi56entJi5iu8NKSAK6Oc9W3w8tj6HLSURSEsuOXKMyvt6
wLJJ6f8Yl7Gq0dMSCB2v8alFOTu7c802YNd6A68LmdxNauLJTw.8flBAv96C
MJUA81KZxejA6GMEePaG9gFtuzTniavdSS0EuN8mF0y2YOpoT0Zu8oFkCO80
qZp7Deqmmn2dVSwSzceqQ8.s26ZJ.yV5eM8qSVu9XSIVpYuroMEUsYqp0mSm
jSqyPYpx34Bu15NC0F.7GxrzvNGbtkDHpsuipYsVy7zsomyMbF3ggnQblkhn
gCgnajRuVMdFFXo3YvP34Vx926LltU2cOKFAuGtoQQZOj1E0TfW0S+aa6FiO
w.2xSLrSHc5.bkl5Pqq8pcAlEc7U20VWbbZbohsORzX+OZz3Bkpejnwb2mFm
0HMx5j.i34sCdHWUoB36GEFNdTXcHqro.YknIYEFv9fPVoSAxJVWxJ6iBYkX
4jUi1ZBjAsyslfGZmIMKrNqAO+d7lrNQSs1LInUNlJKhHLX7NZVfdNtWkkjh
ORdUhYev15PoRuOTD4Ig2HHcovX5GDuQv3o.cEZl54O.jUj6SVeKLKR6c6WZ
3EBTpl8GKRKZPRKcbUJ2ahIzfNCce579nDubGA8x8I2SclAdxinwqshOaHga
UwCVHiOFr.rAYAXiGKfpQxO7uGj0.MAbKSU.o4XGy3A.ApQVz8SK.Zj0BLH4
k39j2+Xh29j3Whz19MuRcuPwSXhqs6UVNxyHh1P8KHSIZfKxkqgyX1Fgqavb
IPm3WzLktjy.TMyYltlYncPnZL6PacL6VlSQsMBZQc9F5bHhVjARcLOPuXty
qEz8MEzgSFPmaJnClLfNyPPGOcn5zOtfNAZHr29Pk1Mg8OtjcroR6SGqaXik
1mNfN9CLGO5CLrKAEhAvdvzBzwF.59SKPGY.nymVftQB6roErCMA1oSFXWF9
ViTzwlVftIJ5lXTcSTzQlVftQB63oErajR9oylXPlt2UzDRS2EsKF3zA1MQd
Gcuz048GNqwkLN8Ekqp.dGpz0eKI84vjhx083wRYR09dpDgs111xtnWi1oyL
OhjmEHX+7SahO5MjhSraO1N5B1F5nK+Rb1xWhRRdV1mFzZdXplfsEyQD0oCB
EDIZCPsRI0CLYV19RZRq3+8QIx9UQacQj9aKShOvikluO35opx49q1MfjFon
2hcoeuU364zcqh1IVrpN9wu2CrD84J+nMQf3MYQ69VXNRldNn8stI.8ziLpy
EhboVEewzFch0q3QfoXuhufVMwaV7PWoI6Uc5Uqy.PM.LQaksP9be1yzFioj
aXB0YLg9NkPqlML9ffZS3A7DRjkNKxZnHqjYXJIwxbJIV8G20fpC4Ae+IjL6
7PdvXYVvjZHO.INkLq1SJc3TcHO.mGjRF2ApgSpg7.D4Thr51y34npS4Ae1D
RjctowapHaAyvDQhMXJ1z3gv.0tWU8rb6tqw6O4ZZ77ffIdSimPlaZ7idSiG
SNMRVlaZ7yMM94lF+bSi+ScayZtowabNcM2z36CQO2z3maZ7iWSiuMmcGehw
bSi+dQiaqowO0owyMM9oOMdtoweenvyMM96bSieRRVmaZ7SRx5bSietowO2z
3+.0z3m5dUN2z3+HPjmaZ7SRuQlaZ7SSx5bSiejHsyMM9aMc9l1z3GCVf4lF
+ih0XTZZ72Gs.yMM9GRSiehRbmaZ7yMM953z4lF+bSi2HPetowO2z3+PA5yM
M94lFuVj84lF+bSi2og84lF+bSiWCPetowO2z3ceXetowqGrO2z3maZ7NOnO
2z30D1maZ7yMM9I.rO2z3qsN+n1z3GpqfnNGXYUm+axqWbu2C2nU6o.4qRF.
Ly9aNHNPaKbWQyTRh9+hXoqAAfle5epdzBO3ZaMHfGZCzg3BTHoThADHH0uB
AB41DHrC0bz0f1vnUTdgJyvsKm3f6k3fGwFqSusvdKfH0V9Kr3agmrbd.h7A
..qQVT0ZMgqZlxr9yvgaiHjgMsuEMFGFcjHCmg3q8g1dxKTmdzk6gmQUZlrB
s5kWWQ3r0sBzs6fc6Jn17YWLbY.X09QwakfUGTfN7fG5LvEEa.bQ.ssUF6Et
fl.WH2AtPl.WX2Atvl.WD2AtHl.WT2.tfFn2f5N54IlX+h36NvE2D3xcb2fP
MAtvtCbYh6gxAtjiXWNGtfl.WH2AtPl.WX2Atvl.WD2AtHl.WtgcYBxD8gty
9T5vkuN72v2sfKckunb2BtzUeHk4Vvkt1unT2Btz1edxDEtfSS9vN1Tiyq2f
vml54Izooc4NbNwJgKSB2qyrKEbfIVubmcKiCLMJ1NBbYRz4gH2QcH1jvGhG
hQDZOvkgpMbif1fL5vubGiWH5XxEZQvEbhBWF4zKwsfKiB1qi.WlvF5Vfktb
gH2wYCnINQELMAKF1sfKcYCYH2BtzcmxLGS7R6HXGLMgKn+zjODxbK3R6Spj
LM0GBcH8g9l3bn6DB.nIapD5NapDZTla3P9aXRrMvtyIonBal1JDQNjldiha
CzgBbCznH2fbmHsYFfAQNj6TlDL.nCo9vvH9dKfpJExa0h3UmB3sB30ag61U
Q6pQA41Q8.0Vg3dBtN9WmnYGWpmUCTm.g509TV5aukTsgJ2ZYABQ4MR8fhoj
mZplTunlZG.5rdYEeM6D3grncOolGxmQZ6tPmFtG3Wq9x.9KFQz05n86CqMa
PNULe.8vhXhBKp9IxbrH5xvR8fhXiIJpQIOVc1L7r7eG.OQ8UbY4EgJQwrgt
NlsNqsQMa45ci5HiIp60jTwJcHzCP0vqymJopKtVzyPxhultacX1Y819t6J1
sWJn8hHgA2Kdv8uDlD4AV5Iboco2WfKodnk5gxA4C6WHjco3b1HK4BC32Kka
6yR2N.VhSyUugT+hdoHIznij7uSrVBQncodP.PK1ILmHQTr6MhZ.4vfwDYI7
jJS3mjV56CPktUb8NWLVnCzYzxcQ6i1jk6wZsoPZ9hFC3mCA2G9tWROrQn71
6mgk50zhAjvBT5ynky+HSQ4zNQ4jZVO5o0Azt2bUl5M86bW0RXudqC.ep0Ab
iUMljlts1PqnmoHNjj2ATT91XCZGwA2KKHvAYJK3JUdIq1wA9VggLjorS7Gg
XAbfCZvgyWRQ9AXnygegz6D9sOWFie6OMDFVfOgXFfvE9IhTy3jKVsJ7VfgE
.wFwizId1E3ik9VplDiJbq0rEZ5n5G948il1PEDdt1RFS44Q4OMEQ.FYDAqZ
SWp89ISEDzwOkl8PlS3r1h4XELW68LlZ0gntMJ11CxX6AXrWxroK4lITSWwF
MvZVyTMWxvl0KzCaM2LaG09D8eXq4VH41OhF0HMCbgEM+7bYoq7ohZWqYjFq
YLvdVy.ecU2AZzFnefqZl1qZnEspIZJI1F78XW05gqsI9ZntppC3VzpFn8p1
d79.oK+g8fnaC80mBDaYU66frGsIf00plYQqZl64eZadvoaZM+fWzPWaQ6fb
GDWb6KPLwEW0.csJR4N3hFaQlWzbIGLVBhmBTVdL85HRYGiF72WKbgfBnHP3
ovwIViuFdHIqcXTFC1WRSR28T7luEsaeA3lGXwS+3r1M9hme603jj72WW4KW
YTCW71tvUwmMWGVb7sJ+pPA.gIP4WEFD3CHp+R7RvFeyEuSXwAvpVfAh+gSJ
+qfNeWnxuPeHlCfx2fOhyv4uUenuOJnk2Z3l2TQSEkG50J2Y6tzso6Jo8h0b
Ps22grzivdsbTrVZHVMb9B1m+yoaBeIsdbVCe4EwmQMTlOEBBxW1DDhn9KL.
PPMoUQIQqO+sy8AAPEXC.Hnu5SBCY9Me+0diBjjOR9zHeeXAkhBwXXa7H0dm
ABrKAmSj39TJW8WHDrbI+SMwNxDTRrzaKd1KVKXoiqhWOlomke.CkgmEbqcl
YmskUmCjQmsD58yyjSkzc9OUpjxWFUNg.0x5rCo5v5mi1U7Q15IjPxOYDFIP
kwRmeLyMWXsdzS8kQXsm2WZjyW0N1YtJobLE9qdHcmN2n+RMvHPd6GYzPXDT
qPMrKntZ5JTGfY2W.l5ydv.LcwsfCGwDDReglFrCvli.7QjpeXy1vW9pLGex
+u9PRv7gPAUkbY9AWJ9o07lsIN30jzv7j14r+nMTBjQFQTxtzCaVIrazGtfi
D1DULLTf+Rp3u8EdYPolhULTxnCvGOl5ANl2QsOuqxUAv.OVMAPF7R.45iAr
SvLdo2KIwB4.oOUodpTLbuWVpW3pUdqSWEk3E8iv0ak9I2MxQl.0Lw+fXRiC
4bETlLu8T1I.shlJcgVeYFPS7AaLsDHjyVoRU8NgTFGuDWH.HbWKGTQxLOsO
0llCocxWzo1QB3RPD0SfjSXBgW3OuuW4gpHBwuD9oGDvjZEfWHhXLTHPGSGg
16s+aq6iomchoGCIGYEHnQkUnEld5Xp1amPZecROvI2GsLGzjapvOOgbIWJ2
NXDHxDzXpAjtzac319XzomL4AEjbeAIOPr4vautMXvXBnKWtrWM3nihyhsdd
DJUoe2MEJYirAMcgR3IZYQZleKgR7XBkHsIk.TNPxtKjRBeLARnt.oOMGF8I
2CXjBFWBoW1tv3M8o+AwNQNELp2O8OT5X5RwKIQg8sWTBmeBNk4jJiwgPYo8
7.cnfAFQKsaUz5urcWzp3Wx5i6VrepidYJvKBZNWxnStPTAdDPEXZsEbztyC
42qwIQxncWDxuxbdcQ31sUd4ZwzVf19EUzL4e93KEuQ8RGyq3E6h9Vb46+Xw
vrHbm.skIvYG1ov.+v+zHkbgbuK61bHOZlvepdPPWTsNhU9x.Uw8fSx2dGGW
MSyW77aIou70hSTn7ES2FsIdS0pXp1sKHGOUK6uQKa89uF9RTmu41SK8EusK
dU5F4hnFxV9xkecxQPqB1pBL4Owlvss7lUQ0siatW.jG1+b3NIsnH7NniwiM
MMo9sN99jSM2hauMdylyvhYoa69l4iD4tu8yohattuO676r+oCaT28IgDZ1S
xHXW+4BSRJDYq+w+ivMwqCyhxhUj.D33MUg3588urKMIoF7pty2Z4NqDrwuD
883UYuqNaiJzaChV9oXe2S.x2e34BwzmxhDaeW.E0e.Az00Qec003weoGTqh
lClKPTV9LHKo7Y5qH45tD4P2qBnQnwQHZtpxtV5LjUjh4ladHK8giew+eKJR
oZyE3aIN9s8eOVfyPCgEQpIbuph5vAEbrWEu5P8HfX0oaBu7FDP2nWx8pFEk
QPDKCGHmxfPnP6IbIjDfoXuuPIKoDT.B6wAKQHnO2W36tfC0GhYdeggWRC3.
XfrhtC78CBD2FvVBgTLUbeIGM26KfkhsAD3yj+ECQQAbgRUJG.pyCISFg7x5
sliFczWQPpNkgJl+PLRQ6Q1do8gvOdMSxNRR7.RSrbsPPU3RubE+5IYXHxsr
KkzaURaQV.1OXgsUdXdHkusNhA.f0fhGpIDQIULvRotA9U11RsEVXgMB8vwX
jZ+Y9NBN1+wii+iId6hdaHzKW08Df31iq+0as6JTH2qiLv6keh5TAwJyZEnO
Z4OezEPLFZRADeKwOENQ+fPP8YPGirFbDgYkLQ36ABRsdFRYUfJar3rqCE0s
s.PG3.xCuR7wZWV6DqofIwHSVy1Q5ni0tBbrm52S2JcBaQUhu1kRKytVyZwZ
XQUZMT6RV1dvyPSvy1Rk+pcMRZQkHoCVrg9tmtNsWyxf3YI5MfLGjeVWzLbz
pjroZswbP3f6AcSJExoDop3TRpkhBgIIoee0tv2pllIlkpJwYQqK7idQQ9x3
s3yxeHOErieS5WAB39x65OeVjGpEbxKJmXxyt521kdXqlI8QkTZp3jHXWd9j
pOZwvji4X9AKoOkO8QJbYzXJeguElbnZVCTS7526Iq5vt9Okf1HkHRCkvU0R
DIYx7JIDxDQh7HSDowrPORhB2tNMW+SOE7.Nu2SWgSjCMsnGZOUyX8U9OM9+
VwFWBxn1zYnmB8oi4xv3WFTlW7GPzHxE7VXVjGo2heKWyiJqynfwohWHZQ7a
C5CvKtMU4YNTpB9l8V8aAWDouVOCuMn2u.5uNd9qs3UF0BXUVEORc+dfAg6h
j9CMNkzmYZzG0ZXsrqkC8vCxpqpfQNzTflZl7bOsd7ZnAxnVxNCTKKX+79iO
T0c4a14vuLBeK4N8Xpn9Ol3sOI9kn9osES.gfi9hS4iSMY1q9p1KCqQD3+WU
CBBLdXC2EEmN893lVmJyFUizujtQNvXD.86Blfv8u68bZZeoNNDRYGKWq.rJ
KlniZEo0KCQWx4WjFdIZXPSXABS2bN.l2mNT4pGUc.Qv6vVlvC4OSWHDJoAw
Vly0dqByB89KU0d6MCmUiKQ0MGJ25NvlQZLdSc9xz4dDMgHigSbXR5a5h9n4
JeX9ipL1fXnNU+vFSeoJySmuuSrEes4mJ7y.eeJI51wBAORkvUUI4iOVAdVg
h3wzeKoBKkvRg9J8PID+SnDvcDkzsIavcrtwENeJarTExJL+SUz2suvwQ2.c
C6hBWoq44h5WTR48QOP0C3Qkdm2sD5KZ4vfkzh1rCQN2OK6ZJfaMAGOlFCV+
iewKIde1xeWTdiBaaRzO7P8EIU7oHZSD9kWB2EIY+8yXY6JBunNoRNjK1N1p
dCpDw+TLjqRwgpBTVn.rBjuM7k3MuUE7tU9cUpcbezo9+F7zqI9rEvZklUXU
Gn0e6eGq9himA.dLaWE8qcEqFJXUpZ1GZypfBG2FzTVzfZavrSmMGQrgnRdO
931YVLOr.iY66ZcxRs3Cp0XV7uetZztaFUQ.4OP8LDTgON+XuKvJsOadNAJc
z0TqcV2MOm6EqiWsMU3q39xNBGdIAx443KUEMfQpfkU+JnpP3.vJ7ZAUvrMN
67FzcsgSrFvIGYFbRvpiyPwjPVhJu5VA.nA.f5illgA.FoB.jOPDKbv3lBEv
AfBHlYFXTTAMJvP5WvsjNfzQfAeILRP0DDqxE2h0OTGAAhYq+ZRvEGBlRBu5
EXXNAhc9eq1iuBr8w2Dn1WCflYnvCDJ7F83VvJBZXiW6F.LbcfFtgxPA4nek
8tS+8sX0yzkADa5pWUbh9nx+9Vr50xd4EYGABqHGjewsX8izPAL2P68DR9Pf
DUTPtp8kU6B0oiplJh4Wbq.MjNfFz.SKTkUcE.nlOy2T..qC.fLvDuZ.cV..
PPvMkDniwEzPFWFw0iFKGhgL6XN8Xq7iPQJqbj5uzM.0dl0oNFiDnqwDFScD
NE5gZboJIO.9fSwnmcaTxxzw.m+U.pJONZ7R2BPQGVP10.KX+FvB1+1.K5X6
iZpqu9rJcFybVNZQ2zp1UENLJKaO3w9k5swCElNZwvTC2iB6jNBDonYfe1Kc
KfEvMllcOoKZXemZZjJJbaWEHBFn4UpTAAqx0KF8l.YT+a.Uh4epmyhUIy.S
kiKmc08iBR0QCBDX3NWDPCp3rgTJCO+UtEPhN5HL0yBU5whAJmkqb0s..zXe
.ltMFUKhIPs7C7Ku3Fr5IHcUQafqx7.3QSnxPXJEQPAmTQyvONXAZHuTMXQE
eLenpSIQuMNsQfZvQgMzSGRvIKMj.RIIA3W4kdTvBhcEvhuJYCO+kdTvBjgu
dfQE9k5WQAp..3epSKm+R2B.UKWc7uBinEwr77W5V.K5nd6xMSVj5xMdoa.j
f0JdeXtuo1JUYpbwAzU4paBLP0BFXWFL.qAC2HNJL8F3hY0cv7+q3t5xswAA
B+dOF6AHZlAiAND8LrJMJMpRowUQa09Tu6EXvXf1UFrJqyCQdPFG9v7yjY9X
FAn+hZjPeVRSzASgjMW3+nsNHYsZxzfUKGExb0VruWLKjIoWZxPUYffFcyRv
upiLG+FTGlE1U.fMC.ogOxLdy66E5..PuMZnpVopAHPFE2pC1zG3QToRyqhM
JiR6H9Z0L.qiOoNcUZuzNiue12exfKZFkQotguU8PPiV.fHdUg.yngwnT2fv
5JT2LmYHdkMlQqFYTZmw.tULHfPxtqWXnF0.JGvsNFR+mJy4gLd1irWy4qxq
Yfp00z3gPjojbO9h5APFpw4xHzpZxn4fRJHWRMVD3eXByX8E0EzTkI9FZTOS
RpibiSDR+NkE0CzHF+IbMaoinXtVMvmA1fhNdod.gpYdE17VGJ1Wm74uJS.U
rZaxnvdAswMsoHCFhOVqpNM3pp1ORaB.yG2onPO..TyrCSyakjrJEaNbhiTx
kRLDSXMqunt.zZXDw1+my7xykkzCfTCMlZkXGFl1arZwoz7.gtAh02fYidQh
cEVfo0ERroZx12oJS0vzMuHWb4PWQN3pH+a80bu0+NuaUlys7wEMlh8ETbOF
Gy96qDfRPRvQl48Qd3m086n8+ooqS2+8K2bs+yImQkkuRGt9zkme45UecJC+
ZyL0+WWbgkqkrxmKv9Ftc2ilL.ZFcOZAXzNMXbWYKBy9kB0BC6pxMFi8iZX9
Jy2VCZ9GRiB6DN2Mqsp5I7USiZMYJp1waWBocKURti5s6SuMcOl+wNHLw6+8
+LEwXLD1EiVcoAic6H1Gmtc7zzx4V33oS15k0knkHX7MuAhF3qD.3s6VRe+4
qmesrpJMXPFZ.PnleJB6N040MqR1NAM4tSRqwva.IZmXW9tNqVFaO2fv24qz
RohuhHbtY9vRuf6rSYapkwEC9TdM2m4Czee7vmp9Tw3A
-----------end_max5_patcher-----------
</code></pre>
view raw LeapDAW hosted with ❤ by GitHub

Thanks!

3D audio visualization with opengl

For this project I made an audio visualizer that manipulates 3D models. In this case, when the signal goes above a certain threshold, the model is stretched in a new random direction. Additionally, using an fft, the signal produces a color based on the loudest detected amplitude, with red being mapped to low frequencies, blue to mid and green to high. Here is the max patch that accomplishes this:

<pre><code>
----------begin_max5_patcher----------
3692.3ocyc00iqhaF95Yk1+CnndWmcJFrMPunZWscqzdc6Es5npQjDmLbFBv
BjyG6pd9sWa+ZRLL.wPvYxEmSFCNfed7qe86G1N+w2+cOrZc9WXUqb9qNev4
gG9C9UdPdMwUdn4BOr5P7W1jFWIq3pL1myW+wUOptWM6K0xq+wj5m9bR117O
67iYwGXNUuDukcpdEw0adIIa+ykrM0vaDSeh7niGk9j6iNHLV7gm2StN+2lu
TU8WSYxm9omS1wC4GqSY0xViWykS1JqFuk8C9dmpLTy5uVvf23p0wY6W8H+w
c9cvefIYMOOj7h+uu+6Dex+3wqlVJbXUa9gcGSSq1TxXYmpwt7rZAOIq0OUl
DmZ.W4EH4JWOIW4OItB0CWgiFlqFhib0QPUxuKqOh2VZ07YkJ1pgt30OIk8I
VYURdld64gUwEEZW+A8ujfk+Xt7YE734qkjAWy670JYeJo4QfOe43RNUVy4w
ik.67EJdk1SJeKqL6Xx4NeneuooctGHDDScCApmH+vkn0EvkQ1mlu4U1VcZh
yrErrjrhRVEKqNtV0FOe+srcwGSqetEe59T+UXW7F1ve89EndX09xjs4YhFR
alWb8lW4GbPRPgZiIYUxhK56qyEg37yP2shC1iUqiKEcLqAgyScXqpyySaeu
yeyT1tZ08KRxx5Rn04Eib2xj8uL12dcN+tGF8wKuU0yGyfa+LeTd8yUwepCy
WGmlpF224M7k3rjCw0r5Dn+vy87cYYwb.+BWcPdZZabC25S8cqsbw6MrOmrs
9E4Kqk3A+KjTzHXs5b291j8rp5NWrNdeUmK8VcG7qcbsZf7y0rCEobzzoFsl
7n0fVcsksuQGslaxObfOn37.RcUm+R0l3BlyO8O+4e8Wc947ySlbA8mCoCEF
ASAUnH0.XcY8Anh2pJ0U+VZpSC59czlYoaa+zHczSjHBJL3z8US+znJZ1jKz
fa0j9Tb4IN6XfOWrDQn9Wh3Ty5PBdxSLIDvbjEk47Lj4ZDXjulEmwNvpph2y
5Wb77b3N+IzUJJpXTOfQCfoVBmEihFfQa2qNxr6ukw8t8xpsMepMw+J6qKBc
6K+eL8JF3iGfrwiS1IBUb88wHcBt2WcBUrTNcxYxEoqfBB9jfqnuvaf9Bx38
Eu0Ef6hA.0462mxLi8hTJhAOlvKpZCZmlPIu2slaC.XZxaDL6UTeDlEM.woY
vYZR1flUHoDQEFfRqxOVtooonzB5zgd3lKUmjcxN7ObZBntU7kjsaYYuAxaS
pDTAXzn4xAStoiMsoSt6Z5DSa5z6tlN0zlt+h1za4DI2Q4zM4o4bKuUCr3dg
EuMQ2R4VUS9+Hnw49D1m3EgeT7WTu.LQ9WQgt9QbiL53uZmmgWyyvKxEEQEe
SeW9WEC+E+RnK9LttGAW6rxSw.cebzqRQYdQd4I+nexOBp0Y+1WI7Ua6yf6o
OGWWWlr9XMnUoUHIlnqSC5gN2u+0woJ+kNMg33NXc1OrSM+EO5ShfxsO8oM7
VTY7XwWBQCEAXBEIPkS.YohEm6vwWh21dde5yh1pH1L2znx8mcPiwFQAx.r4
CrgWDD6sqNZaAzgYiVya1wZjEG9+EGTfqID.Ec1v4kf.H2IDv93ZliuAL.1S
x.yJ3z98w.3QB35ip+cyngZm0b8myLjzQf06D2YKhzmFCZ3kid+tz73AEVP8
FdZdCawYO118ruMWxy2qgvlozUujWzkIO4mu6bWxb4MkhItNY4GKklY24oX5
tmuPtt.GEErnDFJ3NmvpXoZywOSRi.RYzEZ3IBO+LSd6XtBV7qWwrBgpYBPm
mbXAl2D4OL0ASGLPf0d+XQ1qeyopfSLZVdOKtDEJmeHjtPVgg7tDWN.64eyX
ueX1ica3LezxNAA5NWe2weOwgn0yNKa4BAyQhVJic8Lzbj6kAsqOtaGq7zvV
merJ9PQUKdsGxiR7kDFU9AhtTNOSoFnyaTy4rv3Rh6nNNhi.t.9vObgTYQuW
bb7hDfeDL5ATCsbD.9FS.qOVWmmMFRIDPPGE0jFhNIiXlH0+BJMtYB6+q78+
x18iuD1PJCb.WgCWnQ9jq0OtYyEb8J7mznPN.TyAx4yx.udgbn1TWkGhkuM5
41wv4gp+.obaEU9ahvPaffhh0VL0BjacDEkcBeaTjBqPNDrrNCAXe8qTQx4Y
.5tR5P8cC8VD1SykDuHUf8zaRSyNXqN7hqJgHjP.kqAmFkcsiubuL+M0AdCv
2Hk8PH3Ce22BgoOjsOa.ENlaqTl7Rb11T0hX14GEYe6XkC5rWwhbJtI+HrTj
7FaZRX8RQBfgEmCov0lZkfKDI4alxOEiIWnnuHVwdJRSUn3EVITZKqjWL40w
mRErjfBQ3yKZoB9hOc7TQwk7KS9hcXtKaLkB0DkyCKkwTdgyVqIBjaQp4p5o
E8NadFWC8VvXnQnUvFUEsRcWpHnPu01n1YkIdlEJYwagAU+S4.rm93WpFO1l
P.zwpUfn2RQIye9Y07EjgaQFu2DVdG91FuYTycBUl6.VEOqzf41WnSVcivWQ
9qr2Fmx9hxQHVFKMvcuYELx9.JNrej5u3HsjOid9AQv8cc7LIFFf6bQnEZDB
9dI6+5DAxjXYrzDg+cBQTD+piz.Wm0oGY547nOEmHeok4XXwwfbWpEEgWvz2
CV9VjK1KWh6WfLbA0dMjAhrTjA89hLJYau.UDBKRHb.BDKVpQIdj6KlfeEVl
XC1cA9.SjSMfI.e3uXRF36K9nHuJQXHy+4RCU7wvZ7.1jG99KEeftO4i+sg7
gq+xxGnn6A9P4Kbiytfivv1g9RN9hboZ9pfBWpzHgBe+b7cHZZSbYcdQd52L
HuZnP+Y67Vu7wHq0mpj8YhLkd5utY1hraW82DIZT9OWSnErbF3vkZkIFMAVw
h7S68AS+6AFojP3hFnDShSxLBEpO3sDLknQwPYDCfm+vvhz3ullTUaxvMXwH
hfD6DMM4JRe4y6ZiaOLegJr8xrqOB8MhnpZ00tMYi38DW90KFq4MoIEuvDam
bwkk9+nty13532rYBDUenMtj3rO3zxw3uG+ONl85SwI6z1rUxp7ZRFvbwG2l
jKthdMf8f2osgBjZk169qUo44Ec1eWq1jmwscq9YwFxenMBiXmpWUWx3hEpm
d681RQB+NaxKKa0BZWm7xj8IbplC080ubn5Tyry9SK8XYyFiumauNth2EcLK
QDGMPNnSM1kmll+YXOWH1a5481ZDGsCmhIG+Qtp6Co7PbV8EfjXjiAXUqCgy
jadspyKqpfA6+mOzsC6gU+1w3zj5uNRSs4cogUza2zjxdnpWR1UOvKRgXs6N
3lQ552QJBCg1UTs+3bW4pJyffo8gzHt.YMY9QoDzdCJi5q4LsjvnyIcOROr+
5bRYkZIKSyJ07x5Wxc7LnOo47.HZoRMy8zA1iXOQvJiqXWlHTImco15CFrZ4
fF1MiK9Mt8Nk4NZo6XPt.h7Mco71GMuDrLe6NEaRPMcU8fy.DVKQtpzZuDNx
6cYcRhVGrr1E4TckYITAgcGrkZrKxHKxnMa5Pp9hnZAXTezDXzl3VXJopN6s
5qwNaREpV6c9thj6tAlan52tcwiZsgjGZWK2det2yVVd0gjsE4b2PTsDkuKD
OMGYHsf8a2ey8JtXLRDceFfD2ohDjZIX.wSPuj8vhmmQXgNUrD34KF5PgnnQ
gUIQ6RDJnuB0WIX6.ggovaWhBAyG6CugVGGXKN+fn1gevT7oV+sBKhEagUvB
z5IPB3zKYwwfA1AKD+ae+hPwn2kfBMZ5CAk4CDAI9IHBrMtcIXUVDgB6oDjT
ULR9PBe2I.Qh3cPWAAnUxtP4hhknIO0.k5oAE8R1EJHifxj5UnMBhRgs.We.
JA1DJFo3ax5JDK9UBrRc48IP3taUvORq2RT3cFgnYhPek45vVVSu.Dzg.Xk2
fsI.CLZh3.7TgXTnTAGFbdRujEwBwHrPmIV7C0whrjEwB1Dk2h0PhdsLvXXW
W4QJLlBwUWch1JKZYzbQkdhEAxzPSTDjTYv+DDBI05IKZYvbQwLw53XhfQMH
A2ZHC1thYdlHlELYMbQQRoLjqT5RujkwxEExBbm4veDRcH7ACbZUxGrqsQ0f
csqMvH+jEmTCSyBhldIvXnFb1pjWjZ0N4QfSWBzc.P8lqvIn0PujEwhqQyMQ
l6bSjVyMQrpRCpQlvRCmLVnvTSvXoyErHRLx9t.uYhj.cjDXejbY2J7mrRAX
4e2r3WgXn0tjGRcD4CdBJKZQfZjQdhUI2zl8k.m8K9JEcPNdZWBqLNm.KHXr
UU9QMxJCTzTwoXeZRNeF2AXQVxhXwDnDMWm2gcpjdo2YjDLWjfUt8En8KiRS
IHHsgHHZKjn6BThrDJ8I2KnjPtNwRrpCythkDihOF0exgfFAmAlPVfvgtZ4D
poDbh6Pv8UB1JvDpZKD4+9yAX50wAjliHLu6.rbs8mvTA1FKFYik3DMXZpSv
gpC4IOsjX0tDJRktA0gbqUs.iXl9jn41moPlVIKhEhwQEbZ8YJsgfpCJDH21
kTlboNYpZWBiT+NXohgEJ38mDHyPghNIn5PkkrHVLx8SO7jslT8iqAVcP3nh
YkU6WvFMPiN4ItaTsG1RQenUGn0UE9.XYxgeuQ0dXKE81EKFAkI2q.IAQstz
0JXw74aTNvQSN7FHUhfIDulMOIQUxhfgZIv3BZwtsfgXGvDFEc6wB1NXASI2
drfrjPF1+1iEiV.LyTKFrHB0JXWbfVbbfPfysHsDTiraVcQQVU3B6Q0Dtjkr
HVLZpkfIu3O3ZiUmO5P1Z.+djkrHXH1ZdRoUjD3GghlQ8T6hErw4TycNcLJC
wZUzhnw2njAfmMZTapc8hVDMFoRF4Oyz.5AmnG5krHVLxOLb3LC5nJULTXYQ
X4LwXzj9dyalRpl49Tis1Wsd5676JsD.c+8jt6ukz876H8H+FR+le+nksA9+
8+svX76A
-----------end_max5_patcher-----------
</code></pre>
view raw gistfile1.txt hosted with ❤ by GitHub

But in addition to max I needed to write an opengl shader to manipulate the model. I also decided to handle lighting and color in a shader as well. Here is that shader:

<jittershader name="spikes">
<description>
Shader that manipulates the verticies of a geometry
</description>
<param name="positionX" type ="float" default="0.0" />
<param name="positionY" type ="float" default="0.0" />
<param name="rotateX" type ="float" default="0.0" />
<param name="rotateY" type ="float" default="0.0" />
<param name="extension" type ="float" default="0.0" />
<param name="red" type ="float" default="0.0" />
<param name="green" type ="float" default="0.0" />
<param name="blue" type ="float" default="0.0" />
<language name="glsl" version="1.0">
<bind param="positionX" program="vp" />
<bind param="positionY" program="vp" />
<bind param="rotateX" program="vp" />
<bind param="rotateY" program="vp" />
<bind param="extension" program="vp" />
<bind param="red" program="fp" />
<bind param="green" program="fp" />
<bind param="blue" program="fp" />
<program name="vp" type="vertex">
<![CDATA[
//
// Vertex shader of for the spikes
//
// define variables here:
// things to note: varying means the scope extends to
// both the vertex and fragment shaders
varying vec3 vNormal;
varying vec3 Position;
uniform float positionX;
uniform float positionY;
uniform float rotateX;
uniform float rotateY;
uniform float extension;
// creates a smooth effect for the spikes in a certain
// direction, eliminates some randomness
float rand(vec3 co) {
float a = 0.8;
return fract(sin(co.x/a)*sin(co.y/a)*sin(co.x/a)*sin(co.y/a)*sin(co.z/a)*sin(co.z/a));
}
void main(void)
{
vNormal = normalize(gl_Normal.xyz);
vec3 position = gl_Vertex.xyz;
vec3 newPosition = position;
vec3 n = normalize(position);
// calculates a rotation matrix to apply to the vertices
mat3 Xchange = mat3(1.0,0.0,0.0,
0.0,cos(rotateX/3.14),-sin(rotateX/3.14),
0.0,sin(rotateX/3.14),cos(rotateX/3.14));
mat3 Ychange = mat3(cos(rotateY/3.14),0.0,sin(rotateY/3.14),
0.0, 1.0, 0.0,
-sin(rotateY/3.14),0.0,cos(rotateY/3.14));
//distance from (0.0,0.0,0.0)
float dist = pow(dot(position,position),0.5);
//this is the actual spikes now
vec3 position3 = vec3(positionX, positionY, 0.0);
//position3 *= Xchange;
//position3 *= Ychange;
float adjust = extension * rand(position.xyz) * (dot(vNormal,position3)*5.0);
newPosition += vNormal * adjust;
//applies the matriz to both the vertex and normal vector
//newPosition *= Xchange;
//newPosition *= Ychange;
//vNormal *= Xchange;
//vNormal *= Ychange;
gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * vec4(newPosition, 1.0);
Position = newPosition;
}
]]>
</program>
<program name="fp" type="fragment">
<![CDATA[
varying vec3 vNormal;
varying vec3 Position;
uniform float red;
uniform float green;
uniform float blue;
void main(void) {
// this is the default color of the model: black
gl_FragColor = vec4(0.0,0.0,0.0,1.0);
// lets add the top light!
vec3 color = vec3(red, green, blue);
vec3 lightPos = vec3(0.0,1.0,0.2);
lightPos = normalize(lightPos);
float dProd = dot(vNormal, lightPos);
if (dProd > 0.0) {
gl_FragColor += vec4(color,1.0) * dProd;
}
//now for the bottom light, which is the exact opposite of the top
vec3 opColor = vec3(1.0-red,1.0-green,1.0-blue);
vec3 lightPos2 = vec3(0.0,-1.0,-0.2);
lightPos2 = normalize(lightPos2);
float dProd2 = dot(vNormal, lightPos2);
if (dProd < 0.0) {
gl_FragColor += vec4(opColor,1.0) * dProd2;
}
}
]]>
</program>
</language>
</jittershader>
view raw gistfile1.txt hosted with ❤ by GitHub

Expressive Guitar Controller Project 2 Steven Krenn

Howdy,

I wanted to make an expressive Guitar Controller using Max and Max 4 Live. I used an old guitar I had laying around that I wanted to create something fun and new with it. I used a bare conductive Touch Board ( https://www.bareconductive.com/shop/touch-board/ ) for the brains on the guitar, and an application called Touch OSC running on a mobile device.

Here is a picture of the guitar:

guitar

I used aluminum foil for the touch sensors which are connected to the Bare Conductive board. For this demo, the touch sensors are controlling my last project, the drum synthesizer. The sensors go from top left; Kick, Snare, Tom 1, Tom 2, Tom 3, Closed Hat, Open Hat. Then the two touch sensors near the phono jack on the guitar are mapped to stop, and record in Ableton Live. Also, there is a stand alone play button on the top right of the guitar that is unsee in the picture. I plan on using conductive paint for the touch sensors in a future generation of this device.

I also had an incredibly hard time working with a Bluetooth module. The original idea for this project was to be completely wireless (other than the guitar jack, which wireless systems already exist) and the Bare Conductive board to be running off of a LiPoly battery. I sadly, couldn’t get a head of the correct bluetooth firmware on my HC-06 module chipset to support HID interaction. Hopefully in a future generation of this device, I can make it a complete wireless system with conductive paint. I wanted to focus on the Max and Arduino plumbing for this project.

On the Touch OSC side, I created a patch that interprets the OSC data to changing the parameters on my guitar effect patch running in Max 4 Live. The Touch OSC patch looks like this:

touch_osc

The multi-sliders control the Delay and Feedback lines I used from an existing M4L patch. The first red encoder controls the first gain stage of the guitar effect. The second red encoder controls the second gain stage of the guitar effect. Together they make a distortion effect on the guitar. The red slider on the right is the amount of reverb time that the distorted guitar receives. The green encoder controls the amount of delay time that is taken in the effect. Lastly the purple encoder is the amount of feedback taken in to the effect.

 

In Ableton Live the guitar effect has this UI:

guitar_m4l

The effect parameters can be effected here as well, as well as levels, and a master out.

The drums are pretty much the same as my Project 1. Here is a link to my Project 1: https://courses.ideate.cmu.edu/18-090/f2016/2016/11/06/drum-machine-project-1-steven-krenn/

This is what it looks like in Ableton Live:

drums_m4l

Here is the code to the guitar effect:

<pre><code>
----------begin_max5_patcher----------
4618.3oc6cs0iaaiE94jeEDtOroESlHdQ2J1WZ2hTr.In.aKv9PRw.YKZOpQ
Vxqj7LIon429xKRxhxRzTdj03I0.I1dDojNmuyERd3gj+4ye1r4oejlOC78f
2Ad1y9ym+rmItD+BOq7ue1r0AebQbPtnZyVjtdMMoX1UxxJnerPb8L5czr4f
hn0zpx1DTr31njU2jQWTHeGPKx0VWAfPOwW1V7uPrOA+d0MkQyYO+fhnzD98
.Kudx10QIwzh7lWLJT7tSm+GuzlLaWMS2VTUUqxqlW7oXpn1y53MoPh1RRDc
s8U.WmcTH+19qm+b9GWYHZkPumQb6AVeG6sXYcsFfxAi3uXrEj+EwWPEnF3j
Bdf5.OPciGvdwCYkJ9zFpjDlsLNMfQNiHemwdGTvqfuJKHYkN8DaaIG6HTW7
rGL6S75l8Qly9yth8+QWpqSn65fELpmv5ffFNW6dNKzWRogyCV7Acp8Do8ls
zFzBOXH.e9I2+bLXECD1v3NMrtOV3LD5JD6tVCW3ae9w5+xu9ud4dx+W8cZf
AOrvx2VnG.IP8vPGMDPHOhv.8ygAK9hNEbGglsKVZhaW8o4RYrwsycDzebzc
zqWEDkTyC2EjkDrl1pz2A+cMLIQ511ww6ZGBzi3v3QYC9Xmg1TeGP.Bu6cmw
nsBZ1Mzjf4R9F1I7X2mrNOZURPLWhu6W7+K8CdEmoy49C02oAWGgVqraMcwq
4A2QCuInnHKZNybX2uxKkFkhCNfGukltr5xUWuIyFmlrRqPQo142llUTW82F
jytH3W1VzUcq.FqNJaMSpvK6kBeScUdfP0xoyRiRhJhXvq.tZzgOkJskUoZE
XhrbgFb0WiqCYcMEK6yQo2X6g2NDAcl6MNjFG7IsthcsDLuiTcFcDthgOhX.
mqYFXELeKswgeXaXTJ3WVtTWywjReXhgAv631XMREHxp58tLMYmk4q2VrMK.
7VZXz10U0XaNc9pzjEowoYMedc44ypAelxFMV8MwFTiPD17iZ1fWaypoBgHL
hcI1vqX+vk3ag3+.45Qvv8eARDpB3S5Vs.2qZACE1iofJOdU55pFezjT5V8h
8+njC6iGBktDjCMoKMh0ogJMAMeUafsaxJltJXwmTDDvwypOHLmwKayA42Gw
TyMPmG5x048ki+fL.mdPnu4p1OHeBJBL96JO5yRrmQ0GA10WXM9grUa4EjCJ
RAaVtr3Ke+6SfeK3EoyiiVETjl8ouETbKEjuct.QYssxp4bJf0+gPZH3Euk7
lqE9ZuVb6fWBVuMufWinDvaC93+fIXnAYKtEvt+a+12mf3O8MbkufX4y90u9
2.b9ieG4Aq2DSyAu.ZgHcVatURbvFvxfELxC7BdsvJ058yBxVk+9YfnbP.3C
zOceZVH6dCJ.bwA3SoaAgzkQITPPM+uj8rTYz2mPTdr5pK3EKRyX1UaRSBYJ
cbL5aX9I9Fz0WeMmsTq82VIGhYzvhzsIBggilQMfbkwIQLrABT7kKY.sUAwc
p49CY7NsLvHKonOZMp5i+VJSagBtM89VPVNfID+vUL0tEePTzZVWBAUnePRH
HLcKqghWtHNhUizD1+X5JKE0UpYxfAFfJzzS2PaKS3Ro..yGC39njvz6utSY
jstX+I6jLAJiAnbvONCoCE11OIDRu9vA5vyRnvhQBMUa2pQOLB8tneHB7iow
gOTbReijNX6c8YrIaMhv6uVP000ceXYrSDpYX3nAs9mNkO8fpsMY2nKQ9mDP
sRmMWaz6ktYKCKqCZzfVD4.Zsf+cQ.yw0oEmIDqc3bStaDw4eh2U.wzjnCoc
88ZBzNiGPaeN.zHEf14wvKAq+63SiaBjyikeB7H5mPDVIFYxqUGgBrxcw+g0
yBSQZ4DZfKm5uw.ocGdf.qFmQvlMrdcGjrPotcNVipoD4.No8Z.9cvjiaD.i
R9.WVzDY5ODg8HrzDkv9pUEx.0DePj1nChr0Fev8ke8GEQnAAQrqWU9FFdDG
sVTtrieOrvLJrUDNdNfkxdNoZdwfsEoqEZUkQK42xhVshloqqNNJVVxVrbFC
KKOSrrZDYmlLR2Fb8EZuCXUAQMBrt0dLXUHWr1CDKc5VGtgyD6uCa60WspfN
jFqKXm1VTlDoDzE.xNUqNMfZYezoY3cQ4QkZCnSVb52.9orsIev.C.4rpUlz
.VCHhUH+iZ3RCXB06ILUMZLWN951ZgKih4oTStpkqngqFWVUAccveHCenasP
iw9xKsSsIixkdx62t9p7PPEUvP1sYRN5idN6TC41YYIaipiMoP797pGXs4pL
ngx3HhbkeQZXvxCJJODEzvldmmwi2PTRauU0EGRWFrMt3ltQP0xWFrf16M2u
.9YyVkEEx78xnDE7le4p2Iab6h7QoI+HJOIXSG2ZY.U5tPYPYmGj0zTppvhz
zX0hpuuX5xhxh2DkjzBHKR2zegLi9a0buySYEtV2yVTRNqEVYo2vLfKtg6XU
sdAwwkVzpO9OFjDwbNSEIIFmcspKT13xs4KxRiiU3WYI20QIgL83Ez6iBKtU
0UEqDV0i1T2LPsLNLZEMuP8ZEAqxUuxdV0rKUGGraJnq2Dy3B0JnjHcMMJa5
6S45ZGGipiv+I3mEIPBCX4cfBHZgJGDkvCUWBEjy7JFSA7opVDpOlSnMaKJi
nKe9qa7PUBWGpQAZRWOGkz0yu4r21SmI1KrTVMogdGXT+CNpGASeQxqQKRUM
DM9Bk2FrA7NKd1J86.QFswCc56rtl0Lb4EloGekytrHSA1gxdGA757UH595z
L.MXwsf4Lj7JvJZBMiY1AB3PaX5ZoU.f8P1jEkSCAyoE2SoI.KgM.pNXw6q1
iOfZurSmxIS.JGHMw5HDK1eEJV94J4.2QDWzjOyHzrTWGZczJ4nu5Py2zx2b
WILlLhqky17w6g.RzidJ8E5IDDpDoh9RovpIxtdLxGEBh+5DA+QlM7APPDoA
BZe7HH5oKBJoCEbJKsHkOPuc4VG4MWKXD0d6zUFR50vpFd7V01nGBbUoUTms
niDVoLbdsodmd7orGQD+CiOntwG+GjBG5fHn9fZcp0I0fyuRDn0Cfx3lc+D6
bznr2CBkgCGkUiH+iHLu8yQbf1HbtLURsNZX18AAy3gCyyEsLr66lIc0oFzE
nwX4t0qY3iMvaqU2B.xnpDqBkmJewiJNJUjev3nM7IHPpwKPHOJ0hwCYHBJG
YoqA8jB2MBhmZOtGio+tXjxG7cOAGSfQ7x6VDjmtMaQEQT1hNPEuBo4EQI0A
M9c65YTqJdaTXHMosdYXTNO.ixPcZj9xPIYOCIY+yFJl0RC.9jihMAiwmMTL
2InQjr6YCISF.HiNKnXrgTr2HgwxTsodpwJmzY47.oYFmGz7Ubn4wpuIIaUb
57f3xYwn9AnaRO1MyHOvbin+7HRjNbFjDQUI0obAgNh4PD15LJGhvmu4PTWB
pKIPzTj.Q0H+Xm8PdtJ1TiW1CggmIYOD9qgrGps7+RpCMJoNTk1uLEqOhTGB
itj5PiepC4VZqRjQ909RpCcI0gtj5PWRcnKoNzkTG5RpCcI0gtj5PWRcnKoN
zkTG5RpCcI0gLM0gPVWRcnSepCcTn7kTGZnoNzQAyWRcnKoNzkTG5qsTGRuq
fKoNzkTG5RpCcI0gtj5PWRcnmjoNz5swEQ4wQg6xhgt1XUxeYGUr6tpbGMqH
ZQP7KWkQo06BsKBRBYWMghU1.Y8r0sq1VeSdU2DzyB6KpusqCwUrw354yun5
c1+1XAVNPJ25cykcI9if4ZuI2181z6Qm0F38.Dxv4s92VhWcaZdw7.41aa8V
dUo1lCYf6Jr0zn8A22h2PC9fY6vwGHKSVvLOBCJBZBf0zgix17KgiWnN1qeK
tMZwGXcoQQJz69QWycGxx43ApnWPKXB0xL33c6+1poNTUE7QPaGeNg4WodaY
a460y84pvU6t481ZnU0M8IPnGudPH1EYK9E+G1k2136MPjkLeE3JnLsTFjq.
eNMQDuDnuikWOB0i1w.4Qzw.anQW7LzwFnXyUF4ey8Ln+PK4mYEn6.YQl4WN
x3oKiOgm0HbJkfsO9SoDVeE2vbmciLQ.Dz4KK8KzjzxX97JhtSe1GORGvIx8
vQHguyvWFEG6l5aKhi1bSceGqfiDFWuQvY6RZsGwTorgtflrnruZMFGNJXqw
J4kM6LTYJxd49RASwlJd6s+d91VOemhOmoRXYoK+L87D5Z1kS6JTeBZZuuEn
ikgInohGJahzoGuU+xeXy8t4p5W6nSpyRqvdSsyIQ.XlHvQtbDHkGFW9VCVD
X6+2DQfnMnvF6vuJ8MM6Su5+VGJ8NylKWnbFdH6197HtiQe2bN9k2xCXgr3T
1DAB0C+7XlO8JRCMsCnoh5aJnLg5srFuEphA95seD80ycxLOHF8kC2SKaGop
Ad3NzINSl2Dzf8lb0ifekxUFh1iR0xCUTrLAvFSWKtltJeTDGPK1XTEiSDVO
lAHa..DeSjGifOIuyPWRsEj5WiOcWMS7IwaverbJgDOqC6WpqEcTdAciDZrf
S1BrqOynFaOyZsj7fxEJm7DJUpAgGk0Km2I0Rho+beEyZchstjcSuCr47X62
1DCrVmdOC1Fy2errvrMx9ZRZ2eSPBMV25yVdhMW1JiW84f5C21ndDDYoaSBk
yeFzYbNq2IkGCukG9GxUrBxS2JDkuZYTVxPCNBW6BK8FlZW05U6Zr+IPr34f
NMhEh0ITrTd7v7zUrbnSB86nYyuQrT15Wzgq1Z6KOtIcG7QPK7L7.Ae2wOaF
qI4aPZ..jr4VYTG7ICm8Im8rOT6IPrfuwGK2+Xd16xZYNOXWeo1kZwUG6v1X
lokCw12A24wHHRiZg7jYFK.FYXSvC4.TuNO6dPqK6wSkXaHyK3BJSc.3oObb
PYqUxXp36umJww5K2YDWn580PqXNVvhiU1FD93ghyi9eaCB0E9A9RJm61u7H
8lo4XqyjxoiyJDzrQKxiGAmuLJl00tUYAatUGehccq12XtpbyRoUimJ7oW0E
kO9dOmTztkdz8nJbMGWjqz3FSJkleTU28NBfas784SApjoJMetBvE+rF9E+y
AdsiqExSLu4HGHgOM1vq8crgdvqZeJR29C0mEhexABwHLR9zfVXrXdSIVdtP
j9m1woLvFgytiR4NTCJO3jvXXikNvX3s.5Yhlvxzr0AJmZuOnlgDKifCd.ca
4WoraqxximelE7tto0MisLbat0AXZnMb67n5kQajRpK7cveWWO2JCwqryKiX
HG8dTlLixC9cYyWm7.G1LxEcf2ZBbgnOk.zv21spluhNiag5tg0IaFD3mZ4B
F3KZGRfaiwD4LbiK2m.1V5hxB9zXWY+XZWUlSIOJ1UlZTAepaTAr00lkLRCx
Lsvc3VUjGeqpdS+q8KsyNKUFYLbU.xJWaqO3r.Cc7IA1IJStfkiOPZ00Aqdh
M6ZJKzO46f2PuiFepxDKs6hjCIEqd3VuzOGDt3KZOBk2MjNR8mO7txO6zM22
8o8gJ2EzTYjFfl3Intr+jXX6EvSIRpeMyoYgQUuJ01eA6r+h0YOIpoTiqATC
RYAGdRIGdNwcP5gmmE.rF5YcT3lT13uKkPd9ktO8kqMUjz0RiM6qwjCLgA7l
N.0DxgbdQNvyJxAeVQM7IM4bhbNuTcfmWpN7X4OQ9ws8M0wIZZnGjIlVtSl3
x1D3YxjVDS5Df8z0rKwjtAfmtVsHF4X1dZoGnIzCz7tk35YIBDrbgD3v5OR0
ecB5VBwDC.7z0VWq9bziA4DJgMxe0z0ZWqNA0C9LgdHLbTKSC0fMw+oXrDjy
G5QzD8DQOtlhOnyG5QfOSD83XZuklH4kIdmQSm24VMkogdll9KgIlpOeFQOB
84IhdvlhO3yG5QfOSD8bl05N1jV2wSWq6XKSomIRe1D2ySW2MP9mWcdFYR2M
ZQzmT5w0T5YZTePFo+LgxKrAMmRltlSQl3ND5Lc3CzzYg.NczCzD5AMczCxD
5AOczC1D5gLczCwD5wdZnGCTeZMSWmZxwnNic9PNDmIkbflPNvyFzYBGIH57
ZffPOSa4ZhnGSBjvz0OdiImIBcLIrFvoaZEflLr8IjbPVFMmlGx0bq4Uv2Vj
IvN9h7bvGKxmpV+kki3uJqI+uNAy4PaJuG9CMcsDBMoilS2jN.MbRIOFpQlm
RsNRM4DRqiRyVGil6eDZ1+wmY6iNS1a9ud9+Gqj7bM.
-----------end_max5_patcher-----------
</code></pre>
view raw gistfile1.txt hosted with ❤ by GitHub

Here is the drum synthesizer:

<pre><code>
----------begin_max5_patcher----------
5794.3oc68rsiajbcOK8UPL1vOjLhnN08J.N.1YCvBrvNAPF4kMBBTjsF0Vj
MmPxQdWa34aOUUMY2Mmgr4ouUcQtqVrinH6Yly860o9Gu8M28o0+Tx16l7uM
4Gm7l27Od6adi+sbuwa1+ueycql8SyWNaq+wtKK4us9S+06tO+i1k7S67u8h
Yye9va93rcy+RZ1CebSx7c4+roDEaJgPnb98SLTXplwX.69IL0Tx8SnzojIe
X+2d1SqRyVlry+6it+MSW3+0X+U+NCbW4St9ocGdTx92c6tedYh+ouy8F+y2
9V2WtGI9Me8pUIY6dEB99cIeKIaxOrIIKqFDEXJ4To8OT48S.tG6.f6QRREj
7wMIas+ZlsKccl66DNExCuF40xpP170KWuI+WLYpVRUbw8tWoHBsN+UZNCrf
vwz25oZm.DaAF9oGNB5XfB3fClXb.XT+qXRJQtG55Qd0+0iVN02Oa2j+m0Ke
ZURcrKJHJQFhn2YWhQmcgDCGQ10+wx0aSVfjgQjrAkgwGcFFRLbDYX+k0ql.
WlWY.XPYUrwlUgDAGQN06ylsIY74TzekSgQmhdYNkxZb.FPNEL1bJjH3HyoX
WlSIshbNDQqFFNEYr4THQv325GWnqfHx9lSIG8PJPhfiHm5GRm+0I+40oaQv
tXdDPmmDhh1yLqQOnBl1idrJnGI5XU+2oV1hMlcjLKJTAaz8FyBHwAyhppE8
B.y5LUkwBnIoeK44Iqlkl8QKhVWlUZB3.cklZAm7py.Dc8km4DLEg7zkmANK
sM+g18yOljCI2sM8grYKuqOoDVl2BTjg2YJpMEmp87UmYSinwDhAsLUKsr0o
KRsTo8+391rMYyVkb7G9izOTGG2gfVrx.SsZJbuQTW8b5tQTR4u0MVfZWxlO
ljM6S43KbRxB8bBC2c+j697x0yr.8GtPlyWBe1N6aIK93rc61j9om1kT9ps6
oz6I0Np4xmRV+4Cu8g2uJBsbc1CET7+XpEKt+0Oz1urdytK9TGvV3De1JKo1
+YNm.m5im4ESn7S9woYo6rxAul5epmZeoZ4GnWG8LOYelBQVR9m6kYO7WCi.
L7g5K1JcPDfElwQ.9R3yvI.+9YqdbYxkEgO+yc.iI0HDakgIPMRwPeIDWwE+
4khgtKEettgj7vlYKRpuiHLv6mUwsQ6A9vjjP8NYXmPRULpda8Jp1vDe5rZw
U+vZTgqDfHwGtKH5C8Xdy0iY0oG2bc47pYbNDa3TneIwuFc5ZezCD.5I9L62
xp8DmTWlBtR4mLKy8huai8Gp+E4pB2cR0w13d5PDxChh61jkVN35MOOgUmPq
gRxSRSTDprzTutK+DRmv3q6dQOvHzcqj9Se5ClMp9fqGoFN818JNWRm8rOV8
wRt2MKou7yJv3mkLXpqq+VxlENJwy0psxMEdZUJnTkUz3YOPPGUU1ZaHG196
T5oUP5sRwPkQUKdpEGGu5wXs.sXUx1sSH0EYHPEEyJCyv7EkAZb4GncOxv9W
Hkhs0VkLv7ILoepWnLp5tUs3XzKjlOVIJtkTIyirsEBopHTFkgsodChgTYT0
VuqY6nfxBsBcteegQ5poRKDQ4QlHZwvs89uL6Q7y11v30GLw07sM1xqHFwsK
x1NZ9uFH1lNtlxsXkskO.AWhicT60GHFlJplgfXkeUYLBtDSiQ3CNSaz8kiG
IGal1EsJJdYYh6UN03Ol1V0KWem0FKN4QRoN53T+oYa2krYR8MPmLj7oweje
8HyXyfpcHG9MaW+T1hKLlCUMmSEhoF6ejlxgMpQUZnbNbFhQc3gYoYOi08Ks
2GzRalt0UHZRsEhFe8.uOuGJWp7zWBY6wYGxJH4B+4i61j9vCIavJLQKmbsK
MzLjSPsIlQJeqyPF9T5+2SyrZUjob6+O4ct+19Ek8eTWwrzTmVNiJrjAgkjT
LQUhKPSjullvJHIedcVYK.9CapzdltWN5J+J1l92yK+uEJGBJoVN4cfmDl+J
i8UlZIlzBhIWUY7zTMmXBk8D9plZ9u7bsDLnffIo7hWS0thfznNd.kSXvUN8
5RZrJoKBrbMVioPHiSabWhfxYf7pll8uhUFSnKoWsRFScSPuxbYd9LVYLUoW
Atr4SWpPeqnWxvJkw0ETLFsERYlaEJFEIEiWwNVanXkCx6Mts+JQqwY5NY6W
B+BwVVUZFv6jsrxScyUMMa9SabG1Bxj2UmIMEqjvwpLNJplO8mfrwAy1pLS+
zrrG5UBnq4cydH4UTPecR3S.WJVTKgDXD2KArjStpL4.VaTdGxfcCjoNXZcM
vVPKh.gqKGeQlrEDKULdRel+yyWZUBYDhK+x5HEbnjTPKypTqaAoPGijBuvP
cIVKL5xnqH7N42ScaDC+14ybhOjoVR29uVWjCbszU5KAi6FCFVA0DHllWZBc
TJEsLMq1.ApRBDBkqTxZktclTzl92qUKnDe9or495DirlmupcGZVeLtZFRyq
7LGOkJefnuu7jMbradDUf9BH9rEKdbcZ1tsU5LDYpQSs+w9J62jM+DtTSTFe
WQTN6O9Ofyq9Aj7GlP1+Sv8kd1NIYpnN6jpJtJjcyNoAtUxoBpMmJghTRyHc
qdZF5MAMyQbdFKIioPmR0oxLvvt8KyM2FxxgFW5hl6fyWEoEhX2FsEX9xzGe
dx6n1nVlhkxUIrEUajzD2NFzvFqbkz14sHLGyu.5OfjU1zNIg1oLMMpeAPup
jYtjUpRxkMutsF8sO8R.pSm6pnEzqaiNCrNK4w0KSPS0rphEEer4tLoDxuLL
7WgjwEPWLjQIPLlg+EiKsJEfVItTRiiVfRnQYQCQU4dAjWpYsqTyxNU4dJQd
cV49yP.Wsa8mwJBwLkQCvawAajbkEMvYa1A314Gj7tcvmvMtRb3ds.qLHsbY
UA7lW1Z1UdyNZv7tdzwDpqC7JTtaBFiAd83i7T+Owq.WFQS75Ew1.1yafxkU
BexTrd3ZSSu4p3rmQ0h+RSkj5TkZTllGzMOJ61QC6+CvXUFPIUoDQqZ.D2bM
1.nioAUzJZSp9Bx0RGfN1kx.0BHADgs.pIX9o5ATdLeNICqrBwnA+o0wstK7
6YGxTEmKj5yz5GZOeJG9xrceb8iIYHNnCVDO+XZ4NR4z7Aql4fa21PnoG0An
GVlL2MRGeniN9tcNbJpdTCm5nih7.DNEiGSgScIrMjgSQ390gheIhHXcadnY
hquvoHRYA9KIkNQaS3TL4sP3TVaAkRDUlP9VENEScUFN0QzfJZEsIbJl9pIb
pibo7pfJ1GZsh1C1iMwXLUME8qKvJtMxDpDbSjEYJ0+MlGGkMjEvFttTDvXq
l628IXht5HRP0nqnrlGcEmDYQW0rHMcEL0sJn22iFkOHSUKhsRLjwV8om1sq
ds5C3AQUfGz7nM3MBM5t2s1a85LbzzOO42lB+9eOW869c+1T5+NYxtujj4dO
DDDslUxXEMeSTBTUTJeiWamUoVZGIlSawcs.kNth4GgLcUVmEwx5hlHqWkpz
cAd9Ua5xU2MocOa4QcaabzZVc.RVlFSaaiKgr8ZrR6VuBPX2jRj7x0CK0eUQ
XnMO9HXrVzFHu4ODe.qBELDqebfLN2AH3wrgaGj6ucuJY.0rFx8OYSuMPZyd
FGF2EMNAsBIur8GsoJNP2yZI2vVeqX9cIym8yUUJ2rd2Z2u0hmXW5Et4lA0P
qyBTL5ruZ2gYAMizezScc1P5OyIfhJ3l51cX8wkM.dZR+psml8UGea64T9N9
JI3XVec2JAtmr4WNPGtUBH818R.Ug5lI3TWpIa2k7XdIeN0uksOljrXY5p82
lQC78f0eX2tYy+ZWz5LVaSCsRG65RoCOIYD04dImuFkt7GsCZc8lR20hN24F
27I3cyqDcyMOe7byWyDbhF8Mk2LlLdySgEDwUp7yVrcyy0ekb.EHOe+E2l60
W5FaSbJj+Lkxj2lrXKek++68SEasRDJVIQQ5KQeaZQEDwqQBrJDUkI3sn1Vf
NduzbQUgqpWrIcsBWJ0XVfqithV5+BbozQT8stDt1202hhp9VBOPIHt8Iw97
i7WAyMuHWpHuFWrOfUkZPBcWONk3BOhMzk3BhnRb4N+FQbItzS4FiRHcqgwJ
K6ylG6qItqvEz9bs0Ry.qvZtxpuEdJxnWdK3WKu0XUdqtnxAxgVk6Jq5V3oH
ie0sfqppaolJtoqtUEO75xyUZa7veEVbKadF582JvjxshPKpsk4ZqzVDMuHc
q86rkb5PyKsk4loxVBd4tXQJKZWPKJuk4Zs5V4aDUujPEohVTbKy0dsspdin
14ZaIFyZaczc65.TaqX5bieIbsuqsECyLuJyKStfjOkHNmssorV73trVpOfU
aZX5HsRLJ00BOlMz00hGS00RDu00pPej6Gix1zIWkLpKmEu84VqrwDOzJplq
qjqwSRF85YwuppmkfbCUOqNnyIk7gVmSSttz4vSRF+BZw+0BZEKEzpv0tLOm
8V3ZWCWa0wp.oM9kFaaFMKM85p9UVaPjoBc94JSR8aIf1LUVZ1sQsq.q0QOM
P2oMUJn4Wk0s5fFvdIg1LKV5nbQhrE8ADCrgUexCVqo4lCTv3drZOBU51wpU
Qi3SUKqImp1pDktdpZUrn6TjibNwrQBkWJVloyh4R83JleDpzMwboIhEyglH
lWknzYwbRLJliojwZNon8ScUJebWEHGgIcTHOl2FHjFHjWklzUYbY7sPP1lM
aSBBgbaJ8mNhkluva3iaDKGgIcSHmGwArvzMPHuJMoqB47HKdEKVlj5t5.P0
IYQQkrXZeNY.k178e+3dCJbwdL6QnxB0kig.ue1L4wzxAYOmS5OfBEHJn52t
K2jAUHe8owck9Apr6DawbJbtksS+XF8rJSaWm87DAYpEXseQIpqRG5xdnqqb
S1bnI+mEa4uFaEQ+pyrflPqencJFaIkVVY00z7km4U4UQKkWdAJp3PWlaqys
d0huEmIiT1fDfjOnK4KMRYeXykFiaKSFPJ1C2.QVAmUDLKJSxTqCX+VwzeQF
LkpYBMzqKEyK4mLWl7.CqGmBKFIhbRddrLf6Y5JdJpZUnEaYZFb0sjoo7RjW
2oStEidCrgos4ebX9MOxEYK1uzL1U45klqKo.cyGIieM5ibftpNXhH2OYkTU
JWpzW5xZWwxuINb2rKlofRy496kCJHItQ+vsyGbWH7BIgHO3ubHWpzM4RpXu
9siS247gXQe9P.qPDWpLU821jTgnvsQtPfj5bvILkt7ZSZPv04MxzdjWX51s
U5UycGffVMLydL6mxkSSLcWAHxuEhztYuivd0cE.6hl0MJfSMdS01mVp.h1O
QeT+eBaJP77ol2i.84lDVDSoA4ubN45RV0vjJT97wXE8qgp+Nq3w9y5nPpxG
VlVrwht9tscp3ejpZ6PAdKjCDeechgW3erU2wNWi9GUkMhw4irkKtL8Ul6wg
JwmX2EYqR7wnDLRtGRWKc.tgIXiZlOal7a9Z57uhYEZozkMdlVFefV13iZHm
GcCU.RhffPK6DOurqyZcymofwcvYNBS53LEDwCNCS1fYJnJMoy2rHjwZmMb1
aF951nyJu.rV32HofKZcAo4yQgJxPYRs21C5xojpi3sNxvalrthUawvBo7Nh
3l3xPd15cIo0Y0Swpf6DR4Fnf0X62m6Nkl0rCxy8G8WshXLe8pUIY6dE036R
9V57jIeKYytTar7SVltJstRalea+oHESbh8uzMYK0b3m8mWmU4nosoxAa7ht
5p7SXa5eO+LmUb3zt6KoKVjjGGY+Iz73xmdvBT0lkm1He4ENmf8ppJbwZecd
Bzj+35kK5wP+Kx+4LDzdTL6OMKMax+4m+rkZs8+Mqt+6v2pKSp4qeJy+8Ch5
NGVZQQqFTLQwBjhQ84c667BoIxnxBdvmlM+qOrwUw+yu+FNu.5md3nCxplIL
beq90LMg5eggaip28Jav7JMuWUs+Aa3p0Squz+cRdACpoBOkquKAUWVBXUYS
v3MaxwgggU.FIw2NIsPqo42VoEu2.vKduadjCLyfoXtymn2OV0tPIcK708ma
wlwMD5Afa.662G25NwqJ33CpghQ7WVupCjavTicHiDJVjcTY48T.0F3fqZeR
nIjZ0fH3yHN48RZq+UTqYI50M8la3dZbaH0k2Wu+Jo9bkwyTY3k5.olouMH0
ee5jue1tIMmHyq6XmwDUHxkUG2hFNJMXZR8VJytqWozJlhJ72g2JhQS7TZug
aw.Qo+y1r0lrZVlMCV2m2qTbtMfc8IRzCbyuQio3zgQ1VJHFou9uRgfR7uRo
T.YeXiGQs8.qm.rulxGH9dr289GyB1t9oMyOjXvgUl3jRbdQx1coYEEl+GK2
rjUdnxDtNfTKR25pB+hh8q0qDFPCOJDviRGN3Qhk9.gAdDXfm.RePAOxvAOb
LviHbvCCK8IPxOTrvCMLvCAC7vCF+xcQkfCdBC+Bi4YQv3VJTTGRv3VJLjGU
37dov3sPENqOJLVCAU3LOqvXNTQCG7fwbna0zDJ3Ai4PoIbvCVuEr3Bb3AAb
jXLGJCWvXRLzGY3z1kXLGJCm4PIFsKQ3bmJLXgmvDrgPhEdHQD7PiL3ABG+R
fEdBi4YAGK7DH9ECq7Sf3WTrzm.Y+Av3OMf7KzvCDOvCMtHOATZFi2zWDv+f
CO.F3IlnOjHi9PhK5iTEWzGoJtnOtgsKjvyknOtodLjvC8RvSrwuhL6g7Hyd
HPiLE9b.JpnP7XiBwiLJDQDYTHR.ygGAAhEtfN3XRYlGN9EGSJpLUbAOTSbA
OP.oOXRgmGtbv3XRgmGtTlQwtb23DApDP3gmvThdFlRrBhvofwTXbXDtdFvD
HfGV3B4fgx.c3hhlgw.DKbUcgQQNQ.Ah7.XIOABdvDfX.ifFizCkDtVxQMHT
2CXNXTLsrLbVCoXBeFfv0w6F.PgwgJEi8GHbJXT.UUwAR.gHTgbbF3A5e3gf
IFnv4QEG7.AbLxPBQAbREnDEJGGzHCh.SzAQAb7+PBQAbhfdYnEmSNJjzHJJ
HBBHDgxfswDPHBUYNC3X0SwAPACddI23bRQj.BQZTjHQ.gHbVr0ADhjnfHU.
gHTwWGvCf.f5Dr7xndGVHhghFERHBURHFV.gH79Pf.AQn5LkNj1rQIXGroeC
PcVe.c.sOp0nsFEHoHMJ6i5.ZeTiw9X.ORK4cy.GIJTLMTlG0ALTDjPT.MXq
QYvVSCHDQPSiBkbDF.Jf7LkAMEJPtPTJzogDHdFpif3Kk9GVHRfFhBEMBSOP
BXpiRTJZAbTXAoBchZAhmIQIEICXfHRN5hz.wDDIUwFDEvi3FHQEslLf1Gk3
5WTHkrwDIBKfYNJvMEOAz.o.kIaQ.SCQnPqpEJHRhlqEHkeg.cEQCEDgyjc.
CFA0gTDB3o3DdwIp8bPTHoQnRUiGRKjXxCIfopwQYwNfmVn7eWWFhBnEatBM
MJTPDNK1gTNBklVHiEAkA6fMbO4n9EMNxBnPDCWYiBXvZLTJZr.loFCkhV.G
6ZfIPSiBEDgRSiFRIaT.T3jhPM7r.Mf7LJJ4ZZ.SBghSJJftzn3DiBXmGvMw
pgrhnTrsJNPvCpdWCAbHiAbMmIfmTuW965bRQgjqIQSiBjEa.237GPeZ.9CX
PnfHTVrg.5CAmieHfwOhx.YNDEnNgBnRTKfGLD.vFsVffGbGx.HfyIBAiteq
qHR9toe1iO9sjMa2+yzCK2sZ1eMee2qt2+OSyx+m9K0p61j7szCOu+Zf5tYa
l+kzcIy28zl7Um+OoyusCta05EIaxdJc+s+k827+7s++.ujRI1.
-----------end_max5_patcher-----------
</code></pre>

Here is the Bare Conductive board’s code:

// compiler error handling
#include "Compiler_Errors.h"
#include <MPR121.h>
#include <Wire.h>
#include "Midi_object.h"
MIDIEvent e;
#define numElectrodes 12
midi_object_t MIDIobjects[numElectrodes]; // create an array of MIDI objects to use (one for each electrode)
void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
MPR121.begin(0x5C);
MPR121.setInterruptPin(4);
// *************************
// Proximity (CC) electrodes
// *************************
// set up electrode 7 as a proxmity mapped controller attached to controller 109
MIDIobjects[7].type = MIDI_CONTROL;
MIDIobjects[7].controllerNumber = 109;
MIDIobjects[7].inputMin = 520;
MIDIobjects[7].inputMax = 480;
MIDIobjects[7].outputMin = 0;
MIDIobjects[7].outputMax = 127;
// set up electrode 8 as a proxmity mapped controller attached to controller 110
MIDIobjects[8].type = MIDI_CONTROL;
MIDIobjects[8].controllerNumber = 110;
MIDIobjects[8].inputMin = 520;
MIDIobjects[8].inputMax = 480;
MIDIobjects[8].outputMin = 0;
MIDIobjects[8].outputMax = 127;
// set up electrode 9 as a proxmity mapped controller attached to controller 111
MIDIobjects[9].type = MIDI_CONTROL;
MIDIobjects[9].controllerNumber = 111;
MIDIobjects[9].inputMin = 520;
MIDIobjects[9].inputMax = 480;
MIDIobjects[9].outputMin = 0;
MIDIobjects[9].outputMax = 127;
// set up electrode 10 as a proxmity mapped controller attached to controller 112
MIDIobjects[10].type = MIDI_CONTROL;
MIDIobjects[10].controllerNumber = 112;
MIDIobjects[10].inputMin = 520;
MIDIobjects[10].inputMax = 480;
MIDIobjects[10].outputMin = 0;
MIDIobjects[10].outputMax = 127;
// set up electrode 11 as a proxmity mapped controller attached to controller 113
MIDIobjects[11].type = MIDI_CONTROL;
MIDIobjects[11].controllerNumber = 113;
MIDIobjects[11].inputMin = 0;
MIDIobjects[11].inputMax = 200;
MIDIobjects[11].outputMin = 0;
MIDIobjects[11].outputMax = 127;
// ***********************
// Touch (note) electrodes
// ***********************
// // set up electrode 0 as a touch sensitive key attached to note 60
MIDIobjects[0].type = MIDI_NOTE;
MIDIobjects[0].noteNumber = 36;
MIDIobjects[0].touchThreshold = 40; // always make sure that the touch threshold is
MIDIobjects[0].releaseThreshold = 20; // larger than the release threshold - larger values
// // are less sensitive (and more robust)
//
// // set up electrode 1 as a touch sensitive key attached to note 61
MIDIobjects[1].type = MIDI_NOTE;
MIDIobjects[1].noteNumber = 38;
MIDIobjects[1].touchThreshold = 40;
MIDIobjects[1].releaseThreshold = 20;
//
// // set up electrode 2 as a touch sensitive key attached to note 62
MIDIobjects[2].type = MIDI_NOTE;
MIDIobjects[2].noteNumber = 40;
MIDIobjects[2].touchThreshold = 40;
MIDIobjects[2].releaseThreshold = 20;
//
// // set up electrode 3 as a touch sensitive key attached to note 63
MIDIobjects[3].type = MIDI_NOTE;
MIDIobjects[3].noteNumber = 41;
MIDIobjects[3].touchThreshold = 40;
MIDIobjects[3].releaseThreshold = 20;
//
// // set up electrode 4 as a touch sensitive key attached to note 64
MIDIobjects[4].type = MIDI_NOTE;
MIDIobjects[4].noteNumber = 43;
MIDIobjects[4].touchThreshold = 40;
MIDIobjects[4].releaseThreshold = 20;
//
// // set up electrode 5 as a touch sensitive key attached to note 65
MIDIobjects[5].type = MIDI_NOTE;
MIDIobjects[5].noteNumber = 45;
MIDIobjects[5].touchThreshold = 40;
MIDIobjects[5].releaseThreshold = 20;
//
// // set up electrode 6 as a touch sensitive key attached to note 66
MIDIobjects[6].type = MIDI_NOTE;
MIDIobjects[6].noteNumber = 47;
MIDIobjects[6].touchThreshold = 40;
MIDIobjects[6].releaseThreshold = 20;
//
// set touch and release thresholds for electrodes that require it
for(int i=0; i<numElectrodes; i++){
if(MIDIobjects[i].type == MIDI_NOTE){
MPR121.setTouchThreshold(i, MIDIobjects[i].touchThreshold);
MPR121.setReleaseThreshold(i, MIDIobjects[i].releaseThreshold);
}
}
// start with fresh data
MPR121.updateAll();
}
void loop() {
// check note electrodes
if(MPR121.touchStatusChanged()){
MPR121.updateTouchData();
for(int i=0; i<numElectrodes; i++){
if(MIDIobjects[i].type==MIDI_NOTE){ // if this is a note type object...
e.type = 0x08;
e.m2 = MIDIobjects[i].noteNumber; // set note number
e.m3 = 127; // maximum volume
if(MPR121.isNewTouch(i)){
// if we have a new touch, turn on the onboard LED and
// send a "note on" message with the appropriate note set
digitalWrite(LED_BUILTIN, HIGH);
e.m1 = 0x90;
} else if(MPR121.isNewRelease(i)){
// if we have a new release, turn off the onboard LED and
// send a "note off" message
digitalWrite(LED_BUILTIN, LOW);
e.m1 = 0x80;
} else {
// else set a flag to do nothing...
e.m1 = 0x00;
}
// only send a USB MIDI message if we need to
if(e.m1 != 0x00){
MIDIUSB.write(e);
}
}
}
}
MPR121.updateFilteredData();
// now check controller electrodes
for(int i=0; i<numElectrodes; i++){
if(MIDIobjects[i].type==MIDI_CONTROL){ // if we have a control type object...
Serial.print("E");
Serial.print(i);
Serial.print(":"); // this prints some Serial debug data for ease of mapping
Serial.println(MPR121.getFilteredData(i)); // e.g. E11:567 means E11 has value 567 (this is the input data)
// output the correctly mapped value from the input
e.m3 = (unsigned char)constrain(map(MPR121.getFilteredData(i), MIDIobjects[i].inputMin, MIDIobjects[i].inputMax, MIDIobjects[i].outputMin, MIDIobjects[i].outputMax), 0, 127);
if(e.m3!=MIDIobjects[i].lastOutput){ // only output a new controller value if it has changed since last time
MIDIobjects[i].lastOutput=e.m3;
e.type = 0x08;
e.m1 = 0xB0; // control change message
e.m2 = MIDIobjects[i].controllerNumber; // select the correct controller number - you should use numbers
// between 102 and 119 unless you know what you are doing
MIDIUSB.write(e);
}
}
}
// flush USB buffer to ensure all notes are sent
MIDIUSB.flush();
delay(10); // 10ms delay to give the USB MIDI target time to catch up
}

 

Also, because this project has a lot of part to it, I will upload a Zip file to google drive that includes all of the files you would need to get it up and running on your machine.

Here is the link to the zip:

https://drive.google.com/drive/folders/0B6W0i2iSS2nVWDA4SW5HS1RCV3c?usp=sharing

 

For the future iteration of the device I could imagine, Bluetooth (wireless), battery powered, conductive paint on a 3D printed overlay, and a gyroscope. I am excited to continue working on this next semester.

Have a good one,

Steven Krenn

 

Project2-Mingyuan Yu

In the movie Hobbits, there is a scene about the hero face a dragon. In my point of view, the dragon’s voice wasn’t sounds nicely because it did not have much reverb on its voice, which does not make sense because the scene happen in a city in a huge close environment and it should have lots of reverb. Also, I want to add some spatial effect on its voice, so the sound and video can be more interactive. In this project, I extract the voice track from movie Hobbits, split it into two parts – main voice and others. Then I use leap motion controller to control the sound image position for the dragon voice. Finally, I add a reverb to the dragon’s voice.

 

 

 

 

<pre><code>
----------begin_max5_patcher----------
5525.3oc6cs9iiiib+y87WgfvhfjfdbDeIJkOcI.AAAHKtf69RtawgFpskcq
cjk7JK28z6ga+aOTj5s0CRZI0pu3Y2w1iDEUweUwGUwpJ9W+xClOG+c+ylF+
qF+jwCO7W+xCOvuT1EdH+e+f4QuuuMz6LuXlaiOdzOJ07Qw8R8+dJ+5NaLhi
L7h1YDueewcOk3elUXuzf3nmR72lJdS.nKdCDgfT6GM.T2MVruHVYeAYeZ7W
xe7youG5yq8hJL5xwfnP+TNs.JdKdoaeIH5P82.B5vqULnuJuNsUu1B1weiw
O+yekZU68FeIs3Eakcw+1W9R1GOdi3FZiw1W7hN3a3cYWPrA60b5RpAqM8hQ
bxN+jhmHLHxea7kH9iA6BfGuDU.DAH.FfyFRI9fPSB36hHY0FE0WUKAzaSme
nmrw32exOx3LCy1MhHKlIHQssoPLSLx0pVKahjXcnbPy1F1WcKCpQleTCuw3
repQZrwev+vkPujwPNjnE45L8cycrIan4iiPnV2PWcav7ibPisg9dI+CI9d6
xD5R15O1.kXHuwXaO8XGAQ4cLgna.1vNyOrQYyrj0M8fW5n3kkCqaJIqcLGS
p3.ghZGBuELyd9wL6MF+G6BRMR7e0O44QPMWK9POPHYFvLLkK6h.2RuSLd9g
LvFi+qnrodeMXme7HPFULXlEbFPLQcSuEQLj6zgWG8Oe16f+0hXTG.DgIifT
11BnBh4SugERZChTBBN88S9hpvzrrvM.Q3.fnkKG+Dqsri2pLfXOSlBz.Di7
eiUkWggmBh91uYJOPbN3PjWXOvwPxTPHnbhRjMueN15JPoViGLcs8SgduGFb
NUiF5ic+qr+tKXaFuyK4c0gCWlLYAZ.o0m+CY0Mbf5FNH4WcmWpWNBjCAOXt
ML3TolU0tA6V6CB8i7NJvfyGiOr4MuWyeCE2+aAQhWOWsfrqTq.gwwm38mqt
z13nTl.8SmSyllLmVp+VYnbRvg.FDxd4GRe4XNwUqEyK0ubwKLH88bFwydmC
1Z1n.7KkdIhgoEqMtYMbJfg3aiSx.77tWrWSihbLdme+ugLIltdplMfRxmIM
jFr8amaVImO46uKW7eSGD34WB1m1882GGFF+1gv3m8BS8OdJtKhIMfMxXZhO
qp5516iSN5E0yKnngTqxAv1LhygWRxdIcylxq+Nf4hxv6lJ9Q9EEWYZF5Zm2
1A5PK83z..eDZDQ7EcnwjnSn1M8zp94fzMuw54E+lBCV8LS8c9vRpOtrPoHr
vXE1nAa88rFH3DNm99D1nRFVly5TyX7F9Jz4sYBXn1rs6zMMTes4yorwRm20
hHV5qaogPFnACWhFrWR5r1hwBEIb3K6BgGpASPy9hr9ki9oIwFPiemGafxW8
M.p12VY.HWSJjXou.xPH.dAjwyr3vHqS2QnuATnsFmvgnYeY5BQDW2ddo6YK
p4bvuxeAfrNNxu38R6GlUGkK15eKIHaIjyrDW1rHGieMv2328ZbnRimxdzmN
5klD7c8lQQz0C5xYitCK3AmtIT5AHB88N80cr096EssxR1irbAqQsYET7ki8
fZv.lecfsFydTnbsrDliB5xm4a909MeUU.GqddsxXQz4ej4SF6814+0LC6MY
ZAODr3xfkL62gDF7xQz8.O9.N0fEXmiq7e6kF2CbUmdX8AZokXlhcu5mbtIe
3ASuSmpc4FZxwf1eNlWQzGKuTPj3RvxKk3+ZPwySJupWBCURYPxkDAk+carY
U0vTKKI5RPIelyj+RQEVZSG.rlMcfhct.jMJdoJJlOeXabnflxTdwwwFlA8c
8KPymKLd62DZtUndqYl8eChZKzVd6c968tDl9TCtm0lNu+dus989vcwOev7P
Rvt3nLZnAKJ6xEuMlvUtwSq2V3kHx6TGOLSThAm8byLc3ub9YujLN3yhtCEL
Vyz33vl2p74B82mle6SAQQs.Q15b6+lLEReYfm84X1MONTcyuy4mtDIt6Sr9
9oOc160lfcJS487ACZV8e2KJfMumegBuPqxa5G4wZnubdaBSs7FsWwcdsi6r
iI7u0+sfcByDzPVfU7fSExPlkb4cAGX5y27ZodGN27JWM7D6RWdNuy8SY5yG
la+kpBzXO1aZInpgMaYqlALYcywP+GEiF9Okuww0Ky0zZeqjnuQLEa6jvdgt
BM0t1VIcMhY6QMcMa8Hc1SqmIqaYLiGmSTLHZxAQfEe0JhkrftAPzYsCh.i3
DCKlnXz+RkSfzqyKLkxn0WOndfKcE.tMVlTSrUnSvuY.x9uMiKfNfE0yrEeS
SkpBbKTPDHVP6MMlfslHNbYP7vXucYq62Hw63IChkkFft9vb9Zqn3ZZkqINS
zDmASHN2TApVJQYXY7CfoEcgxHDay0NBKLRiqVXKdEfshpcZmyJuWdt51jhO
afPcr8XcM9Xs6TL4QWqaYBADdqbZkmrFo2JJ2rKxAWvADLFCtDKPYEfVszBW
YLKeLMIgLfFPVqkiz49hUp5DaAJ8rFcNsmc+tAybG4R.J4yq0Zu.Y5bjFD4U
sKcEcZZUtWB1syOpM1sK3blZN6je0FpRwDIoX6UCEi+zQwvOcTLPRJFOQTbU
mQ9HP8zarxT9Y9Ewejaojm9Q+nK0bOhbS5zc674C6CBCKMN0CWUB1RSxGkyT
TpGqcqFF0B5hA.mLSYgXSUBs4+h8CRlQspiH4OGn3AwDrqELq3XaHEysFF1A
hHnGauQ+4OJr5cZAbEuIKWGKr3WrKAdrsaF7foWzgbqGQspuDlLC.GeJNozR
ZaPtMdtKowGR71EjOVZI6pheUYXPtnUBqjcMwg4QFiHndcTyaDJL4q2q96dR
XQrm7RYJ577kTA+utoRUxxM8aMu9LRnvcOxsjS4iNjgeprNj9dWQXvq9aN3E
DUZ.7W8pd6We2d1ngbe2L+qbeYxolgsiSB5xd+R43UY+cOScnzqzdraSue9k
32JZBVR3NsXhvbxhPRnAYWWAcvv9fESFj8NS8SdRXVv5MSgDVon0.BYu5Edw
Od+0Fcup5CiiNzAG5mf+kJCoWUZFXjj1OCsQYK3CVcbuiLfN6desdO4F22iK
mY24cChBRC7BuFZ5pTW4NS0JxEVQJ6Jf+R8wDlRuK5cu8Ik6zRyMR..n17AL
yFnE6V+W.01Xsqj06VrlLn+6v6vgDFBwEowFJgsTbGklv8m8e92XnG0htHa9
lqHdCHzJcuUDpHXU27MMfJ1LeGBGOPCn7.mBhrK7O6Qc.7qfxfnTMbYLGjkH
HDHndd0Rr4tDxX6V40ClpyFmyIkTIi+.BoxYsANpgkEuHAp9X6KnNLSD9sNT
XAN6q8jhFhqYSjgoV1JvAJiBjmu7LCgqj76jwfqWyoOU3vw+TqYoXOzyhMYt
Z78pxxjZDqrmvGzKLfGdgEPF.RerrHPTWEIaf2xRfGsDjwJAHSamxdbkDRgO
rVpESGsOnxsOqwZcH5XsNf6nstIowglClG..Gs80nV59EkovyvMQqpln3WSj
21.lW2zrnGOoHvHX5iwzvant8fMDWBvg1g+mgFcppJsjAysi1jsWFBuTdJb7
QYF1TXWOac7vFDbMAcKsOJUnTzs3iR.q6NozcmT5tSJc2Ikt6jR2cRo6Nozc
mT5tSJc2Ikt6jR2cRo6NozmcmT5Vc6l++nqJU2Bv28So69ozc+T5teJcK9oz
c2WYrjo0N+sduavsSxX68mH1uE4Hgb6EOQIRKhH09fPvdp6grkuLagGUQyrN
koqrcA62ega5T4.XLeURU6Y7TBvhrrUG08MBvHqOP.9kfCuXrOw+Wt3Gs8ci
cLErBp1AkQP67jpnPxapgaBouJ+VEnc+.waNcKE5BoBWHgNGfqHOE1QceiXq
8RHKWrYsx3tEHgx64oXz5pV1daQn1D.k6lqPGKHJ2kScv1Tkc4J82QQDwtOx
UBzGhVF+cQIFfE3SECPj4hzkAfWeL.XdV77yBCHOEppICfrB6AHVTxmFFPdl
pWOF.XgX.i58LxjT9W5DViEa12xCDfaIq0Pf+8bhKE.x82ToRZoDq4MqkBum
1Rum1RWqosz9FFjmB9Ga5IRsrteG4jz4IoIJxEnHHnm2pLJLCl8b104sdg9L
1JS3H6++Z497dCnhc+nBkl6f87A7bGLiuAcWzV+W4Hvr15sID4a8Nye9Zy6a
YscqMypi3ZK1OYnPGbxfoDXHc5Zz6CiYURkV5rApRqyejow9ntNNKM+H9PjD
LICla1g8b.R.m3UR9gBH14.hX+uGAPrVF.omtEIFu3Es6Oe6cJFHXIoX6pLk
pHdI6MwWZO6CDHZw+uyZK1VzJcqaa49xjoKPRSluqSF.isdIo9mC7hL9AfwO
.GKtbEA8FTr4CEGmOy9ZIrEAQUgYn630JipTlKQXIv8dIn4jo+dGtOc2tAgv
74XQ7yIN6np66RxFnGDmwSzvyQ3Jb4XUNOvLfsh7yMTLgMt6iYevdl+fe4+J
H5+4Euy9lpFkh4ptpgBqEvrX.77TgtN3LpmN4nIdLd+es9IaPX7VuvFswdNN
8XqWmTZQQQRXFWyMQZFCytkAtrMOnAy9ENKtlaZLq1Qm.AYIRUDW+Kf7aBx.
Ca3x5FTbtnXK3XczTjYyNltsznvs0KSOBA9uwCqffB08KykA62mEwmUpWW2r
Hh30XWh2gJGwuX3gsgL0vSeII9xgWpe8q7o+l230quwyGJrPP4UDmgiRHAAo
0Nl7PB+MhuGeUc5JFb4kXuMu3GdhAsOg1vfqSdocxqoCcF3X09nyqyWpLV1j
N6mKGYsX3tMwmRCN9aFHihAxlJCyI0u5dzOpZS7z.2spyr0YTQkyx8zOgAUH
I+PBwgaQXhitf0GzL0YxtG8N0U9cIWrt1cG1hTBK.j6rL7u5ZBFw1JV+ipz.
SaNB2O6er02kE+WiiOJBMIBD5.fSvBuH1hEDHN575rozsKNY1JNsjZjIGU6e
f9PylLWIOLPpjY3xVvhQSSxfw7IgBPOUK+C7Denw7iwTC.+++JawMtXaHHa1
WWaLBwWciEO56s1.q+AW3zrQk.E0yFKKJhxyEVtNtNXUpBTqpfSQtXKjJUBV
zXtwZgjWtleb0U53Is09IoZ+jNZ+jtZ+j.K8eTf9OJT+GEo+ih0+Q0WRBnun
DPeYIf9BS.8klf5KMA0WZBpuzDTeoIn9RSP8klf5KMA0WZBpuzDTeoIj9RSH
8klP5KMgzWZBouzDReoIj9RSH8klP5KMgzWZBquzDVeoIr9RSX8klv5KMg0W
ZBquzDVeoIr9RSX8klH5KMQzWZhnuzDQeoIh9RSD8klH5KMQzWZhnuzDQeoI
a8klr0WZxVeoIa8klrUVZ5oCIwWNckhu7qVp2qIv.ZfL3gXVe5EV7Dh1so40
TwUEEIeQwxWTh7E0V9hRkunNxWTW4KZtxjxUVfBkUAFFPANFPAVFPAdFPAlF
PAtFPA1FPA9FTA9FTA9FTA9FTA9FTA9FTA9FTA9FTA9FTA9FTA9FRA9FRA9F
RkAHUfugTfugTfugTfugTfugTfugTfugUfugUfugUfugUYlME3aXE3aXE3aX
E3aXE3aXE3aDE3aDE3aDE3aDE3aDUVRhB7MhB7MhB7MhB7MhB7MaE3a1Jv2r
UfuYq.eydL9VmGL.AQ0S1iy1ACP0tdk4F.v0fC.LjC03hK2rerH9Ic0d6qc+
.2q+SF9m2NMaz+PNkGoV9ZH2oEQpk4awpBR+8XpuEIRKahTvLNOAhYMKIvV3
sj.aqyVtmAaumAa+fyfsyRNpyQDLK4Yg5QyeXNpmj5LWlTM4Y+PCHUirulvG
wtoLgn.Dyyze3qhEftNONrjHe10+fQeXIzyu4+tlI3tG65K8y5c4PtHmCPtJ
VrU.xA5B43kJS3IaNOy4SWNOCN4mMi0N9DKcxLyxyJvtJUqi9v7CUiFG8gtN
VH2qxw9spBkOBDutJtoZnyCSwFk35CUw4OSw8wj225KLo1eILjQ799QUYK2Y
JkQ.DyEvmLvgpitBPk0U3lONwlsSELglSTZOGIX0a1KTpP5mCR2b5sfncwuU
dRW4s8aYVYPjhH.CEzni.AwQBorwTnTDCwXgeSCbfaboTpsiHHGbrrwDmNCn
Tv3G8d7mq4rPBXo8X44fyvig2y32tMJyUice831WwjjkZPRPMvUE0jcJ2TcL
6NqjisLzCZwPGBbUQNtRPMzQnllSO2ZCzqp6IklARPy.Yo4FNNv7QyPInYnb
zL3JOdXlnYjDzLZkgyXInY7JCmIRPyjUFNaKAMauhvYGYlXxomA6.SN4PWWK
hfSNf0C4HCyZsMyDUBHDr1lZhJwTSf01bSTIlaBr1lbhJwjSf01rSTIlcBr1
ldhJwzSf017S1xrXb7xoHmTZNYuxnmrDm4RQOv0E+hHyBbP3EaANDaY3Wj0E
8.WazyJieAQqK5Arf7KxpxNaRQNfka3PBVlgCWP5AsxFdVloKrcWWzCYkYYz
Eb5conGvBhOVxXqVxJjdVFC8StEy6L8jCdksZdrLhyT75hdffkidjRbdgoGf
Lzyxz8RlY2gK2nyH55p6EWuJvMZQ7iA6NEGDkdtHCb5HbmZGwgcCzwp7j1fe
sYvHDHoTx1dwVzMRp8Kc4TJAAVWSy.kYZFHcwFl.5HK8rP3iLiSrbKZBJkN1
KmR.PhrJsAVjtWPoUhDtLzCRV5AsLziLqRAtfC+H6hl.qFxgrbqwE3LAawaq
EEPnfLG51VDLZNhyXgl+Kr3HZCXYUcpfwu1LrdAfTCnYubPtzCngWjNr.75x
JB.obOukacyfUlZofUlZfRQOiNjVmYXXo2JSg6x1JrIyH3VgKYqPk75vjr+P
jrc3Qx86dgKW2xEcqb16rSot+HON.e5GKOPEJhVwlvZMO8usG6WFHDh6V3o8
sh4.LfmBU1f.HJTD8ArejE56fpHNnUzRPvtVvVQKgCDQPMRu84Ol5QHQ2wzv
0wwPY4ujFWFrGkwJRQHD7XtTYB6ts8zcyiL.Mn3YpKEWxLN9t3gtQdvUAihd
g9QSFgCAXwOxFbvPn3vavAwlaD10SAGKObOc.eWGUD4cLcY+ghK9kay1GOjM
DQsRPTVWR+1dVwU8rqGkDrwL9w3Huswlhynual2KBIt+8vK9EwKV2B.da25G
k1fih.Tad94XicYuE2rKUzhmZBDt1IPzJl.+OyBaCk4wb4QBJ6OY+BX6XCoy
EwAWyDGZcRb+I+rydzg4q0CIqehGvnDWKqp.voCp2AR3onrMTGfCOoxydFR4
Idyz2.fe1a.nOgMf2xVOmww3n3ymxRbDquE.HyTpsWDlCaYdVbDygo8r3LKm
ggNP24cs.MZsr2mivekcb.4MVB.g.CdTS4xHRr37Wf5P3IQI1ufP.7VWDQWR
XRszJS+P+iseTpikKP.rVVPwpqcvH.OB+lkktvdl+1W9+.zvKaML
-----------end_max5_patcher-----------
</code></pre>
view raw project2 hosted with ❤ by GitHub

finalProject: Halftone It!

This final project is a continuation of the first project. This maxPatch has the same conceptual goals as the first. These goals are to create an image renderer which turns an input into patterns of circles. I want to have lots of control over the dots, so I put in variables to scale the dots in various direction! Currently, I am confused why the image renders 90 degrees from the original input.

This patch works well with images generated in photoshop to produces interesting patterns. Conceptually, I am interested in creating patterns with tons of human artifact (especially digitally), but are they really artificial since people are a product of nature?

 

<pre><code>
----------begin_max5_patcher----------
2352.3oc6bszbiaiD9r7uBTrlC6VQiB.AelSNm1Ztt6kcqobohRDVFS3qPBY
6Iox+8EOHoHkDofnEknRRMdjMAnH69qefta732eXlwpz2IEFfeB7UvrY+9Cy
lIaRzvrxqmYDG795nfB4sYDSJJB1PLlq5iQdmIaOmDDBxBXLRdRwhrhvp6Hc
KKhvXeOindMFFfmJ6pf88HYqFU2L+Ar9EZxlk4j0L08a5s.Nm+oo3WHnk7J9
E0OEZn7Qjt5ae1t54jrMllvesRZ1bWiJhQ1JRz3e7vChOlqIy+bTJ+gT8RdN
MONPRkNcxqyAFqBR1bt7ruufMwHI2ZC6imsr28fxChIbAvRRRvJ0aAdL.AcT
.wbJCHny.Pv+U.PLwR6AOeM.DzMDPRHuwogCcW.jL8ExGgusDEjtHrr6CKv9
G0EA7h4hnC9MK3W.vE7etXtEUJ.Xa4urc6kowirewNX5BPXJ6+P+Mx+lDEvn
uVOpwYwgd1JO+3dYQSC80igi.K9uhRWEDMDFr7W98q2htU72lbZnfAGBqgLk
5kN8K5f2FVSZRBfWXCReMFgxz+1XOlAdIH5YVZB4KryRbhcZLXia+7l04HMa
9JI4kbTIKwG9jFQdkjWPSSZ7LlYDjk0n4YM9JBb3aoxGj675lnIplLqaJm7J
s56aU2ZPNmwYbtdatBRd2ywX2iIMjGa6VZsPQJQdn5AVgUNdHIJICa0GIUJ7
ft6PKtvaST55egD1.B35eYjDZRVNofjv3dKUDWc2gjmC1FwV9bZBqPXNJnBw
.dGo+mCVS57Kmvi.Pxb+bNs1g0LCgYdZhfHZA0hlqdceEfTthsaxLx6HIH6H
eYt9.GV5nyBNStsXUPtPRTFKRk.xfklF0tq5uWD4YVY2Yzjj8PQVZV2clS27
ROe2Uo7Ni66YK6oX41DUuK4FbrkEAu1FsYAQQkVfse7uGjP4wCRXTkHvDV2o
JdrWJVmmFE0heU875Q5IjqDul7FMj8h7E0TYfe6zrJkHiZobHcCof0tMVvlh
1sbfOAdSaWUZjtjQhy3Cmu2MzJQxlVjM8U0p897Ys+fPMBVrCJrCOWtpfBwk
wFdPXRcNXTmtv5ZPoYUtoKcLb4gAtZWv51gQd7Qt3Igvy5Xd0ezhW0F4rsUF
6Xk6LmSgb0CpcNHm40A49UdRO4o.LDBdLXsHRT.p4MFQSHqS2lvZMJwwf1Vo
pcd.pC1VkCqbHAW0E18nJ1IdZ1Idhtf3o780qd12nrkb+Y4z2GHjvEHR0JoJ
FFV8YmpXchHvtQjF8rNMNljT5965n4kefqqtiybXpSNtGOq2C.uAgdWGThqH
s3MZRX5aMhPE7nz8EmqAvOfw57OJBaapJ8XYIn5wh0DMccAx.q.j7fBhgNHl
5N+PvlETBaNRaaQtQcgZdsTL6ND0dwzVgEiW.u0vsPidSzhbRBOogCS6ZL0W
svdpAtMOIxa8mWjWlVxKAYjVdTTsTjwiik.dLRjOf.CUwXCDQGrkmB.2oyZw
EgzX.BJ94QAvHJ0SA3w0oQo4.D+evg5Xpw.mCWbirsTEWwYgsvKkkpZYcKts
8+yq3NlmdKMKpszlEjugvZH51DIq.dAHKsfJxNBTrNHhzoPzp2ws+vhNaakk
pkLhPG2tEcNvAJ5Lu0ht1yW3d0iJJHg.9LZNfaSIyikOpwXDqDtrRqtVppRh
NUvRH+abv2B050jnnUhJE0jVxSe6.axCfoHZgL+u5+2hO6aBGUkbGphlTTuu
Ni04LzH4R2iEDT2Zo6W.qCzdgszdqzdjlrcqVacuGxO1qzsgdQ7i7twQ72ms
+oqhw.AIKWU35JS9CKD+AnjyM1TuWUoiOAZWT.yVMyZdtpoY6z9FcmvpUH3H
oUYg1ARZnTYeGnT0ZJKGCzRMsQ93ShV3ocoITgpCv.YAIvl7+BaL5w2WNlLR
kUWUPKndfQzkN9dzBaeajm6THH+7MqLi1FGb0.d0L45dRsWqoaQeD3F48rbv
izjrs7Lfr.OJull7U3S+H+SzS+.+Sym1uE7S.3UCoqVcWkgc1iJt8.0vsl5Z
3iWPikSfi1AMBmvite0RXTknn94KZh+qU9h1MmJKjqZfJ+dJMN5uyV7Ttnke
VjjlGy8AW9GvmFemvkyyqKpgrrOevtW5RQMkhxnLTOy5P8Psmo3QUDncjd92
0A50mGdQI2+DB7IyQISW6cw04bx357lxovs2pxbDfI0mNmbnOmKT7B6VQYhR
v2wRIRRsh9ON9UjtMecE2WZn.ZS4gjBFMod8080ZeZ6ceuPCCII6yFgzBwLE
Ep+p94boXwrgpEIKl7toDMitynYMgY+6NJVTF.sH4XZXVJMgUZq4XIlGQjoJ
zNnW8UsemiNe5pIeJlSrgym1XE6xGGn5pIJehlLZfN55ZZxPw1mitD570kJM
Sppigma8UWYkIcYTS3jQ1Xco8mM9jLVWC.y6NR1ZnNSktQwpUxfKFd3Ud3FC
n3gu5lF5h.3oiogotwsJL6MmNjLRSRFOMHY7c2Hvll2edfLuvdfFeJF4e+MZ
JR6zCbFlmdruLRYjZK3a4qV5ZG8JOT8cdk80qOJXeGJ4PeLImoZn5pL6t9Y7
fzMkGyoSV2ZSyR6JzzflwmQ3C2YjLZBQyny.lmHZyvKbYu1yUCxBpbtHWgTU
UTBd8GG.dkKUA3oGZtgvMDaJ3vkpM.8x.FKmtZKSUU6l6v8yZi5tQtdsJ2Ft
0y3Se6Z2cas2G1Qum4YIP0lla+CSfVqLwei.9G+24+u+4fN+KbK2U4pUUGri
yUfw9Th3D74vOeOPNVZve0KC0Q6TvXa7JRtw3bRUo1d08epWftXmKSksxuQZ
713AeHYLN.R45NVG.ANs.jmynq6DNNxd8s6SJD0TrhT6tW6lZ7hWgbyEGuIm
T7YzhukUeJPcj4dUGteHrZemhcAIe+RclvnPiRcgdO45bF4SDlt7tEkFD9k3
FPw4bl7A0vul0Mxs8G4XKRKFanG3TxmU643Vwm6GiSI21+7.1UBTsJlxgwzb
X7LG.65RNNZPNdWMpwdRQMV5PNhSmscYzLtzCVW54JgOHcnGzUidv9SJ0GrV
hKyqF8XpC7zdZTFU5AoC9zdhIFW5ApK8LD7QMvwdm8YBRYuy7r8NuyN7rNq6
y4r8Oiy3u4+3g+OvBp4hj
-----------end_max5_patcher-----------
</code></pre>

Project 2: Tweet Generating Sound Art

Can I use Max MSP to integrate data collected from the web to affect the sound of a musical composition?

In this project, I utilized the SearchTweet Max Java external to search the Twitter API.

I began with a simple song construction:

While Max is playing the sound file, it uses SearchTweet to identify the 10 most recent tweets of the search parameter, and stores them in a Coll object.

Tweets

Tweets

A number of operations (word count, letter count, number of uppercase and lowercase letters, the use of exclamation points, etc.) are performed on the text received from the Tweets.  Based on the results of those operations, values are sent to grainstretch~ object to manipulate the track.

Operation values also affect the voice (using aka.speech) of the synthesis engine speaking the tweets above the affected music.

Main Patcher

Main Patcher

Sound of the affected sound file.  As the variables will change per each refresh of the Twitter content, this is an example of the types of transformations that occur.


(Max file was missing in initial upload)

<pre><code>
----------begin_max5_patcher----------
16966.3oc68stjiibbt+d2mhxc3SLRV8xntW.a333UZ2URqk1KwNirNRZNwD
nIQ2M1AM.M.XOSuNrB+rb9gev7Sxot.RBPbq.aRPP1XsUOMtzjU9UYkUlYkW
9O9zO4pah+ne5UfOG72.exm7e7oexmnuk5FeR90exUO38w4gdo5W6pH+ODey
Oc00lGk4+wL8sy.AfaVe2kdYyuOH5t2k3OOy7gigtyfWCHtzYL4+.UWfwyff
+u4+MAKzeNxO6OCiHq+jhV8PPTnel96Fs8lwqxVeWb9cSydJzW+Yr9O17RYO
sz2LFtJHJ6pqAWciWzcWA9+pdo+yO8SU+35mGw+q.n1HcBWQsTl9evtJ.nYR
GWKoiqkzQ8izOjjbhWzh3G.bRaDNVOMSwrYXWBjbMf6z97N57f3W3G58DfAg
vVndGFRQrbrdZm61NkCONT9.ypyX5IXJjYAqNjd4vpygZVcBkqH4NXygjQFg
+feZp2c9Unbb6b3Hjg2lvM+incp9HIY6vRxzNHYHRn2.yFRF45dNPxjNjiI2
xFZMEKNGn3NjbKbI8XNlMln3FDg8O82AvYNsxW6n2shQ0r2Tb6z7QZobZvcQ
dgGTJe9i9I272ADFbVqjOSSwLypaAscxmb1P9cNw6hzL4LWtMy6nys4cZ6y6
NN5E2LN2loc33i5uYUVVbTaJlXleQBs9IF0yT+rVJzwoG1ccJ0BMEDo90NI6
0ldQZch0g0CxFVkrOfz0buPe.TJOBf.XVaaRQcbzqX4ZZy0scJrdUs4mlMo5
joUsdTv1nNM1rtj1DwQNW3Z2N6BmAHsIXh3fKN61tXYGzY0rK0EUvVotlbgi
sI2lTpbg+bKHZa7+ER3bNnEcPz7t4fyI31cE.RLtThd0C23mz1jofYzVRSUr
NlLwsxAuzKw6A+L+j24G4cigffOWGc977xYmqfWO2Z0JXA7LQ7773UQx4A.V
Kh1Bgyloem1sOjW+ZYVsjOs29xd8+6P6zKydUHIysbuJHlI+4lsYCCh70fUQ
tx5MpzvZ3pU6DA0aiQXMgThwz1XcfKHJD7YHoVJRfYqzq5blfTETkSkvzs.A
tcs037y.fH2qnnV8jBO2evNZ0vEr1IaxYk+fkTdaZvwM9MRY.pxzxV8HLhIN
OH8ekTLeqVcYltQxk8DAj5n1incBmedMmi6l5INZ8A3cLiyNSNCfT+1rylfM
dT.ZwYahnmCtJMA3qdoG7xBZ2wJ4m3CBoUBncKzn0qCHbjQ4gwevOYtWpuEF
xXnaQGzM7rft+S+vO70+3W9qe8WagNuF5tCKxIip46lVZiba6v6cLArAWyl2
w9WD3YwJ6ODmr3O5GcW18sR3NEWXiZkvwtmESzz112B41iYZryYwL8768R5b
ldMgmKJqCBmeFHJKCbaqQgEBJkdu1Zj0muYGb33iSrXcaXr2yLZrjeDxu90e
C2FmH2ztngRcB.lSGnC+2foma9uoAlCkY6JGOigVyg3xLGNX6.T8p0QNDfvQ
xAdtBdO4BPhKDtftDQTBZrRBAZ7Jgn0UBsuPnDNjuNf2NNL9VGrer.EcYkcr
.PmKoMIJQ+1Ic.9RZOhR3iUaQzPf8d9szvg06kFhKokFkneqVZ.QmzkF4uh7
aN3AIsp9zmAG30Kk.MaVuzPbidBWtLO9gG7ixpP++PfjZA+n16nQRqO68QDI
0dXWWFKP49RrAFpmWv5rgaOJKM3m02DAmggBhK8PBLwoOGXAle5AVCKtjyBX
425snMmK5ZbtHUEW4TtqqPIkYFWZ7M5Z.pgvVykdLHcFlwf3CHo+Z0mcKjNg
slzwPJVKq.tgzEMP5rCNo6NiSbbwNGZgDsIezbVI8bVmedLquz2eQa5RYNZT
UNR4HjK6I5fvcMs2zhcwgm1kK7Hbh.c.o8ezu8CORPb1I+vnn0jtJ0wpkzcN
FjtKmwInCmZAKA2k3Ez1wGInFIclHjfR25zkFUJndyrEOWkBxC+3qKDHxEG1
9I4jeN8KwtfP+G8SRUmO1Vn+Stxa4xB29SJ7mn.seJNovv0nRl4V3M2Jw+wf
0+8zM20KQBdYRjaUhgT9ny509pOl3E9IQqBzCEyMkSee55OvMGeiVgKCZivl
HQgKHagZ4L8cgwyeu+hBbNR3ZoeTPzxDIqbTl4LAK93E925sJL6ck3mTe307
7a8l623ebjTKXMw8qSBTyF4uxcIAKhiTChRPs51q+5jZKn24.wJRL52HxaYM
+wRlIIrzvCSkD4pza7RTyD45iudB5pr33vxOZyeWn+sY4OdYPTzNnXV7xleX
Rvc22xe6MwxG9Pae15mj9tUQlm9N4pyr2k58XYzNyKLLe4Z4O9O5IsMvKyOK
vLEfgadnwlj6SmmDGFVhdMO4wZdxBIS7b+ODrH69byM19D4qGrbMSzUalkWD
bmeZV46k4cWZ46TYsr7VqtIeQ56x7eXYnjJJ+BkRu6hqHKJXqz8a8HkpDZ.K
kp4BK9v5hlaiAhlzgspOz1UN2l3krwSYp4CboAbpsCd4SVKzOWxwdhSk1HXG
aDi8VnsFscXRXLmFyzg7MG1ENgZDlPGRXpf6ENPPUqrTRIsdKT4rz0fGjxFC
VF5Ks6cyueqz9A.xRjzQetdRaX5DJIE+DaVb7AkgrgsLF.d01l.VpzUOYigq
f+wt.alINAxYaQH2NA6yx02shYwoAJg58A1nTmMp5ZBQPDg0EzwtzPN8x4Nw
JhvUmNP4.EC0ENggWZ.k1bBkzhtQKrwCiXlNdkDcxTIPWZfUpxl6tAJTtm6y
qSGctgKCNsKQwcIrfUz3b20p9Q5DgcdQgvsnynY8dVhuDS+6.L3l6dn36MON
zX67eSppDmAckpKI+E0+IL+FVPU6orCVW2bjfNinS1RnIt2DPiv1Vlm378bd
pYMSIGz4oJ9z35cRy5CzLnlxrx7GpIZg27ylfVml0NBdDTquDOkwKdaRo4AD
ixEEaMHQFFPZ7.P4RRsFfnu3.HiVOVCPrWZ.zZknsFg3uzPnBljYMHIdoAR4
l6aM.4bIAPlu1tjDIM4By1DO8VfQt6g9RvNwnSJHnR6wdABtvSBHr8.STglQ
CdJWSepmWO5jFuJY9ZFwbOyBJSnK7SyBh1b7Q+sstcbmW79fEK7i1k1VDjpN
sAy4dX0TYeGxJmta0XVo5+HYLWC7M9Gymg3L67aHqb.341XVfNCYMNCwYkSl
N2FyN1J1nF43mrwrshmqgI5jMlo1NlcFOiYakOWi.lS1Xla4XFOh3MD1xaLd
Fx1JpCMdDavsk0PY1zXZLirXL6dnXmy8h85Hc6JUzNs3clH65cdYYIA2rJyX
OSwP2qWQfzcgw23ElGeQabveagiz1XV5S2NdOzEer0QNo4vfau3i4btT6wVB
lm3uHHKs0xstIdY4lpza6Yinf1izUu43j8RJDP09fvTadLtuh5.mh+yo3+bJ
9Oawaekis+ci+S05xrO36mMS+WbMP92B9IuG8.x2QsoQ3ait4IvuK98y8A+A
49gOEeW3JvuX97eoDlQHo9cH1aidazuYUPXFHNBn+zn+DHL3lDujmdaT1GBx
jeTzeZVbxcpW86krr.UTB9f+rrOlAtMNAnNqb4zqd8IvKZg7OeteTpu7AlzZ
Td+YEogRIhkvlCvEstdOs8pFC+H1A+3wg893ws0YmWtZRrOkGDDAuIQLn48D
f1yu0ytpCxdU0TJjAqVAKNu.PEWga+.E73HUn8931TglcvxO5NK4J39tx5k.
OjvTrwVCHsVJg2VHkabKkiGTUuBti.DzoFQSs2HpHmWv3QtBFHMsQpP0BoFU
R0Gm62ZEsUitBgIPCoazIp4Re9dhz1ZWt0n4dwLtHIdoxP2tgDooWafDStLy
ZHycI6SsR53W1StY0s25m72UgYpT88n2O6CdOB9LD.aAsCgaIdZqk0BB8fvO
77Wcc.pcJMkyyJlFoEH.uUKBh6h6wzcOHEWPYbpSCI+LgcP.v1SK50to.2.n
tGfUXvi9ytyKH5uu9K5Qus1AT8o0pBJLuCFgLovqoVx2TwAXilVo2G+g0eSv
1pbk0IceM7EmDTz6O0ipLqSv57R1+Ftvv.kASax55B9ZpH.rwIOaTbpnSOMl
sswdsVrb6QuvU9w2V0AcaQ.4tv207zSoWUhuIYV9tqwDXMO6A4Th5YelXqCS
J+bOMGFu1mJ2aLSsFXse91ZYdgWZk7k1vxS+zhVGuW1W5+yK7l+2svgs47rT
15eVGKKu8BqZX7buvicWopIgZ+ae+27ksUajoXcSdYMcJZSFFezzrsVBRW56
89tqt4bhocuvasnOywGmt1PY0.ujbHuHWTtVZlioPnvKVySl7I+jO4m7Ieex
arkAK8UMl7NiQ4b6Vbp2d4lK+sWJEkgzpkH7F8bkYSM8AM6zcYY.QNb92eXv
heNDD5GYEJXJiNjtSx+8JK+w6ACy0CJSSkNHPitkJuSOwm453PU01JGR2fF5
hj0gh1EKrfAB5bQx.Us4xzbAAzzQpoaKbUsCXhyMlmzJMbll6TCF6dM92UXA
XvO+.ic6BMMt4Mo.V3ZAVvN2vhfaA+iAHv+rTlAAjcueDPYDDvOL0GHGiX0S
siigxz0.HjqS2vDcOfowt.mbj7+Mvka.R0U6CNZx+XjE5+.IWf3XpeHfP5LK
1oEvJZ262CGHkjLUerCMbUJRMaDSLsUGBzclznCAmWWHaV4jNcOWqsY1rTDV
qHscqPbkhPIpULdXSEjxbpB71J4OhKYQcb5dtmAN+3XbLaYzYYlhdACi+y.W
z9siQNJZD+YwFFT14JJZk.PSXZulapSQeD3EnnOoUh+6q7W4aETkKEq6BEJ9
r0Bw1JsVaa3ZMBSXgtRdvfxkXHDSUuzYctLCytv7fmWVbPWHEywTySjaFxvD
LittxUzpZYMa6H4PhT4G66.wW8y1hUliioZq7sBL8Bjgxsfr7tYjNa4iZAjt
MI9gzmd3l3Pafp799dmVBgGlM8FLTJAj4ml8socUymI4gwhfqVs0cInDOb0a
ngAnVG8gEOI9FAKiJADBQ2Al6VNt6kGWkJ6XZrPPRPBN0T+GYTWHV8atpagr
pRPlaEIqPLbzF55bNxJVJ.iqOHiaNZ8Lg+giPGLH3NKlo14B5Vhp38R80rj.
op8U+b5JRsOTruEyCftz0XMV1ok1LxKQr74vrhLYGs0.L7kH.2QQj168feue
XXr5TeCWz0gbZ5oLDixgHXm0caJ+Rqta+XbvbeaJ88F1QGoQYPHjfTGlUmnE
8bDsV8fezJKgC0IUkCG0jWEUvC7QXAKo+3UPT153YtbMXLHy+g7nb5peQdT0
8KUu10pe7quSk.patJTtmQVgK8+XgKTLUeY7CK8lW7Udzq5MevOLnl2MJp56
9a7V.9N+OjV3F2e+1KjK6K7n3.y4mXtJYkJMYVe0pajv5128K8RdHHqxW2Wp
jir8s9JuG7dxKJKnxK9UdQA9gUusehT5mpSxs9FA92EW4095vP+nJ282FDWC
B7aSJ7w86hi2AO98OkJYaBlahWc8s9lXuZ9b9Wq+tqhBjZlt9x+fWzSUeo+f
WRMC2+fW18Os8pmheeUB8O5sJo5m2ez+82WycWMOntg325kDj99Ztuevm8uF
T28CCp6iIPh40b63fj5tajDRqb6uKtl28GjKYp6K7GTw322mbmWz1akDDMW2
mQyuwO5EtbK67qkraQY0.Mu1Kotalsp5MCh9repJ65ajX36qdW0lDUu68wO3
kV81xEWel5GUehjphCVrkp927qCo+2Bl+9fhWkEKUqXyM9y2GH2KeKq3+Gun
E9IU9T9K9gKp9Y+WVUyW3e0K4w3sRn9qwo0vs7WW8yEY5FN8V7yrno8jq.tC
bFMOjrx2EB0xVNnie+W.NyQ3BY7QRiDoOXIRk4JHDm4XCXR3WhfY4T+oCi+f
jMJ7XvKg7FT4+GuDnskbPM.kNmDaWZIOuTJEMtXRElvHbMOJVXCOJlOsfuAG
AgY8ELmDd1heJ5IeI4RDKe9cPxbKIKtQjEGovEYejLoPqmtQ3xI+37b1.WDw
KuVKm1qMVxYUDp5ND9OOyYHabfc91oV6dUD9kn6UsQav0HIjrEI2S8.QjKd8
.sAQWqdxAARQSPZgSS4.fnrKd.88ogAKr9H.QRnccVgkW6bJVTOpFx7VsmR7
s2p1+Wc2hgNs1GpZGcyGRvN2G4Fjt3Wb8U5is0oVbd8rhn.jAJHndu2LU+Sc
98c1VC05JQTsYVLEAcU6.x6pM+fZ9XbXGpdCo6LjiCmg6ZCu7okA9XEyhW1Y
CLeM1h2hscmMIzyRMSsp00kGC0B6ZkTL7KuNWGpW.zKtle3VezZIBMPwYWks
DNkfzV+ZYIH47RDjvlDJ0VLx8EHFIn3dsZiCuv.IqZQh4V9pZBAXGUlIXAPg
Nq5TjslNBgyC88RrqJZXhoptywExIMkDNN8RRjsscHz3oe3frtuCUC0M5Gzi
mdkDx51IIZD0qQ4VOlGQHMzdV5wSaVyZtCnyHBoseTOhDd.oVOpGOsURp06s
.YiHnlX8nlNdVJZs7CH4bbPOdDUKrkolXay36gfEKikFOjqRGhpOF.RdPZah
z+xWgQjFuBkWnS00TV8EkGqG+U811vPohwEmnMcXQgXbwHZ0X187aEOc7rg.
w1lPMd7nkCgc9Ml4meCYj0iYVk0pmrwrsrFH9YmgFinQr0p9NdzgrFO7L9Gy
mg3LFd9MlozyPdCjkJHwFOxMr2iaJblddMlw78yhHA1XQDRe1XBlq93e14RD
WGrj4uq9pA1vGsOPsgeaT43QaWirmVyJPByo9x1Vdt44VpV8Vpj1dysxqTTa
t0POcZqXZFY+fFF2oBzvXUfl7aUDZV+WdxvFLxVwTiHa7s0udiHeQZ8gBLdr
7zVShHiHqks06OrwiuSoVya.GOiYaUTfNhT7ke9o3K6Pum9.Lj6kMQ3yqwLd
OUPHWCHBhXJeerpWg37MY1X9qu8VCrRALRelCGGdCy5wLg+7TxifnyjyLbGQ
tFcND4LYy2Wa.y5xWzZEE2buw5LKE8bQIccgkQclQD0bsp1ouCnr4VCMlzqM
FHiCtcqGy6o.KApfg5boQLhpWlant5cEmHK0omgdfCa8b23QIUF97K3BYVe7
0iGu3vDmeFCvbN+Ltk41GbdbngCGd9I2nFk7a3.+NT7F4Qb851Hbd+N2z1ba
oYm2q165cgw23El27V2z7eaqWutsgvt+sQ7x4Kaso2kK0zvGbLcllpoIaoTN
A0ZiDuZpwVMsXaKkXqOcXsoQVWJMX2CfpXlZWeZm3ttw34xnLraiopc0zzt1
FRS8cn7iB1TW9XefgGtqtHy+7gGwYI7TptdzRSrmCM8xdXa85ch6viA6jqx8
j7KmKNszr6YDM8icYsA.XZqBY16lc+dN2VLe1KzbA.ea7BePNom1BsutmCQ0
+iiwyMt0S5aZOLW0XOhu1bXyZPoXxr6ttSk2R10dU9NV6t22sAg9O5mjlu22
llgt2xkEtco85kv5OY5m.hq2bqfHys1jBUWk3qZ27l+9M0Wgq7RjvZlDSWkX
HnO5rs.xc0CxohjnUA5gxm9IE2LW8AtcuNsHISalFlWkcJ1urt5F41zye+NM
b93k9QAQEKnBkdbd8G9ckpS.3Y097a8l623ebsS2RMGRBVDGoFDkPZ0sW+08
2.n7SNrHwneiHuk07GazsogGlJIxUo23knlHxkvf2nURbbX4Gs4uKz+1r7Gu
LHJZGTLKdYyOLI3t6a4u8lX4CensOa8SRe2pHySemb4a16T5wU987BCyWOW9
i+idQAO3k4mEXlBvvMOzHk8dopdwggknWySdrlmrPxCO2+CAKxtW+EUjYnG5
LtUCvVTSLc0M4qQeWl+CKCkTQ4WPRcMkvfGvLN0zWRw4sx0pbiehsUrvwXxl
t9ystjM8+4+5+2qzk4rWsdy.vhX+znWkAleuR4WfWzS.kDpYM1BNwcjW3lsK
MsPETdDAHrriG0rjkCJzuyFKCG3+WhWAl6EAVkJQ5atQs8gVFc5LvqBdE313
D4+FsbUlZ+5WcM3Uyyuob1IwatTQp0OHJ+AFs4z2s4oLhMSYHWgo1YPMchoV
xt3WLSYEg2MqXjVMlp5Hn.yCAKShUkbbUg6VuxA7Ul8I0WABRkSRptUR39OA
gL0XPTdqD0zv0ZaFh9xYFp7JipSRad9vMOkmr9LTWSSrWNSSakpUcJR8VVL6
ndsm+ZHyRHraWyM7Kp4ltavOH4V1k6TW0YZrACE5cJD3csNbWLTrmX3gp3Eu
wnw9T8JNdP7OJMWStw8Opz.2Jb1zTDc3cgyNS3bVAeaoc1gQVdWsnamh6qBc
6Bncm.5J.cXfbyUaQZSY31Bjtb8s7kLTWRAm9vVmqFhEXMZBqqCq6EmcdTtY
AZimP6JcVPq1OzTWv5d6PDYBgKhvu69u92Gh+9+rUfLWXIHSm.4r7JAXtoMZ
CYrSZgsJbfXSn7tn7x6ii7eXywX0NRyrVgC94HRebJ0dviavWhxczHavq3KH
zfPYPxvSY3AgxvvgmxHCAkQOALizgfvbvCOgwFBBC6L7DFeHHL9vyJJFDgGt
COqnyfPXU7i7wmvbGDBi020XWtQmZigV0WJ0gKINzpnqBq06mg0GwZ94s1Pz
UwnSQW0wK5pPTs0AXpouxfMMtLW2o3qZJ9plhup8zD8kAxu5ta0oHsukLkxd
JqS6xeI4.jaCiki0xCkDIun5gbaPUSFQPEcgpGhntRhoo9Ro+Yl8D5SaaSwx
LONzHvuXi9x3slcF28suicyck9rc3x+Sbcs+1teU8YleaXnWtSSlN2Kmhm4d
coI5fGjSt5zI.NqrxWQqeD7fdr+10B5LrN3bWjYZcYTKC+q91441+dL2GT65
+d+mJL2hx4V19ix8fvmWWo6lPu4uu7WXGLpc1G6Vit6Zg28690vfxWEccs+F
5.2D7d18tZC+CxHPmzknmWTmaPKMXvTP29vdMxhVulrcn8ET7jo003U5fo8d
olc.4+5kb2J0e.3WHWJChS.xcS8x9k.UV8oBqraShePtLBjEaD.OC7GCdu7u
D7seyW8Mfn3r0QzoJ2m.yiSjqlkpDuHU8WHsOdQnO3KAMG.ZzNZgOhsp8jGw
IzWLwelMykUhKPi9jw2JmhLchy8NnzMXO2rZBx6JlzEWTXuU5.fYE5QYHpQT
ytd+Y83i.QkDh1Tnn0H379n3aree7tzYHNInnw3nwaS97Ynee9DDiXmB9tSJ
3eBUvmNTJ3+r0cKmsxVk2dYEVdOSs2xwVSBD2s1a6cX3c9Ex4IdRksrk2Tn2
ulhmBrNa0n5ajJPsQa3fTPQ8gm0UTfQzBAD4EsO159o7AOX6NCUTUw1Vidp5
nrSYgg546sNp4.+5.VpyDmDcYkjWsHqMCbCnKYsTVd58P2Jx.dDhqNzyPsks
m7JZ+jfn0F45AM.RA+5vPf9DYrbBv7ObXWS.mhvs6YOALXpWjXg5EqQbSvjZ
X7aCw2WqZgWNHdar5OFGJ2vzVuchgFo0ce9USIm0d3KYSrnag8HunxHqRkto
NPPG35SZniSBDN4ofS6QA1feBFZO.ly2vbrwCfnl8.HFM4Bvi8IBgMQPV29T
.+xo7p7JyF3MblPMeHPx+eoIxoAg9Qy8uV9GsP+D0Mke2fkwo5naBX93265O
f4HHxUaXckqrs5hC4k2LWyVV2E3a04+fDNENN0VKJQuXrs1N+X1SgNWVmC8y
5PaxUFCYYXYwmTF6kPbYY4QxdnzHSLoQ1w8Lz5mQq3IWBjCuODuXUnlGwZTF
apEpBTmnr6zwAkqe0VXtwnrovLgtJn+bOFi05ZY7QYa5ZQfubTzs3DwyJz0d
lyNqMCwhYGzKlYmWW7X7z1DtzedvsA9K.AQ.4NcOjpBFsODmrHErzOAHo1Ux
27W7m+gu8WNC70dxkQl3TCj9TjbokhDzkcvGk61mBBjK3h+P95K0mToyMLcu
Crv74z7x8CuyHKjLUxUyK4po4EQU8DgppptL+FlHRTdij7anO4W40OlectEq
x67P9cJrzduWclmXyLS09VzoYpDxKoYR8BrWYVg8JfIq0JHEEL2OIyStRUWf
iKT2OChV3uzW9inrvmTq6hkqMSR26YIrKsvzTdH825zzkk2DrpDau9vIcH1U
isIriBJT+4O1Uo293TUUN+Zpy1VGXFOMHY6KCJimd0k8kKi15rmngeLaSm6k
vrbLuae1Dyzs3ISCvfZ7Wt9pwZM+vZJc.FyVWOOFQiYaKUG3wS2LDYaU3.Od
j1bnqSTimQLc+J0IFAMlBdn61ZenoEpYTzS2GrFbIOXqKCaim8eseL69blsP
tFsKySp1hWPnamyPURi4A.ArUOOL77qi8hc1yYMdwoMLq3715qLgpz52jbBV
uYMJLd5AvXa2oGyGOiYq2oWLdFyVuS+3w7MaqahiG8orsfHNd5+u1xJOdjX3
dna.2UD0q6tpllCRtr8RWXbWl4s3i25lGdpeM2QEwSNtyjitlK2cNPyDddiT
0nXFsglIZ68Z38tOpt+MJ1xdidqmneyG78y97VHaU7k455.oBU1bYJHSFZG1
TiTschemnxo4.ynd2iVDlNf3veJ0OocXftAFHa5T2phXCizFVPGwXgEMOXpV
+Uro4e4zZySVLlZcv6PZEh.FUAWD71q9hez2K7qhi7BW7ljUOrD7Y2mks7sW
A1jS30G0FFW+aZkv4sbyF6lzmQ.h5H4+7JXRqXgJL.011.KbF7M1XoOK5qzx
c+VF58DXgpRC1RGoW6LEWrYoQ6zMuO6Dzy1F9kYwLM+n1LAFE2zcHoNvoZY5
TsLcpVltu4eqZUQV490r0kAv553zZQ+X4pR15pdJF2Vd63bTxG2cBAanKi5n
KtfHHj3xy+MrKoJUcJSF57sY9ps6xzn9FREM1n0IVi1lfuuUzFQNJn8oLUxr
GxnDSQojXPKR2nE7vEqFCCbrLXoOHE3BgvN.CgKZFGgU0Yy7EqhNADji3nDL
wmN1mb7xwB7RZkW+wKmKS7RzMdwIh8.ubuLwKd23EiC6Od4BuLwKV23EUJ+t
+3E5xDunVfWP9dfW3KS7hzMdQvt6AdQtLwKb23Elg03El0K.idYBXntALUaA
bO.L1EFfk.L9Yrrt1kLdS.wXtqNqYQHAUm+rDHg33XmIolSkSkvHr04SW6XL
+ByHojhtsbW7EYLuWPkXqwtXWNTXGzJxcHmwSbVfrhyQjsz4+0giOx4xpdFf
UwBm8v3x8.KJbvfCSdD2EPwJbbYHCZ4p+YqbNmmVFXScrxIOjwzPAxoSuR.s
qtCs+Mfj5gprj.ImTM4+dK0kfwSYyTJohlyzgL9+Q2kF6BpwGk5i4.UuKaAx
9UftxB80gtnkKPwvAR0WS2qYXPIchx4m.bsCqLh94c6EVXyZ8xZDqn6cC+Y8
+aHgt6ToVLpScfUcpBnT3tT6NLQGoTpBBLUpAB0oKPbuzDFtGaIbsE+uCJtp
oDq34LmAJYyOatd6fGFMupVPZ5JGDOpYmYQkMnH8wxaCXQNJ4n4IEIJddQ8.
InmDj3njWp50.VlwBzwS.YacTjq0QdrLpstY1qYwFMI0Cy57bCtu8aZlNz.0
63w0wKpStKIJcEQZHf5.zMQYm9pAOqrrM0W0NkZTMEhsZTum4Qm7Obl.SHTU
zcJLg5EGOCk6rX0cNISUDqHZxdFs6P5LIICQrMDMg3d5IZpUD8d1b3kRwl4R
obGwFhlJMH5jSzLqH58MuFvRyXXLBycCQyDvSOQysJAQ22rsjHmV4bHAsgn4
TwomnEVQz6axJRwyDBt.tUPl.SO8DsiUDsXeyqV7LhifH1JHyAhNsDM0Z8RI
inMZseTOhRwdn05kBY6GCFK2WY4ExiBp6gcNAoVO1Rk3pScuS2rz4nkZ0Y+U
S17PFQiZmdg038PgYRdML03287Hcu7UbSLYZtm5hgt523ZcBlCGS0kEt0NGX
DU6pbO9lY6vzaoi0FOaJJ4qMkFM7kVIW5wlfKXA5XfdIGa5sfwmiA5EeroWJ
hOlnWzQmd2Zm8XfdgGa5sfI1i.50w8XSuErtdLPuNGa5sfg0iA5Ubro2B1T+
bo2K2BKQmYar9VcjswTpa8I+U4CxCcbJ6DSIZ7ThFOknwSIZb2AFeht1jC5N
.QIBpIzVzATq4hViDHJdXhj1ALdsO0IksXJorqjT1uY6lwMGTVaRp17bxVH5
NKiwWp4jsEHFeaZoQXlDzvs63mzcJurKWKo3S4kcuvKwTdY2K7xYJur6Ed4N
kW18AuDvo7xtW3EZJur6EdgmxK6dklwBxTdY2O.iNkW1G67xVvt3xK6rcrP5
XjW1DQ2HKeJur2fEho7xN24EVjW1Bmo7xd8gpAmxK6gIurQNno7x1xEnN3o7
x1x7xF4PlxK6madYibnWr4kcaav91q9w2.9huxKJvOLz+aWkN2KK9yAeQxNE
N8YyTGdqtUJmcuW1Lv2j8pTvae6auZYR7Ru67hV3MScI3O6CdeT7G.eP9Zfm
hW8pDevhX4D0L0i9PPXHHJNC3EFJeI4yUMM8zUKUm9bJ3w3L++m+q+62d0d2
hlKpNPtm4Yl5mJqsY+yx5SUaSryCk1A0kSIP30NkH+XKYvtO1xyRarOB0l.l
6KxZS.QZXFAxIP0Yx5PrMi7gWPYjOy5tTjyHJymn1ma6inVeHEeNNpsuu+Q2
yLaNO6TTATtbEnqn5ENBS2LwswqH3sQeu5NCcVdYMJosWezTiHrlijhOCG0Z
cgFIYTmVqbKSuI2AoxVvKlPCCe0sv.HVUcKDinTLzgZa0sPPtTptEFh1ppag
.eoTcKLDsUU2BA7Ro5VXHZqptEb2Kkpaggnsp5VvctTptEFh1ppaAWboTcKL
DsUU2BN+Ro5VTmkaMouzHJwp6wnFNhF01qaJ8Bn5VnOGH6ThqF08NcyRnyPu
dTmkisY2y9n5ozNg0GFHgZLyd2aMzbXBQulqtTqNFBqqyDNnQDKKyZ2hHFQi
5iuo5UqNF7cpu.CNCF4XSzUqPFmbZFero4pUIiSNMiN1zb0JkwImlgGcZtR0
x3TSyb2iMMWshYbxoYmiMMWspYbxoYwwllqV4LN4zL+XSyUqdFOKZ9EbEzXU
Z9noipngBT2pvcikQClyTYzXpLZLUFMlJiFi+xngzdGGGFknbchqv1ZoA6br
VZ7rieO49sabyjAqrI.93Wb470ottivmp6HGsIiB40Xd5CXyLBcZFoRkf4Ok
1YxCQ37BYSEp9JzV0RAC5RsTvXAjQ44gWtl2zgzcYfwYpLvTtrSflJCL8Buf
SkAl9fWL2ox.SuvKmox.SuvKwTYfoW3EepLvzK7hMUFX5UUMgQmJCL8CvPSk
AlicYfgBu3JCL6bJEGsRAiEnKgLUJXViEX2WnkBFmB49MhZYkl.KlJEL4PAj
LUJXFnRACbpTvXaofABmJELVVJXbcmpDLO2JAiqyKxBAy25kNmp9wL4+IEv+
uzmMaM99Fy6zRiyyJ.6wn3gveYV7PvboU.RysvRrR3ZYwCgItbJdHV2sUQin
tlbOFzimzJqGcHVmAo1APE4sRrgutAnwB6RgSzkRJbpoY6xUW3kRt5poYqRJ
al6kRRYqoYqx9dlykR12qoYqJyBLwkRYVPSyVUOMXrKk5ogllspvovnWJENE
MMaU1QyFOIsoVgdqz1v0cDUb0rNkPXhQznlcNNpwVi0T9yqjvY7rFAA2Zft5
VCd0cy5juFOlllnVOpGQKjQ1lepBznofRX+fttU7mr7bmiN1lUVSSnVb5Z51
b3wldqoIieBoWl6wldqoIxeJo2itaRplxymT5Ubro2po09Ikd4Gc5sRoK3jR
uriM8Vs7TbRoW5wldqVBRNoz6Qe+2ZpyLmRBlBOC0HUGPVVdjAinRuD1sOVw
eoV1rrttbKP6uSm1VeznlflYmaMzDMDc94.Gyf1FekUiS0NcCZaEn45bxq1i
Wt0fj0m98tEgjeL9CofvXuERPo4pOBBhwlFJfVdliIkbgMU+QX8n9i.ar9iT
rxXfOjkckrO36m8UdYdeo7aHINrcBWGAttFY0HR6EdERsDNtVBG2iBux0WpE
eESCpvgZz5RGHkbUFLLU6Ulp8JS0dk8J4g.+Fu4ue0RvaTR4R6LaCzq7xS+h
NCjYx.0MvpFGa6HzqL3znvulD.tyedcBBaPXXyBD6VnXSBFKIbrEAjHLrFIj
MJkzBIk1HsrSIlVJ0rEIm1I8rCIncJEsSIocHMsaIpcJU0BIq1HcsORXaQJa
mRZaWZa6RbaWpaqRdaR5a8RfaVtR2RhqWZ7tRG1Upbkm2YfWWVD8GBxtWJxC
j3aLnPR+f3Dv73nT++8U9Qy8uFDjB9y+32+c+t+Avaji97No4M9.OPl2GAp+
fUIfzX4ujEqtepTQ1n6.2DmHEu.huEPX+ux6emxk9xO6GVp55mofY5+a2wVo
ltoXmGVaZvns1hA00kPDgrYCjRKW2Y6iRkZfV2Bo8sQZYJuq3CujAeksw84N
sWYS4xy52lD+P5SObSb3UciuNLM9R4Zwf0mSuUPWdqnK5hFcSAR6xy91z6r.
bccLZ8v0whNGaE3ReFfKrYv8zib6l0aMaJrQ6CjqooBZGOI4Y.a38mmrlDg6
Xhv6ldlMhgHrQRowOJ0W99pfg3dggcjulGVbtlbz7zwIuorStz2688PN.VKj
00pICpyKXgrIxgkTUCa2DCAQbS5qqwYSR92I.KdF5H7L4jGFPtK0CKm56cv7
pp5GvlRr1JXK9RV+qtv02NFT79sW0pp2Lqm3IXip2t5cRD7Nl4gWxy7UJrFM
KQhab0kooIWe00nhSuNQh7GM6qpzPzF48tFm1PLGVBwp8SQrWDJH1N.uvW0E
.JW5CZzxv7jN1.xbqzBGwOMq9GNN3tj8GHkvmjIgXvauRJWG7ml85YJQ82EK
QWkj7zU2jl4EkE3E9jb+gEql6qD3Kka6I0nLw+tUgZumlp1B3lUopTDN0O8Z
4umIekm1bOobeuLPnu2ix+V0dEZY6IOo2SvKJVtsvl6cc0cCpSnUwUUNPtUy
3hWvdZouxqX8Qdkyj7p8RdEqOxqbuzkWcf4fMGimcbvXzDG7dwAa.Y63fw3I
N39vAiMt31RNXxDG79vAmCxVxASmzYTqynqTkwaCRjZyEjkBTmhX7S9FM+BB
WH0ODHmo.25MOKVpkmTIukgR8HAAQJO..JqumVYR4cTOKH58pORiCFR8k+P8
4uLIVp6ob0i272K+LjZllsVc0F8fPy5LZ1zUPoVMiyeI6cn7YaGvH0MQMOIa
1WRX24XgmLLv9MkH8QspICC1uMkH8QsJ2oMkzhoDJwTJ2Uj68B01GRIIAIq2
.4ZvbuD4lT+5Ye4LvpH8VWYymcsYiEu4IwZWU3mKQZlTLlTjlR1kVR1Cdu2W
6DC0WvsAQdQyC7BCeBrH31aCluJLS64i9JqJWCDAlYyrMgLsgDfKmo2cOBO4
FNpi1UM0+P7ixIQeULsGAjSQ.FDnBxMkFJpMx.Qwlsjja03kHm8jurZRc98d
I24uXF3GjSyopOB01Q9evKIxegjKJP8GDqXDTusG3Qeo1M8b11rzVkf61LaS
m1Yx1clToPlfYsOqfSaMsOaMsFkszoUjo8lzRrXRIV9eboeTZfTzzCARoQu2
Wpm7u+qA+ou6adyW+UfW+le8a95WC9lWC99e3q+Nvu86+Qvu4O85u4695W+5
dHdA4pcENkXkhunIwK1KdQZ2n8hWlT7c+jtjCx1IcYxi38iCF2mMHmNC58iC
F2m8G4Sbv8gC1oOhfwSLv6CCrSej.OodmQ8NZdHT76RTVb9CdIYOA9oUoYfE
IwKWJscT4qgDSHsARWEncE9O3GEk9T3iR6W8zNAOPk04oJSKeLNS4a8HveNH
U4hU4uk+WOC7up9b8.uNSZxJHct2CJSRS7Bj1q9Pbj+S+C8QcQlqIJTsxZTL
ax2C.hbpd1W7ai+324+gzMt3Nw+yRVEEol6d6ae6UeuNk6BtMvewmC9p3Huv
Ef2jr5gkWqdp1GSIdJGUkBtWxLX7OkjM4lmzO6tDeuLvu2K4Q+m.+Q+GkSzw
2Bdy29WuFHuuymCgfeX12NC70Q+Tb+luw4QcrUgcLFNYdfsaMwf8HdYl1ZZu
1ZxfwV54AzzVSZ4UXo7puJXA3KkXpbalz2CVI2Y4V8or5kB99+fZ6iE9O5Et
xO2c4yWkj3GM+IvuH2Smx28dujE5ylyD9dq85p7uUcgel+u7Zv8JeiG9jw0p
q13180QTn5ja6kuRMkTEgqUNFWLs2D.Y7Kdv1.r7Wr4jxWD6mF8pL8ji7lO7
KAFmYqOwdo9DOH+tL9lJLHyS9mplWC8+35Cs+gfEKB8U6Cot50Rf39bdpW66
8u..ei7aP+4qNDePZbe1Vh5XNsV6RFlWvaJMOVclVpb.uG4lHSKvjYkJdOm3
fi9LSznq2on9r8Cp8JNU835mbk+C2rSUsp5L2wZdb29kUG7+M2xrpXwU65jA
Ox6qsyqUa+iZL.qv71FHrOPK5z.smdXsRiKqc1Uda83sJnJ93jj36IjUtxoT
oqlUEIqq19UCdVoF+QqTAI0uW8k4upUnX8KWao9y7wTWQ6qWbH6Kc0vPsA5p
RMWbzRWTm9PWzyl4qdwGpKztmGyWLReoK34CcgrktDmMzEpOKuHmOSW3dPWn
yGoFv9r5x47gtvWlRMP61X3ZgrHmOSWt8YwUe2Sd2dNCUWuHPN7YlV3IsvkU
GCmLLoO5o397fD20Xf1CBNDyYHT9JigVqAOVcVCbZwJzEmv49nQG94wAjy.X
ZADNHV0qDT84EmypnuZDw.zGiUvrCi.D4ZfhBPLWNhvDVOvD9gQ.hwAuNDSI
as7UHQQAHpqFYX0km.DZe1V8fHAQXNJGG2JWXJlu4LJpKFQy9j9.TXmCAPgM
EfQGLrlqLEJubrRe0XBr5iA4Xxg.rHP35b4rxUp9OeAvhSGWfE5hzrQRuLa7
7gr5CmM7vnEAhVRKBykiHNXberMiPNHfBNO1OnatXLAH8wvL7gwxLrI98bxS
2ixWYZ9Oqgtc66OiAz5xSyJburMCcP1DjXhdBGTMWAKpwf9pwDOPerNCcPTu
h3jWX.H0bEkWDrn7wEX0Gy1NHXExD+UNHTMWIsgqfY+lKGSnUuzbWbP1cJew
1HcsVuzggdP1cJWgbm0kLhhWg4tE2ch6N9PqKvcm5yoef4GlUETZgUEzwkYX
39XFFFeXVUPJpk1NWAKpyl9pwFZcAtpnOFsxNH6rl6ATjnlqPjR6rpubLwDz
Gy9NLdO1TLm13u3hW4fJrdwAMtVtbQtZA0qyj8.oYki9nlVqBOa1XZAApO18
iNL18ma3x5cMJeEq3ZB8UiMz5BbUQer6GcP1DgZxkOGLu5UDmhN+Ve0XhGnO
18SvmOLA8wDczg4nUWOuSxaaOkjD3VRRf6HSRvk4Yqh50gqBOHmYnomcPYnp
WgbJ6nFmQliZP8wuDjCSHdgwnYNaOak7KGSfRuBpTzAQPhPTPs5RWXbKZN1M
x7JJ5BUI693WhCiN1BmstoQLt76.pOFniNLFchQ4Aojo0hT5JULgVHjkb3iO
z5TujnPxxVrKdaSpb9e7b6Fx2EFeiWXdONdSe21lVi719n7mVkt17aamz5aK
puRO4p41OedE5n1lwUi0t5FSstCV2m+z.FNVhE3yUrnZ98WHmuC88R5.lLkH
ASOnUTWdd2TQGqwjm+4iRGVDZc9cVGB8i9kaOj0gPXohuJ0WfEToACaFjJ0S
irkWBVOJc.ggJ0GfBc5UfMbJXhFGHB8gwQ6jYAsOxWv6A2x00ji4WkKDuosG
tMHz+Q+jz7sGJlKwW4sbYgGU6tmRn8mhSpzc2kZDDYtcohIwUI9OFr9yqTsN
3JuDILmIw3UIFR8iNkqreW8P7B4dQqBzCyO8SpauQ0Wv5YISf7jm854oaM0Y
2bq3paja0M+846FW7AwK8iBhVlHWXDksYO+RuxB+a8VEl8taikp9D7y5wsVZ
aCuysdy8a8CYyNs+5j.uvx6HmDrHNRMnpLModz5u9sUkrcIT8aE4srgODi9D
s7Bph+8pza7RTyf48+Yboc9iiCK+3R+8g92lk+JKChhpAwyhW19KjDb28c7Y
bSr7EdnquG8SSe2pHya7Norgr2ozqp565EFlKvn5W0G8hBdvKyOKvLsggkdA
Sex9do5WwggUvCySergmtPtPYt+GBVjcu9KdWlp8PmtsZlYgZboqtIWvw6xT
8lFIUV8kjHPWo9+QndWgYPqZI5FKKLcDcKaCDjW5ESzDPheM8I54wgFo4+MM
mXgeTm+PaY1vD+JTlc85L1fTLQt4txjmKi5fTjmbzRb44+F1kTO0NRKmU6pH
SSyL4E4EyxDlk0duK5FngsEHGCX0m53RG0J9opiyZPEKEWHWDRoLqgV1npD4
L7UUHi.18.33uLqsP585Odmz3oLtK6EggImQgdIqWoGG+B8.OOilxP8Jlo6c
PcL4J8iliv9PRPleGNByjNCq8CFuS+fQZzOXvCsevl7A1jOvl7A1jOvt37A1
QyCMPyokBE8wCM3IOzr+Sj5es6YFSo9H20Y0ezjU2okcx7zvX.YS8UakVs+T
VhMR.wXtqh4wAgDTg52HPBwww5EMlLDFIL9X1poFt6k7LSk.RnC+7.YMGVBU
XpeVtp3rv67VCeFFOLj2G3SboCecV4+WEk4auSwwFEl41U0+Qs2uJYGq59ef
JhN1V5+UWNF.6kp9ANDjZMZSLJfj2dk5FtQWz8vhUObSe3TE3db7M8ruMuzK
QZRlbgy6Lpq281T3mWWrXT0ZES6wYnw5CCLj+RnCV0yC9IOcar7nKPurOymb
2u0KH6EZmjf2qLtEINiNSD7EJkosgsGYA1Yzo8zuzcFcFUB06WN7pwAxYBkw
6MkctLmgNlkx1SIg0qbdBgtXoryGBC1uUY7yLJC0KlQzzIgOPmDd6YFi2BvW
pbcjcoGCxj1Ylz+s0ziAd9kdLIRvnqzMSjG30F24ffcEV.NCStTYbL1TPATN
n.HlrCTGCGSAEvTPALET.mmAEPjcmkLxbXFbSKy8.zNiuzOI4iTvVXlFPPTe
B1BxTvV77O4z0POoGm7rv4E9Im9OoB+Dqx5t79kdexyK9I5j7FKmT5uBfrAY
wlD7vDeV4WzAxx3urQ17C7G3ZO9hLQakcm4Oi7x5H+sWHaNX1GgrL3KbgrO3
mkDaqf1RG4rvJtU5EexMe7xbS1K0D2zVHMei+9fo7ojg0x87cbsGUEuLOfeg
Se6M53KuV994yAEy6CcQ4GoCC4z1qb4mOmKGieDqklmPxpOImJ674vFYv9JL
7bIXm5yDlvYJahGaElSL2To8MZKZQ4nj3btVOJa4bTqMAk16jSpsRTHskLSp
jt3N6QpYexKnks.wocCwThKFo8msf5BwpeAyL+l8HL10ja0tchv7Q4o8a2p1
bZkCsaUK67cQ6t4cQKvAx0o4jtnDbvrBN5HOKNn0GzAZQneHn7BvVXtLsZWJ
oKzjrOwKBdOYttd.EYkHGB9fzmd3l3P6hwFp.qK07tcW4MvCCnMn.lTZdHH6
C9pgai6i5PIHp9PKoLnqi9bZwDF10Jo7qA57LAr6R8KhsGh9n6IPecc05jdp
EpuTf2NZ7dPUKbWGH1BJmmOK05lqRJERcGLsUJwWUiOuFHDBKf8BgXvKIDph
CSaNanXD7LlcPD5voP1XACxWH0CP.eR.gMimptDdKtTmWBJfNU7NPEy8axgG
Uxqn58IP89Cn0oxi0PFgFOiYt0CZw3YLa4PlTomUexFxLagYNez.y0rxpAb1
YzLlIVK1XDMlIVNlwimkf3pNktgAsynYMnVQSqGyiDbF2GYciiwrdmBjM7yi
HAG0r813eyaDwV1CspgilQs0CZz3ZPiN23OP1tEdcbR62nN2cQqOJstbfQ9v
uwiOqtiNqiiMqFqX183xLiW8OM3rdXTv1MyvpEuIWaOGykOiivbjJT9L9Q1Y
WWLU1yGqc9Ys1p0lKjq22dUo7qj3sWzck+a6xUx8DWTdvyeQP1lux0dz6a8R
mSU+Xl7+jzx+x52PwBqil2hi85pUhZKdoECBcFrIrbc2X3pRYX1u2O7Q+rf4
dfuyekeqvchbDsHmwdcdH05bfhPsJ4QtRknkwQgOU7qqVmFVyL3NYvgCGKT8
C.4uIfLGGyuo7KZ4uxZmjKFpwG1452d0O9FvW7UdQA9gg9e6pz4dYweN3KjT
d3WEG4Et3MIqdXIX1L0TC313DP18dYy.eS1qRAu8su8pkIwK8tyKZg2L0kf+
rO38Qwe.7A4qAdJd0qR7AKhkLHyTO5CAggfn3LfWXn7kjOGjECRWsTkIiofG
iy7+e9u9ue6U0xxg5hmi5XGOGZhm63yyU5LCZJatrKKtp0SiBh97+3ZexVMI
WJG.CjZmNqWpLxV70xrxpwCfum.Z4lMTwC3Kqsc2vhB3T0TVoLNgpEmv8DmN
PDbCbPok4fpKzxEl9Zra8sFxxIzGp0U505z0C.qwd.GkhRfVHaVC46QYxF1C
xtGyz6u9HMwda4jsgdIsOYibNC3uCi8Vn.C.qEpFAyIaMAKvsR1PwwYxd+H6
x04isz8W4k4+4W0wV7bit4D2cKrGk64s7m2h5iwpSgYsooor29hS3Yyhy2d0
2FGA9J+4.HC.c9bB5yYNfu90uQN2f3a0iqF7f5TX9Di5fClOlV3Z2bMEg6dt
FIbGay0Mts6BuMMilx5soTojniNRAD4xQl3jz7acnFWdn6gYn5C7nxAPiyfu
rtQvnPeC3fAFn7JJtALHtsCFhwCXrJM2gNGX.IOhNM3gnClCzHUlO1XoRGxA
frwlbfNoNyrChA6VeSGzYhTt7ta717+sEBGipOpiKkIftGmMtN3DdhIH9pcE
LAI3lnemyVGk1tpaYgHMD1XMetc5spetPbPLS+Xa9Yy.EDIQJsGWj17AEZOt
HXx83rAnPNlrI2jWzsyUM7521jV6u1edbzhzqZkEvXWp61e1jl6B1XYSsJoG
xdkZHMK8vTvvqVz.JktBiq0CccPJqsIk0PH4WhzHG8yP4.edIM69MEaB3K9w
cbYNxhcPLgKIRvaWylQkwOMaJn5nDd889IA2d6WF5k7d+OG7lfG7Aeq2cd+b
PjOH893UgK.5iR3GR7SCVHkn7Y9gRXo5QN3IEzduePh1RR4mQDH9V0c.+EIf
qOIh3G8SjhkjHK3KhdRUl6RAewG7RkXcyGh.saWk5ZzBmn8UJuwYE5Yfujd3
i+TtbrRaZ0rp1HcpARX717Sb8mYWwpBoMhua9bLpuhU1Y72W.1zi5xw0pAE2
8r3ywxpQvS4HGnoPcnbYct5YuW8b2qLuZ6HRtKZouqlFQjAaDs62UScsadGi
nGBVrLNHJKepBiz4hDEqceBxwclRcbDt1agc0NNRPYybk2BSyu01A0AjbwVP
tD2AD+QVwQfGNdTlUCH3vMfbg1vh5NbKicwVMffC6.B04.hLfyYVIVwc3Xqw
P5HakOzFHZ2g8QcRihsZDQ52dAbnVILBQqgbwqNBB3QVs1zsTWA3HuR.Y6.Z
n36rR5ElMbPD1FwW6NtOtSZt1fQnADiP1Ihe3jegfBqFQhAbVSXyRM2gaRC5
XEDwFPHhYEi8.JejysZDMf5a53XyHxY.m031MhFPCYcrYWMDD0OUEHFKAot4
9TCOykka1X0agczdmzgWvrQG3wQqBtvp8LGPc0vVsCEWzS61cElxcjIvLcfU
uB6HLAnqKYykGCH2gZkbgdRfz00ZFSwqmukcplagMGWsqSANL0sNJbX1sDer
YM.x4YYM.yTxU14JSZGnBJPLK+xiBGlct9xoeD3lgsiIbXPZRq7UTLwDcH3M
WcLHPgyQg.gvB91aCMHu5nPCrCBML3qTECn0JNV4fLw.hQB6FQCnJTTqFQNC
nZlbaD+PY8T7JWuANC6NyUHvtppZEyo7sNFKSsayB9dtYQ9FBtEyJs7qnNZQ
o4zs9piA8wrQAPZOUFgS0GQGCIlgw4SVPyNgat0oaxhIN7SVlXGJmt0WcBoO
1Am9Hlf3maNDZ8UGElQq1SjwGPoqVcnQiNyiHvAzImV4mCry.NhrhMZHmzrY
.MfZwfsxDT7.poG1de2OPiHjUdFYHO+ZqNh+cpOCG4QjUKzFPFaqB5.w.pKL
xJsygCHDAcr1Q4CzY7ayNZXx.e9OVcZKC0.xNeRObGHkU1kOfw.gv5wyvnAB
lX63AOPNRw1wCYfBNLaGOzgge11gCafr5v1wCef75kMQXzvoOMwJEgFNwg6D
0MMTEN6x.ncrJGAILs+14XS73qxTEhntavLkcboJq5StRe4Qv7bqB3m95zcD
z38AtoQUhPDRMWxDTykTwlKOFQQqMK73C29ZDWaGOCy9ZLjsimgYeMpMQpCe
31Gggrc7LL6yRY1NdFlM1314+xgSOVqTrlLb9aTXyB9ALbXDV4DD8V+CiDHq
hWEwvYalUm0ElQFL.hVR3Ry8ewgazf6j8Y379A0lvVjHFzwS2KuFt06VcxsC
WDcys5zWf7AdDgrZDMPtZfaUdVQGv3vm4X0HZ.4iX1jujB9.Of5FhFNAiXhU
inATTzteWso6w.Mhv13lQLd.wHqbr2ti6iaR3XiBZ7ALOfgVMowGNiNvip8X
QVYxwt6xbTGQD93BgfVoEBaeEVaJG.dKW9neRZ9Gpdvb0Cd+jontHtVeYPj4
RcYb3pD+GCV+95xUvUpRoPPl+7rUIlZVvGyq0jW8P7B+jnUA5hVvmp9l+O+z
++z0A7JB
-----------end_max5_patcher-----------
</code></pre>

More Secrets (Project 2)

If you recall from last time I wanted to build a max patch to create an interactive installment based around the idea of feeling vulnerable in a crowd. People who wanted to interact with the exhibit would enter a booth where they would tell a secret to a microphone. Their secret would then be convolved and bounced around a surround sound set up. As more and more people entered the booth the performance space would become chaotic and it would be impossible to make out anything one person said.

 

The primary issue with this is that it lacked the true anonymity required for the concept to work. There needed to be a larger disconnect between the people exposing themselves and those absorbing the work. What better way to accomplish than the internet!

For project 2 I built a web app. https://gatsby-effect.herokuapp.com/

The app replaces the concept of the booth in my earlier iteration of this project. Users go to a webpage, record a secret, and then are redirected to a page which plays a recording generated with the max patch I built earlier to recreate the experience.  Here is the repo for the patch from before.

https://github.com/dtpowers/Secrets

 

The one issue with the current system is that it requires me to manually create new performances from the data collected via the app. I tried to set up my backend to automatically generate new performances daily, but I had issues interfacing with max in any sort of hosted environment. If I had more time / a personal server space I would automate that process so the system is completely self sustaining.

To use the web app click the microphone once, say something, click it again when finished, and then you will be redirected to a performance of the system. Repo for the app is https://github.com/dtpowers/GatsbyEffect

 

Trippy Video Edit

For my second project, I decided to create a system that would alter a pre-existing video utilizing an audio input, a concept that deviated from my first project, which created visual from scratch. My patch had multiple parts to it. One portion essentially created a system that served as a sort of green screen effect. The original video I found was a music video with a completely white set, which served well for the purposes of demonstrating my project.

I added an object that would transform the colors of the video by adding “gain”. I utilized chromakey in order to overlay another clip over where the white portions of the video would be. The effect I achieved was interesting, as the video wouldn’t overlay until the background would “gain” up to a white color, as I set the chromakey to white. The colors in the clip that weren’t white were dramatically transformed. The intensity of this effect was linked to a bass sound through the usage of a bandpass filter. On top of this, I added a delay system that was also linked to the bandpass filter. The following video is the result of all this.

<pre><code>
----------begin_max5_patcher----------
4370.3oc6cstjaaaE92alIuCbzjNSRytavEdM+owoINWlj3z3lzIiWOZnHwp
E1TjJ7xtqcl5mh9Fz+zGg9NkWhhKjRjTjTPZEojqomDoUD7xAe3bN36b.Hvu
+9u2YSlEcOIYh1mp8LsyN62YG4Lww3G4rhCb1jEt26E3lHNwIKHIItyISNOu
vTx8ohBtNKHHwKlPB09.3phCyVDkkFPREWMr3vIouJfHtrUmo7zRe0RhTflL
Q64EkccTXZn6B4U7nXpavpKi5KNXzrWbADZr5vKcS8tgFNeZLwKUdCg.6KAm
qYA0EeYx+DgtDr9wvDVZXgrhJ+vSnuV7vgvKMbLf1Vhx9mu+6w+l804Jiegj
6Xx5lv2KIupEPSeW.MZX5jya5qcGLM6DL0wb7yTBl5aCLACKXlPBXRpFxpEH
EsKP5L2v4bTbOfPqNgPn0kFLHDiXvfiik44ZFVGGkxzn4yCHGBi1ppZKiIIj
vT2TZTXoZtivPDwp3XKFBXC4+j+45qrBLZqfYsoIXELhs4.K+ylEkJ0pktwr
VxTR7TRn6LYEDzH3C2a7MIf5Sh2F9dcPjaJqfkYoODmkkgN.tKnyAXHrdAXN
dg.7e.0AkaGJzwXpjCIf0lgMqUbIIzWatKM7.2GSEXSWAXyvvtPusSa1COJ7
BZ5krlfYtZe1hHehF3P3licSmtvMMldeMmcU.FTW.ioMRBLNBMInwfiLLKHe
NCElWAvQgChS28ZhjcahkeYuU.pQ28ryeuAtVou4SWv3so8AniBro2odEDKM
xLbDrMLw6UujODXqM8sXMFtcTPLriRHlzTDasW7y5CD60AZwj4GBGV6EmLDn
aXCYv6Jz.l2w3Ijh1sT+jnrXOxQJ3psnuwBAfAb55FJEb0voukpQ0loQaAyv
6QrUEwCreQU0MJhEnHFgUJpJ3fghyzNHZcBnam6R0RELCoK5a.YcxfYGcSVr
Z.G.brLYyVLq0nh14tBpoawjb5hrEaH4JnuYqDENGFfYA..KFONbQmrkh2T8
njZBXY8CAPN15nCtZ4eh0sF3vGpuhc+1MOODRFYEKTTdmIRaY7N18KtGrk+3
CU.E6Cn43nBnoaH6z.O7fVeZGqndkd2IqzPWPqyT3wy.rID8.MWeP3WqwjIy
EjLn7iUR0wpYw5HT6f.7IiIqWTVHq8TCpA5vi29jb8h+eerkw5J0mrLPWH.t
E3zX3TFog9jimVngR12NPQF0gmLJg7L0IseSHob0PMcMuabYZkHaflEpeybm
hwj.1VLwVxDrK9BdDRZ00AQrmPO0ASIjvtSleHY9dw1BlxFMjafqihYsC7y1
7THY4IdtADl2OvkHC1WF8WByscTA3jwy5rM8GySd8DGfBUWjE9DSOQb+eygP
KPLRUsfMPUvFcQZIski3Dd.GffXRRT3azfWx0C0fFWdHfiD57Plu0lwCjJ3A
zob+8saanu2.Bumnk2w5DO5tsYfrsLsV1vuyTLHhQlYBnmaxK9EjmogCd68w
ZDVs6b7dzg4oiRLtXuMM.qdr9ticSR6w9L.JfbXKAe3saXzOCx5rXunD2gZz
UsrT.QzwFqx6jbvcFbTQMuH64TqoLdzosEpXnFbTZLAgm7rJL6NuiPjvF.Cb
d6j9IBze9RLcTA5Pl48xhdqmApEPkJLzw7cQJnVPk.GKz6JbPsPJAH5n2NIg
p24jbyRR9xTFNFVN2.Ql5Cbmlj6WFq8YhOogOC77+L3RiOl8WP9eYdBjFHqs
LIKEZEVV4wuAJFrUURw10tdj1GBQiKcPXKnwgmKq1MQ2MiN+uzB5B5.cUCy1
xDSUWjNRriTAbuyaVkmAKHGITTfErymFPtkDmTalsd1D2kKKc7yJeQbH7EQh
6k04qOFMTdL75iEStktwslcuiY02TVkMKVBR2uNTH9cJhENVXFcsAkrQsPzJ
MoAkoUDJznLkJV51kiQho.LOHx6kD+xsZLK.VjJzv5Sr20k6St1MKHcZK3Y0
SntNZ0RaVU3rIyio9QgbAoJxyOdwi7YZxYSD+yR0IwoD5troKmoawvm1JMgU
YyRl4FyaXx6nFspzznnfpks9JCHWmlW9RZXXc.MMZYGkFSmeSWW8rHVoK571
KJJYZVnr3oLS3zoIt2VC4ScCBxMpq8Dt2Mjx7wQRox1CDXcoRVK2j3EGEDTs
dKK51lJxmod6Qti5mdi3gUQ8fcAzkEJVSV2r6SmSRRqcvT24I0NzlNVXGKaV
tg7zTxhkArZSsynxakSEi1xtBqVPmtDqwKu7bVrC2hsUC5183FitPkBZJNNf
wkX1+rz4iYitbtUrgqx1cW19PMb159SJb+zK.5qCtz6FFUcRGfJRAPcKTd1U
f2XWPdnbpaahT.4QmLHeLCxHZLanPhX3d03f2VTu026VhyefsHHys0hXjmgP
4TYy.sw3X1.Y7VaLvCbiw5w5jFdcTGs.v8pEXusCrTD0ymGbFmb9dDO2CMdV
JZgpUzxi5NPMnKOZ.ihO6.4pz4hWzhEjv79QaA1JwXJfF1Z+hBYieBs.nx4g
Ydcuv8nVMIk0geJMbESxmspGr5m3MTeeR3F0GeZBmmgj1i5pA6traopryc4b
hI7BQBoDvabxI7bKBE0ZrNnBu1yk+XcLTS37l8mJCUXpaJyTdFq2vjMBObGo
wxB0ZlaPNE0UtX6lS6Zpuqjx+Ob5TiUJCI.ySr2.hjsCbO7Lgn2YBocLxmyz
BFM44P5j30d61n.sdbfIPcNvDFxg8OOyjacAIXuq872V12bHRwXdRl2XtOR4
yzxkUietwf.aBEt.aWdPxkIgV2bOmct6MHQdsuq2a1CCjxtH5bDKuPOehZaK
+p3yCd6ce8572XrLM5LzY0npvSVbwmCaCJKrvWEPSRaqM0X+z7a5u3+uO0i2
Eqa7qJgXdAzk2P3INSLTa3FsNPc1wBe4gfmeT4nxXKWrCz2tuSe2T2M3Bvkm
1nPySi7JG8+0O8S94DRbxm7Tha3m7EQ2Exe0pS9jO+6dxS9v+3+9u9i+8+4i
ztP6w+zW9zuV6QOU6wZe3Sd7i+l+527nuS6W9xe5oeyS9gOR6YeeVB0S6Wn9
jnmOER+4e56+Ge8Lqe9Wm9JF.mMib4hk3RgXHDgWRCkPialOMhejxmgbk8XE
UKoZV0HNlDDEsrVbQS3ymEVnFS44NsM1dKoLvO4F50EZw0ijIJlNmwzKfgSy
koKLWBljR8dYxFgnFDDcmjNEOSeQ4WP0yhmn7UyFBFZswMIdgaXaBzuk4FPS
eUGWeRPVbQxREBa0hEUYun33JfZsawRhjaZCB.+VmjFSX2kFuVgHklER4Cjs
XVrnCZrBtEYn.4KgiPzl0FlEemWtrgaQRIzX67s2aGPbN4YzdbYpXsOX9iJ2
0ePmSZFGG43qHGwWCvfOAhVOAyBhh6Qro6WX.4bnAJdYus0OZfPOx7Dpuc.P
2R7ZSXN7qSGKceIy7a0+0iv.VAXP9R2Xi6s48Pxc7m8dMkGpOOWRbSyhWuJF
0Lc6srZZHSqrXQ+AJSxLzzX+nmgeXyEjbJZGh2N+ZS+A0XjgraD.6LpMy7Uo
KPdVOMKVLq5YJYowtduDc4hnaakxDqLJQEJSfCDko72PwUbXf052MKcZg7yZ
hxfXa..nCrqwRgOhMxq+752BNCioIDujVXvjkPlJp1SKpCaz6uaVZDqRDm1n
Lx7EWLpvabk7aIyUcTwk1PwKiXwHUHbajwuaiZ9Fea7R2vVpQj64OP477XiK
j3SS8K4.3YZ0PRNarBMUt7bdCXZ9LvpwAVg6hNKlToYyDiDMavIM.r4id+FR
Jiz2uk0bQTebVbPyOedEbs9T8VRe2kM2JdCyhtBaXXc.eKLL8IhjXD350rpL
SOSnl0pVFufRZY0JUP2oDWe234y1XfWvrqllj1LvvJ1O2PrggCi6utCM00In
YihJEcPMDoK0rX26RiZVVtkUIBRaQ4Ng4KMf4hhD32R6z0L+aMesbDlD52pM
Ny6OO9mVpidQ7o5QRaJjBuqMWgRh81tM0ZWus05QB4hPbKp8gyyGFBVY+VZC
pFAyxVz705xuudMWVGEI8cOM2fu4P+h7ZqMthwVCNoZUsZYTBsRuQaTba99X
lfUcusAHUxo0jFZdZuX1stZqbCnX0fsC4wsFT61Dux.ciHkuMNrMuZLAuzHg
JEN0GCqJbDhdcTH4sZJB1Vlr9Zv1FiTDdahhfiIl2rYYORQXjhvHEgQJBiTD
NQoH.wZ+v29iWva.PW7296W7s+3WMRXXjvvHggQBCiDFFILLRXXjvPUBCh2r
Blu8PnwHQgQhBiDEFIJLRTXjnvHQgQhBUIJb2MDRvHEgQJBiTDFoHLRQXjhv
HEgQJBaLGFu9Zp2HIgQRBijDFIILRRXjjvHIgQRBUII3eqel2KSFIILRRXjj
vHIgQRBijDFIILRRn9BTwUWIVgJt5J9RTwUWsZMp3pq97rjTMWsuO5Vh1EZe
ganGyVT6Khle4hk5iTJFoTLRoXjRwHkhQJEiTJdWhRwgXM84jXUqfuSy2vpV
QmK4M469lv7kbPn8laY8C85H1zKlJV+vl9nmN8wSKV9vllu7gMUt5gMUr5gM
cwxCS5ffiK7Eib2FW3KF4tMxcaj61H2s2o3t001yl2MwLynWRd0PsYu145RW
9ZKlAPvRyFtiqLzxSq59kPNDUeEuu.n1bOFn1pueKKy8VU2fAZXItugk29Fa
71AIyTEICVaE3eXDMK0DM6ifnYqlnYL3hlkRfFyfoTWOMIWKn9kIkhrjaNIF
U1aOOzBuiRVIVmnfp8vKX1fSTDyVI2J0E+gPvTyxEfGdmJ0elsIZ5GAQSWMQ
CcDDMjpN7FXeFGJDqlmXS41AfggUe5IFojqXmAGUwJYibDHq..pJX6T+tPrX
U0UyxF1mM2Jorpi2UcUl5sX8.2DaH2aVfxkHaPeVWLUxCuywf0X0V+V1kw.6
LJiMbD6MxxsaOHVh1he1evLDpDL6r60FYx0wVxkUe91XpQ9O64ZCZqsM56ds
QtgDouZq3Qe0O6Qdz1J21.GVS.k5VQXBLrBFBnV206gwozZzD.DKQ7X45iu3
m8X22pQJZ3oq4nlBvvKXHkX3hG9.5cLOQ6NCi5KSlbW9lxM5tUlL8atGvpEh
Cb3wYi9Bmy6LZfwYk3Z5L7T3wJ4ZRe3cMo2aFZXGQmR4zyWo.f6UhiNpkgxg
OKG1Jo.XO7dZcThbhsyIZxzrM2UESjoEWQTGmGIfYwNKz5egvl8Z9OTJOCNG
ABTpE10vmXUGk7R4bD5+7Dcn2LUxci4v6twRI2MlCu6F0LJs14TppK2rbAhs
hJHvVFptsi7mx8YYHNeJ+gyiiqWc+Xojwj0vaLYoj6Gqg28iRjjs2iDXJa86
2boojvquy76bLsF.gWsgJX3CbFYdXjq5bSf4NB50jXqlvi14LxmuCE1yBuZC
j4vm.dyCyPEtgFg.T0c5UPUsoPzNK754SNpdMlenZ4VY38Q.USS8HLh6pEyO
93HXPkDL7N0SqgX+ClOvHrubPq9QOpUpjA0QXN4orbs+iQR9rZzc4xaIwI42
ZoHMYg6KhDycVqyk+lFJ+s7kwYRLeFPWrm4JOjar2MzThWwb.dx8146m1h8j
83vLZwdeLGT3OZwb+r9Lpb0q5hb5k94AYDNbHKzmbsalbNgWB9b87H7s77fn
h466kXnkotE+cK1zf4UFw+KG9gf4uyJEfw4EsLwrawFSF0IKXOM5JzqZqYMI
8qhIjv8PTEuAzFX9+3+Ezz1DY0aR4uRBBhtaODSajAT.nV1Pan3s11vwP2n5
6.zjqiXBH80EydYD+r..6CbUIawLR7WEE3uGUDtV.vT.5NHngnNAAPGyGppA
+JYe8+j0zXLK
-----------end_max5_patcher-----------
</code></pre>
view raw gistfile1.txt hosted with ❤ by GitHub

Sonic Spaces

My second project was the continuation of my first project. Looking at space as a flexible changing thing that sound can enforce and manipulate; I created an Installation in the CFA stairwell. Six speakers were placed at varying levels along the stairwell and throughout the week I played a variety of different sounds to see how the acoustic quality would change how people interact with the space.

Monday- Stravinsky & Strauss (in reverse)

Tuesday- Construction ambience

Wednesday- Ocean ambience/bird calls

Thursday- CFA recordings

Friday- A Pulse

Along with the daily changing noises I wanted movement to be a large aspect of the piece, so I filtered the sound to each speaker differently. The speakers lower on the stairwell were high frequencies, and as you climbed the stairwell the frequencies slowly became lower and lower. People had the power to change what they were hearing by the way they moved throughout the space.

img_9508 img_9524 img_9539

The feedback from the piece was subjective and hard to document. For the most part, even though there was a clear view of all the speakers and cables, most people didn’t associate the sound with them. They though the wood shop was being extra noisy, or that the school of music was doing ‘something weird’. It wasn’t until people started moving throughout the space that they understood what was making the noise and how it was changing. This was caused from a few different things:

  1. CFA has a lot of reverb and it is hard to source a sound to a specific speaker unless you are very close to it.
  2. CFA has a lot of character to it. There are lots of different noises going on throughout the building at all times of the day, from voice majors singing, architecture students building, to art students creating art. Its just accepted that something is constantly going on that you might not be aware of or involved with throughout the halls.
  3. People have a hard time connecting the visual and aural without the involvement of movement. When you were able to walk up and down the stairs, it was much easier to understand what was going on versus just hearing it from down the hall.

No matter if people realized if it was coming from the speakers or not, they all reacted to it. I recorded someone walking up the stairs and when it was played everyone on the stairwell moved to let them pass before realizing no-one was there. Understanding that sound has an effect on what we do, where we are, and how we interact with a  space is important.

<pre><code>
----------begin_max5_patcher----------
3210.3oc6cs0aiaiE94L+JL7yod3g2YepE6km1tEXuhcGTDnXKmnVaIWI4NS
1h1e6KuXIK6Qwl1RgirSLPLbz0C+346bijR+56tY78YeJtX7nudzGFcyM+56
t4F6lLa3lM++MiWF8ooKhJrG13GhRR+8w251ypnxoOlj9vc4wSKcWEPQmv4J
kjb6Hf.SP2NBiMeCTzDzneXyYltdYR5h3R6EE1rwjY1aQ18+3WAH51aRdzx3
x376hSiteQr4XPauLYqKqtN3Masn7I2gMt5Z3NnxmVE6jxwEIOjFsX7siFmj
pk7evbX+16dm4qa6KjfqjlFNmaPDNWJNWnfbwCETFZBv4BpTiGBni3A9hGO.
ILgn+Hn8Ad.W53gRJrLEI67sWftzAAAmMg0cyEJ0kNPPAhEHT7tADxgNPrZQ
zS2GkeHCELg0GBC301K.MtX.C0IfExZ1wY2d21R2bDOlLKN+iymaukmQqOM9
iZQq59UF+IaadbwbCr76i9l+9+3O8UHc6d4JxnuYQV1pQvA81hEFsFl1SiAo
.S7GNyJFkm1QJbKHELt+zLtOJ8gs.VQzuDO6N8MQKz2EUVlmb+5RWzW2TiQZ
TKpHYZ45zDy490inzMpp2Ldd1hEYe7gEY2GsnLd4prFJxl8luLJsbZVtAURx
R2YuKyl4Da6keb0lyxSdHQKsKhSen7QWCPBZLDinZGs51PYxzepntQr8LpE.
.qYkU6cUhtm4YDgedczhjxmZQJJSVFWTlGqOWmHfb7ImJ0K.shvX07otxsDx
KUtE3K2hhnSjUv0NDL9ISvDpW8DLPI4vDJnT3qVFlNqk9igwu7XX+2u+6+ND
Bj28W9aS92e6+xGVFvvsxxv3S2MlP7pmkQ0.oPCnJIkdkxxjbQ+QxvWptwHd
5FSoQn18hcF7Kxqd9Eiq09XXNgKtHoWOixUYzJc5oi.Ax74fYbvsYkxTBSdp
1ZaonGVSpMd2yjvA3uljVjmlklZkren+QhiBDTBqFAXxsnww3UsgFnANZfOJ
Z.hFngpSnASboiFJGGgqMR2EbfcAvQNTo8vJaEsPvDCdwgaGINcKEL5.FEz2
JeLUvY1R7x0.RUs8NCalLRmQhMdeeIPAt73FLgZ5.G5FTfGxPAbbikMPhFJE
R4oiDvPFIHniZpj4FtPJqFE.Db5v.5KJLb7jVLEpsuRZgdwV6MjmIsvE8WRK
z2J8FA3B7DEUf47qrrVrlYjniZmoJXDBwR2PmtkVJaHaokxOb6mhb1bLUEhS
XcwkCkOPABaLoLzw.BvLoL3L9tgldFAnS+xmnxwc7fkh5N9N63gdwVRZg+kj
lPbNen8PEoouUwLPw.5DoDIYJuc9X9HGRdfJVou44YESyVEucZbjGWDmVFYj
pFJPL2TfiQI0lYEBaEAzwC2P4osTCPNGTJ2rihS2bNFWV6bpMtyMIqGsBtc2
IVuZ0dVzTcVBGbRRgL9sA.SrlswZy1T23uBmRE1psbMOKsLMZoqQ9s4IFpUa
HB5YQDyUnH4+Y2H.SXZ8aonyyHn1Uk.h1bCeS6lvbJTFWWsM2fZcL+0Q5nwO
sL9bSxLuTkZAR4WXS4pmAfAB0XgGyvmG.CJwKE.KuF.XEUZItFqfmC9hjaSb
VmAyAmbbmMRKtFPZAQTahjvQST5Obk2H8loi5KghL+Z.dY53RpT9NC3UpdwL
DytFfWBQNgtAROC3UnXuTZuC90jwghshevJxqrFLnlzeUzZyzmQ7UbxvK9pC
AKrCM+RbEjmp5NpfurPE5gxJl1anBbYgJDeoPrs46cNvB5xBVvdRg5FpvTWV
nB3IEpinhb3gJl5ssHon7vKALlitnLkDY6R9wL26skG4TvfmoLzryw2aa+x7
2rDaImhxeZag2lEUFseU1ltHYU8JJswNL3axh35dn2+OKhyKd+OogpnedcRZ
J98+wrOltHKZVw6KeLdziqS0AXL5qF8iwooIy0+7iQ4owElANqpzVatn+TRp
CMhVOKIyrkFGfoJmM.NqLp6n0A.cWgNFn3pFPSQ8yJV3GLkKrtTcOSo3rEVa
+Co3wj4U84S1c+sV1w8uHsU7tF6tQU+9PUc+14.1sPjK2z0f9LQokZbt+8pX
Ub7r1aJUUA0GYnVB97ZfZQMM6os69mUdzO3JPZasi1ExhEqyMvYCHnZmtJgZ
+QeNkcelzSc4wikZacp5pa11vPz5Br1VRUpsVM5KxybhmYH9D3hYbMLVJzTi
BSxMGbNlXVXkVSp1DhT3SdzsHrS0GyoUD41b+nkuy.pluHSKHGsRpTaRkRgV
Aj.75BQ0h62x7jhoQaRvahxCTl3TO+7K0YqRxON5+hjO5mOPSsFfP89zVdrf
AOjIth0je2nBvpKd6YDFEQbwDb4Vd+QmqghNx6kWW7drDus.+8EuuBk6edu5
0Kue074k+9n44w+753zoOM8Qs3DqU3wzClrIv3Ti0.xlHB3pCqySZYX5QCwo
zh295YHT237Xx0Em2jOY8nl1Wb9JTt247Xwqbe8rC+TiwM+G.fzEe8X40mud
hB2Qe8nqKdORQ5ee8UnLE2295Iu4q+T80iUpN5qmPuj80y3DGkmclTd3phwy
namel8EguBh6c9N8Uta9CNhQRdeLO+XWcN4ortR3ut7wSkaG4r9hwWgw8NiG
3u4g+D8vST1mCdzMy54yvAOHtnSlGSgtETOfupH7JNu2cwWCx8dt7vqcm7GZ
NDAH11E9LXdPIWMydOCW8vUXB8.gzwB4ccEduBI5cm80fb+WGu271ex4yinn
NlOOVcI6tWQ5Zo6upH7B2SNm9hqWgt8+vz85ko6qyLItiEmVbcoYiD8dXrUP
buqdKeyQ1I5HayyWhN3GCFjOIepWG8+g+72N5ulkTDWLIJYtGKidLBpmveMV
NyfBN4UQO71pnmpPHp6g0wk5RnuiQJQbOyV5PjRzqJGJDFuOCUpBd6+rhXux
qHxgLRJDfaxM3VaH1BibNStA70WsPTcjtCpqK5NpWyLpBd6e5N5sXGO0hfPj
tXGO6g73koDH1a+3EIo6+xxy1FLaeWHpHac9zpKX0akosqmkwyzASniSY6Bs
od4q23fdLY1r3lAnLdVRgQIw1Zamd4s7H8QdngSdFVhi4s.zQkGALrjG6KJv
PIPHODHY.AHevGi3.AQbD9nOKPACdD9fO6IzunxivC4gIBm7v8AeBn7P7AeB
m6ByKGjiiOgy7ivG6gr.JO9XNjgCm73i04fIMberFRBG6h6i0Pb.wGe5tf.J
OdYMLbQisWbwOC6JbhC0G0mvQ1Yd4LMbwhw7Q8gSFXxCdfIOCs9KzvRdXpAl
7DNyyLuLGFv9KerGRCm8YFYfkrLC6k.EPKP9UNg.ZBB4k.ENcZpOgrxBWHPT
eBYkFNahTeh4fxCm73iMZU3rQS8wFsJf8WdYiNblDo9XilFtTBo9X.hGv9Ke
rGZfGbPDGhOlCsXXXpuJwGygjv0cQ39hOAp+xGyOjvYdl3i9LOblmI9X9wJz
ARe1q.xBm4YhOlCIATd7c3cBC8B60vUFNuWXgupyABe7wbnEDCC8B6UzXgCd
7p.hgKgYrOzKb.Um8wZHNbduvHOUeBj1rOj8fANfO1BwgKycPLrloM.22P4C
i1CP801bXLFB9X7QDv9K+pdX3J8C3U0CCn73i0Yd3rNueewyaddHIOTz.SfH
zAl.gGZcYfXnIPP.EHxvp.Y6ObIewKov9CWxW7jB2e3RF.Fp8QmNfxiOloOS
owMgwiVs5WhyK1bIsBx3kQ+XVt4esy+9wKSRc+qc98ONO9WRpNdpcKQ4SeLo
LdZ45b2DW+SR2CWA6ZlKOccxlmq9ZH3calf66MI0qW5AKexM+2sButEOOZ8h
xcQo6eXZ1BmDYeAJb6H2KfLyilD2uTvsMeyJryhaPiZeWVZzzrsK8.yRBvdI
uKI0.FwMd8Or8qlWv6eXdxhE0hQyEeX0zze7C4QyRhSKqWfdMjZzDrBAJt4R
SPJIh59kdS6J5aNKn5zjL.oLGqjhwT2uHHDE21Yga.Q6701iKJ8A2hM.KZ9V
jOOaUVd8ZObBQUe7qKypaXUJT0qvva2nbmq269KigwK0cjIUmSSxPceuagZ7
ehMqQypG8gsqBDMcZbZ4N.pDy.gAODRPB19LlhQYetlP0pL4C1k.DSgPxpUR
QGa.ezPCFsLKMqXUzz3SsE3Ue633EwK2+TERjBr5PRDBCR2Ug.b4tm6NmDHk
Rr4HwRIrQCjADBrut9NmkRhUThkoIjLlv8KLFvWmbNeLvrKeSC8.Qfr5fRrf
SbcLZ3FqFLzOsF+u8t+e697W7
-----------end_max5_patcher-----------
</code></pre>
view raw Sonic Spaces hosted with ❤ by GitHub