After asking @tremblap and @weefuzzy a bunch of questions at the 2nd plenary, I sat down to create a patch to extract the main onset descriptors I want from incoming audio in a JIT manner.
It was a bit confusing at first as it takes lots more steps to get to the same kind of information but I got there in the end, and the results are pretty interesting.
At the moment I haven’t started to compare the actual analysis data yet (I don’t really understand what “the spectral centroid (1) in spectral bins as units” means from the fluid.bufspectralshape~
helpfile (what would it be for fft settings of 256 64
? would it be 256 and I would divide the output of the centroid by 256 to get a normalized value? (why wouldn’t it be normalized?))) but I did find out some interesting results in terms of how fast/expensive the process is.
The first is in terms of what it takes to do the same job:
I do appreciate the fact that you have tons more control in the “newschool” way of doing things. using diff fft settings etc… but it takes 9 core objects and corresponding buffers to do the same thing that a single descriptors~
object did.
Not great to read/code, but not the end of the world, especially if it’s better.
The biggest difference (so far) is the processing speed.
You can test the patch below to compare for yourself (save first so all the loadbangs fire), but on my computer the descriptors~
approach takes an average of 0.05ms to complete a single block of analysis. The FluCoMa equivalent takes 1.0ms to complete… so about 20 times slower, and more importantly adding an appreciable amount of milliseconds (1ms) to each cycle of computation. That’s pretty big when you’re dealing with only 512 samples anyways (almost a 10% increase in latency).
I don’t know if this is because it is computing lots of things I am not using (each fluid.descriptors~
object computes every possible descriptor, and each fluid.bufstats~
object computes every possible statistic) or if it is because there’s multiple layers of reading/writing buffers involved, including some Max-rate peek~
-ing at the end, or if perhaps the algorithms aren’t optimized yet, but the performance difference is pretty night and day.
Thoughts?
----------begin_max5_patcher----------
11121.3oc68s9iaijjme18eEDENrn66JqIe+31cV3a58t99P2XNf9CCFzyBC
VknphikD0RQY2dZL0e6W9fjhuYRIRVztUA3pjIEkx7WDYjQDY7329l2b2CQ+
Zvw679e58Kdu4M+127l2Xtj9BuI8++l614+qOt0+n4sc29fOE8ve+t6s2JI3
WSLW9f25fiO9qwgGRhhOlc68m1EcJYaPh4YgoWMbs4QTeLukPxdq12WxmODX
GM2cm2+Y5sdLZaTr8pfUT.TRYbFPHvXL7d0kjpeXHIhJg.IUeE.FBvRHEgjD
rjeuGbEH+i6fexiOGt+o2GG7Xh8iEQnq.26QwH8eDX8uQnBOiZhDtu57v7AE
DmBVon0ataS31fOFDeLLZeg28aty+vgBW9MEdDMD+2sSQw84WJbu8Rf7KEG7
wvrmmleU+X0zIQMWNEavt69UVFpp+XhVGDu+TnYnXu3+7axFRFx5d+cAGO3+
n8g0T+raeFfnRMj.AD8eXDf9ODA3LBoXadZazieHXcwg7cQGB1Gt+Pbvwf8I
9Ioi87auNXi+osIueSz9jig+CyH.poAMb+MoivFuodNXF9+uhC82lOAdJNbc
zd8fnDkPe4rutewCZn85eedxXdG68OzvCqXaUvRK27nZRd53C9wZB0CaMeCn
ralDEss7sxetsAaRRu8gv86qfhIQGZ+lwgO8bGO6CQpatqqOaycN99S6s288
Jdhj2ez+ikQ6D+saSW6W9i+W82GtyOIHIzRBPf7aFr2WMQe93iwQa2VZ9Zuy
Ga3NqU73OF7ov0IOa9hJxLnd6J4KoLQ2kSkWG9TvwjxWKw+oikuxwjOaA8BW
5zCoqgeeRvtCaUyhxugRRGKtfsnTxRWuKokUkXtQQXJdqFkVVUhIjV7QZWpY
ah5f.5JkLRLDuBBUhLIL.gHQPgPshlTUvWqB+ZR.XYfnUAgsILrxi2jPwVDL
1tvw9EP1lPxRBJcPXYEAlDjvfkDyNJDl4+gArxPayRMcPxoKRO6UBpiRQ6PR
paRS6QhZuRU6UxZORW6WBauRYcPRqKRaGhD2Nj51qj2tk91sD3tkB2oj31jF
2rD4VjJ6jj4lkNWUBRUoz0teeRqKKw1OIZ8CUuaqBsqJ3lV8I6V1cqpphjq3
TfVC2zezp2hwqnbljQytnRwXBrIo4MHQu389mey2T7+b+HgrOFsamRNVqPaR
jmRn5G9COpYF6DgAsivPvc8iebod6ODloAGtEh.eI.Qahi14ksx6rMVCGlDN
iRDCHI4e4.ReezdkZEIdGBUSIO+8q8dT81iiBW6sIN3+5Tv9G+rW3dE61tv0
g12v1vCdpKb5nVfnWr+9mBVU8KXa39fGiNs27sfuTjm4.xirVeZW7prf07e3
KAruGoi+8nv8djKV7HZbDOhsFpJPVd1FjU1u.QxqOXdZuKvIsCYg8Cm2W4et
CuRqCR33UX0ObrL8GzRY6ldP2ZldMLVUnfLNLqPFak5eLAKCAY58x4JKyvBI
L6h31rLqSqyZyBs5XWmVp0k0ZM7Q0lUacX4V2Vu4lEbcYEWMK4bzZttbAFQX
IH7F1Urci5bzvNWMtyIC7FfQd8Xnm6F64fAeNYzmSF94fwetY.nSFA5ngftZ
L3PMHrGiBcxvv9MNreCD62HwdMTrKiEa2fwNLZzYCGa23wlDn0zdOM99bRU0
lUW8rtom1GlTPA08QIAlqcum+QuOErcq9uZUVUbJO4ElbzSs0ygSIMq2Zu5t
1u9q8oCa65wZjPZsyBR4soGaOJHTSIg5JJL2DsGsDsf04lObP8ZM4pWzGcsn
OwQz2ZDATxVIoTNHWCMk9uBy9XX7WCjhp1DedgzzSJPChTXWGHEe8f8Y1MGG
3eLZ+YammdjGxccY.DQVgvDACmY.HQspf.VIjLFBkcQgVuNzWQjlzsUJtKxw
4ft.bktnP6ZzEgXk.yoTRlvJ58dLkA7LJDWz.okOMpQyOaX0CXkgY7tdAdXO
.Oi2zmQ+Fk1F8wFNDPBaEt5BElrMKQqSCvKaZf1I.diB7SmB3WRVgqtdfvcG
8eMWAXFEWOvJfSAvZ2KFCx9c+PYSB9xDDOb8PB2uN3WesoPVP7tqVluvU8fR
konTAhTUkzgPJf8PJFl14ChTT2GG58OczHRChne+tQqNFcJ9wL96bgLdMCPJ
Nujv849R5WJrqf9IFEtrqe7yG53WyZsbF+ZYQCD+oNO9q7lp5tx6z9BZ86s9
K689IIwgObJwx50kecuJ+u7z1nG72l5MkbuF1gaZ9l1mjeg5me7H4mek5tTA
FSJJz6le9u4m+a94+le9u4m+a94+le9u4m+a94+le9u4m+a94+le9u4m+a94
+le9u4m+a94+le9u4m+a94+le9+8te9aZaF28ie+dweanFbbN+GrImS6Ry5b
SkN2Po5HsY4VSDJ23VEtmcSj6bE+P3AAfvN.vtRbPm.uxYobiB5KiosIfoBx
VWvhRHAr1DsMQh35hTblpeMiPjyiPxqzHD33HD8JM9vNN9nuFiuL9JmQP3rO
BICbDhl4QHZ.iuWi0HCgBCeEFezARewcN9JbyhJS4hhT+10VQC5WwolTZ57D
H+Umg4Qr9xnSfzAWcYvnqq5xfvhUHfffyKDARssfHchhBQYlBJvY4Vd20ZFz
7fTu0CBWwfCFrPcWJd1rMxO4BQLhx5YkIyTp.SkXNQmZsVCqWDH1Q+cGNlDs
63KsCZnVpeQ7NAsigOsWGsBMBesGiD20YDOzHtCnMf6.iJoboC0Ao4AoO3+A
OeEh74iAdIFYjOo1SFrpr+LciekLjE2iIVqClFIsBVivUjJfzI+LEzOzSmGn
ufYYuL7xzEnSrtlAmy.dyI5jMGKxh2LhRlBmMub5UMj2QFWXmfY3dGDy1zxc
BncyPa0F9RleVbbU2byQ.vpYSd61iWBwvWBKBlxpyh3B7.esfmNV9p19X8C9
6eZ3bajN41LelS21RMoN.hIqKpjAl2kt6BNdzuzw9W3D11jbvO1e2QODk4wH
2W5PR1FcZ8d0Sq13R8IlVad.qXLucAqC826orh3840oGAvybNjpapt0wM6Je
khe+scr1NRmkuRaG1HMFC4ZZLhh.bfhTSzzXrs9+foCUmuyUxzZdz5LcuIK3
JP8qaadMS2Zyr2JdupStuAOJ.NNJfzIbTnYdbaT.lxQAwUJhbJGEnk.VfccT
Pp3UgQcTfbcMBFMkqQ3Uc1bWihxuwn301DI.75NzZ.IyGZvogOF5JeLuUZ2Y
AulfWtEIum2t3z5vne1D46u+mB1e57NGYwxeyi8GdZS31s4EF8lboU1VYokO
8RUx1hETcjj.gBcUSGCwb8tN.c7nfnzpmWg84fYOHgRj.j9sSXJiKLEdch.g
oXSIXugGEc96D.k1uIfTnCJL8qTWBVpTsaeTk9VoYC.uRcH8Pbzgn37TqXEV
V54NkD8Tr+5vTsQAM5Bt6KvtDqdmMEy42sSQHBK9YzD6VNQ8GO8nuqDxfsAZ
skKQQ3BFiafSA.JD1WQn.DpF5b2Q0GviZDn7m.BvjFZJjwQV5g..fj5e.Zc3
LO66C0ATwwfbZDVhfFZDJmPi3JsVpSiJyPQ3TH1LnQRrvVP9QTnZDU+AGBeb
NsrCV4AvVUlYVjyBK3.pPXeUiy1pLyLJvh0L8Ob6qreZyBubI3rDdHADHWZl
JRJgysLRHok4Roo9+YKpwpjy8mODr26m82ez6mC1E9Pz10kUH1+wGqx2h0LJ
FLmjAIZ4HjL59jtn6CG2Fp1c3unyeLWW7UXzaK2lE+0DOdUVBwJkHZcOTacY
J39B+p9xq1mhJFf9Hn1UA4xA3oKplGvohqhblRpD.o1CBIKx9okbQnv4ZnWy
T4og1NFhNKH.LS3U8W0i.PtPuq+8M9plezunzCn9J0gyQT0MdCfa1P+KnqkB
mvyhDUqu09SaOETrZx18HuocEfbFwtqX9jPpuDbFmDwQeZ+UMKNO1o4xTvy7
r36+r+0MI.HkZ.VQ4bLFYWiifPHd9lD+PbPvUNKLTAckGFa0vUq617MA9qAa
2F8I2mAE8b3uX7cHUB.hd26UoxL2JIEJLs4J0yQyUpbZmnm18PP7Onz46pHT
5kG.C6FUoBA0LafEktOoShXqBg5YwEI2kQXLrLcIBOU4YEAPh6QOqYYhm9Yj
8AzW7t7aWROTp63aoZrsX2L07aKc4J5lbIda8dn4lHGpglHGn8lH28UNvlt5
9aocCBaChn8t+1ELM2rMR8Yz8DZST7NeyHhUeJhy6SdlyYIHIH981D2uvg.d
gSeLQrxjBdljVs9Ave8S+VnxENNm9IxXZqDYajhbe4CBtqYJ0lx5xYal9O15
8TbzoCd4gEfCSXVmb0NMQgli2217oZehhdU3nEiDGcymLW6mJWG3UpD.hX1X
LN383gS5x2QrysLSrrmEBSBxX6LlLZObR+NryXhnE53HvzlkClOIsFSnRgBJ
7b6hPdqQYdqQY9UQix7BiyIXOgZA1rSOjaaXMzreO7HYRoZQP7G825Et2a2Q
uvidwAZeNEr1SgJAulA5zCdWPnKeMg3TaRgtvXUzHwja2yswVM1qRf2p1W9Q
sT6gGB8CMnvmbrMsV1QYKFv8sWT3Kub.1TwJDaI+AYLXDr.hK+KQT.cwHJvp
28WORBXKGFVBWyi9JIH3xB5a9.4KaW9WZwTwgc+aKLu0eadGUZWdzSo8lNGL
zEcBqF.G8xzMnQk.Pu5.o35AR6JyQCG80nVJP1I3AmqPaU3XjeMkgTJ2wwvT
F3fLWigxxoF7nNFbMBJYSYHs5Zj.NkAz5.nES0Xv0XpE2Q.QN8GTga9H4073
LBGvwYfws5fOsCtGvIZPDF41PDZIdjFvo6HML8C8E+QZfjW+QZjMS+h3HMPh
K+HMxlnK3iz.JWPGoQJd8EwQZffy4QZjgL2NRiaGowsiz31QZb6HMtcjF2NR
iaGowsiz31QZb6HMtcjF2NRiaGowWAGow0651uNbg8RvU9KgizXIbzNKgi35
5OpuaGowPyPCH85xPCaMHaBSPiQ4fafjq9farSzo7baJmaxEreAIVQgbDTpq
tjRwJDz6s5RzHAgNGx485JWX6txs6INipmqhzMj47w2+9s5u5+OaO88Q+juy
yQlCSwR4CFE.kTFmADBcYbyjAr5dbERhnRHvVhL.XH.KgTDRRvxxYccGqIR8
hcO3E72gdwtXe7EBssmOljLIdwFsBbyu027a8WE9stKmwbZylf3W7NdPwNE6
u83y9GBdulA53fKDzBWb908NZMmTeldBrjl0toHlxYps6nRYKlx4bF.ZpAlW
JvQGQfiKQsCb.9hC3xpknWJ1wlZrSWbOM5tIWbXW4UsJyT1MX7iIl7EsPotP
ZI.Rf.oKDpZm7QgKzUvWFHJm7EvMAh.3xc07EgibvjuXVo8XMbDQV1qrGLNR
.S8hZjfoKtwLn.xH.1REFMqoGL7gm7kyM.eb5hcw7vAPwTCfPNrJ.JmYcap2
OuaLpQcONQ3rdNfLp8HNTyZkLLNByvHgQBVZThtDNHxDOvviFAxU2MHzAFLB
H.nz9RNDaz5UVAnPnEyhrKAnfhqFnnJtjh.EvVU5Wv.UKMbcGQL3U1+qvvF1
8ivwUvKlCBevyWaByibA82F40gT1fxmhpxJQoh9wFxL07kBB9v.c1QKvkDOB
sJrlWLp1HCVBAgTz7xc08Va5N7wf2bSh5Kbkv7UXNUhAYsDEbSBlRi6cvhXW
d+eMb2ocCFKD7dvBNakDJPTAGKzyaDQuqOnpLG3hYW+MIQ6tjvkiSmBoy3pR
mIzEz19zgiR3qda+FApEt9QrgGlffqW+HaywZIiLstI1EvZQjiw1XBaSTu15
NHCsXTKxhZN4l91vJwHfUMuPTxphbfkFx4pe5ayFuwn0plt3rNZgnKFzZy1S
gqW8voMFb5Eu2YiWoF7Uu5VlUsMsR9cai9jG06cOG9zydRZq8HM7PcMCxgPo
9dWz1uIUWQJJCEqnK.LWYOAV2VJPXa9JJWBpozBs4rq+ynIsHm35vdnbbv9F
kgzD1CIKeruzIFjA+sKr4Jo.rQh62l.5MA41brbYA4JiXNDcLnEgQduqP7R1
lbp3jM5Lf1C38N0Tw75id7QjxflR4RXzJQYuEiHM3U4ENUy1mMKQspH4JiJg
JRkfvwiLwlRIX0oRPa6LdgSWxaGpkHM0ErM4qgFUgaMrlARlWpQWNeIu8x9G
ThrhC7Mu3CAexPH9Cde3TbRzwP8Kii1FsYi5Ea15mjd6Gi0Aq0v67rskhu.P
emcCVTWtDDW6TrR2+PYJ0B.iyYr+CdIwmBND3+gg63u9b1ECXR6KBoFT.wKG
e8Yk8pXbh1uIbcv9GCFNRP6yEnHwJENHDHHFHnRjf2LvjZbHXIzonKHW6+F7
duKpAciYiwQOnVDZiLXb+FChlakdKpU04cNRL6W7j261D3qCc5iU0LayljiJ
rP8dx5D2E26fVVqoqa2CLdB0.qgyq+K.Mvxj+0.A6Sg60Ausgn7tmiNX9OZp
SNk7rVAe3SA5viV+bps9yjjVVMfwkTNpZBzDsyFK9KKpkQDcSqsJrFRAykoR
o5T6u8on3vjm2UV04wkp.lPkmahHAvyKQ5xR8W7H4ydh52leLdEjH0YbiMkZ
vfKIOfm7xkxEVNY5SKBKZvf0BRHGvB30hESRhO6bW7dJy1VSjj31vPGIESVF
257v.Mkk1VnqIer9H4ltQgqo9qbJyIdsaccZTvmxQAx0TRuAPKJdsMEBgutC
MLo8gFXZpmAfEPh7igKghSrqk1A3TlK+XWKtCD4TNJnCRT+jMLbUHaCbwS7R
Z2GZv1GZnW4gFdtk1Pbc+J9Tt2MQNHta7TUBUbUzKlt.JhJvobgN24xpiXJG
ENK0aR2BPhGD6I5UtRGgmTiN.xQn31TJ4yawlry0tfSqCi9YSED38+Tv9St1
pke3oMga2lWkLdSs2watKyr9zZow8EtUopqARRfPgogrCwbjouKiUufRMlUU
64fYOHIumtSXHNwTENHBDlZ5q3fFdTz4uSc6b17MAjB.w9pBc34hOp+9mRqp
B7ykF.KANNRWu0xJwDqvxRO2ojnmh8WGlZWc9tLmoWSSqy9GO8nuqDxfsA6p
03uELF2.mB.THruhPAHT8Vm8Q0GviZDn7m.BvjBa6cmirzCA..I0+.zd1y7r
uObutXkDjSivRDzPiP4DZDWPv0oQkYnHbJDaFzHIVXqNKHJTMhZpye6NebNs
rCV4AvVUlYVjyBK3.pPXeUiy1pLyLJvh0L8Ob6qreZyBub6MRcIf.41dvtjR
R6A6DjzxbQY0J0jYrvJwb+4CA689Y+8G894fcgOnaC7kd6Mzv5wZFEClSxfD
sbDhbN5W8ev1u5+K5BiyEzv5MgtUoeMwi2c9+JqPk2ougZqKSA2W3W0Wd09T
Tw.zGA0tJHWN.OcQ07.NU7usyTRk.H0dPHYQ1OsjKBENWC8Zmf6zPaGCQmED
.lI7p9q5Q.HWn20+9FeUyO5WT5ATek5v4Hpd5CCfa1P+KnqkBmvyhDU6o.9m
1dJnXrN08HuocEfbFwtqX9jPpuDbFmDwQeZ+UMKNO1o4xTvy7r36+r+0MI.H
kZ.VQ4bLFYWiifPHd9lD+PbPvUNKLTAr9GqFtZc2luIveMX61nO49LnXgt6W
Lk5NpD.D8t2qRkYtURJTXp4gpmilqT4zNQOs6gf3ePoy2UQnzKO.F1MpREBp
Y1.KJceRmDwVEB0yhKRtKivXXY5RDdpxyJBfD2idVu1S7yya2odULafCAlAs
DSX.YpYCbX88yWdj8D+CCYkYAKd9Q+jHueTG6P2MFiw4nLGOCEv3xgoYgLF8
4yI1fWd3A+svuS2ObxuwCgJCH8O5cZeXxw+1d8CkGWveKy7dW+mx9raJpfaN
JMJWzIXczsx31pWnjZKYDLV038cBKIv55KpRnMG6wHqjRko3P0HPoPDSJMwS
pZI04B9qC0F3Kr3.aK+aSYsAVofsV2bmmIXzE0p+5saNRIqfHFR.SSkeSVwZ
CvdR1um7pdsRlSPrREAmgCJ9BK5y1HwBy0kCYkZobJVZCFMJYF6WgQa1bL21
l9mshKb1pS6zpDWLUmbpLrREIL0lRX80pFA+9qTNiPLayIxldOoHDAbqTNeq
TNeqTNegYhgUpmGCeA40zE0cn5MvbQo0pcaV7kUZMlq7xPoLaRz9qqEt0gx.
cDE281ymJ0khpoGvqWVN8+d+QSTwm7rehmVjzwmiRdwKw+ClKF3oWK6czWwa
Gn1k0boOplVQwdJKU7+nVg6rdlzwimBNt5BBedfCsCxlX1fhLMo083VPV2f5
0udsDGnDqutrVICn5+bk0kMnMM.z8dDtZCWHQvRyQ.kF3KmBizauf1Bn35q2
OonixDDAkiAbBlXqLvM0VZd0xiL+0VEA7NF9zGufhjd24CT01ReqZ2SOu.Sv
m2jr6BSVB7cts3fwWQ4PoZ8AGInPpdwwWtILgldWNRYZIpgDSYz4KbM.+3SZ
r0IGPDdCmynA04QFdtitWWCBaA7Uskp8J5qw2pytPSC1ba3wjf8Z0edJ1W6a
QkZQ95XnypDkebf2i9GzFSu9NWcfHgdWW9XAkZeod2Ids9j5j4WksQ9q01e3
kusqCtV4B8rBfloyhcy44y2QOGdvOujm2+DDwacFp1qdu+1Nmm19eWpCAo3d
bC5u+7SjjXMNhYXGnVOmioza9I5leht4mnKzHekfhj.01QoaSojaMdEBGYO5
aKscp.oNTU.RtRuaISncRNaAU1ar3R39wCV5qF3fRsBQuktsl8sLPB6lgdOd
JIZylwCN5KE1gbYA7fubvCRxydFcu8zNWLH9SQwpqnKRmETZXD.ndKV5Bas+
VWIHzpIIlWHpyx17CdaFdCig3TowvspDa5oJI.qnBAVvnXJiPnZW5vWN8vsL
uBtIN3+5Tv9G+7vKbFnq0671CgSw2P.RfNFkEXoffE5ZozxAor6Wo1EVoOs2
6rK+HduSoamRSniA4K+7dmReknsQO84hqNGdivf2IrtNzjbK9we1UFQnfsBg
jLNEIQoa2gY3kSCVw+3i9qCdY3HU20R3J1+zZ8ey5CZcOLhBvHLQTnJXClWu
LdgUvlwDGxc53kV2ZZR6kIo90bgfk3JONCBabvoV0sIGrV.9ulzWckLkqQB0
YIVQEpuFuW2sEByu+rwhKu.hTNNRELDgAHRBf.Ilj6..3PDfKDJzCKLwSO.o
OFHnPH3HJmUKFQeUpzDzdlYl9OOTPwpQOlj0Q5wRff.TWzNWIP.FiATDhyo7
IchQb7HHvnuzHYt5cbshDcMypmKUSy3EMRi2EGkngAbGKdfeIMybUr.A709I
vzpi5U6AprEvYG0iGAG0ir5iRo2bTeEG0aqGnPa7dIr+gIw27S+M+zeyO8ie
LJJm9XTDQM0+eLASATQZnrmlsJycHK1c8GO5v0EimC2FTh8XLvH6efKl5M9w
fsJsA5HP5vN3u4Vc+pyUnXhvxlj15mHyay45x7KA7pCkPk5i1ncFestlXx8F
QGrP5n73hJh+DGJ5385bGg4Hev.yAZv.KFej9e2CeAMeZvfaRvsnnS0bCsrZ
LsIAWGTiJvjHMBxgHoHKKkVPg155iGzJE0k6mIN0zUZbMa9gFce9+u1R4QEy
aZWyL14kiK+OD8gfWxpP9WYiLYbgOxJtDxHPcQaKMNbIbptz1iDHBGvAXCGr
X4zeL+e7hGDq61EicSDuoCNXTQa8ASoPaDUxYTSZZp6gqTcMzGPgbJOsQSKV
LJ3XNR8Wz53bYHtP7ph3Y6uIglRyFkozY.l2Ue.KFX95jOPYSk7An00KKBIB
W3weQFiyJLEGf1MV9ZrKWf6uYYQpJ7hRXF1BJTRweg2yKbtJ3Josm2BvW2Bz
aCGt0DmREtWYqmzDeYnskhBuwcgqODoTQMkMBJsYHuN.AEZ0JS6oV55iERRM
JKUb665uu4D9cdhSYyMSKw0drfXJKw1jkvfv4CvTN6qecdnQYydSLw0TpaJI
ctdTtjIsljiGh3MXWh2RK8OXktaPs9vzzNZlPp8aAop3sFdeyI2o6ybCSvrJ
eytiFzo89lzlgjqcmpwpd0eqpEeqpEekz1aUs3Lh2spV7s5+3hOhf9jZXuIJ
d2KMG6OrFRR27DVVG2FkqEzoULY0qzsVAyJGRotERamay8c9BcZgW5rRa1GF
5SK.AjvB58PMmZCUf0cJCotIYXsjSuTFWnd1b2Cm1ro.FW1ack8wAc7B7J62
ZtyA8X.PKoCNpABA4tdA0RGTXKdOrcOG1LLm1H4MsHWLmjBol1.AjNiIWt5F
d5bVIwacPhsKo3b.rIul3Wqo5PYZzrAQ8g.+9Kb1f15SHxlv4BrwMqbcvubK
d1tEOa2hmswNd1vSe7rg4zrtg97G.aGeTsx4kAeHHnRgTSrZZlNkeqQycOd0
C1noC4UMiMIXe5xdtMHk59LQPu9ycHq04NM0VtdCHKa74Qwrurl4zqdlyrYD
9WbybR276uE5vbmlFipnWI9caqp3kpGAd0sycN23gNEjH2OzvIS8bk2uIS6o
pCkAeH8brAxILntQzQ4XNFPrIkHkMug3fBRTe1tUNBzlT5mTvBxZDB3UsKUM
aaZkA1VUNwoE8nYNHHGUHSNOHFwdJoXaQjgtbBaz2N7jpmBdciPIfIzPwpEu
BIFI.fyEs.HjrbhzccKk4EOpZz.nCOVk4KBPV+4nKIubsCfPPCHK.Kl.aLEi
IDHv7qgCyutQamt7i2FLCAKm.H0OIZ8CCWRAgMJgRlkWDo.IjZuZDIEfHrEi
TT06Kb2ocunUCb3nDdLQI0NLPLUdtDkHVNwFakZW4nk4FCChfJFIZSEyxVyS
1lbtX0SfqEmL1liFq73M4vwVb5X6NdremO1lCHqbpM85HxJNizghfYqNjzAm
R5hiI604jN5fxNbRoaNprGmU1qCK60ok833x9cdYuNvzAmX5hiLGhyL6vgl8
5TytcrY2N2raGb1oSNayQmM6ryVb3oSN8rYGeVUBRU4y0teuUQvlJpYsThcx
Cl3lpffc6Nktr.qMI2Crnb1gd.kCFfRazM0.ZCk8pQDF4N.i8WDOWlHWaEBq
QD9nN.eNTzOWl3myEEzQDPQN.nNUjPecfzZZwVFQqVDQ61MTclhMcmQ60cYZ
qbmCsnhtHA1tJ5ncauPMPF0KH6DtdAEgzEIxNZEozgQFf7dICsTvR6gQe.Es
zEI8nghZ5.QVZuHaCFF25AxM3hbZGtQXBQ0pI03.EJLEXVGE5yNSywZIzWaZ
HVO49Vt.rXbj55PQTcXXam5PVuDlLg.bs7McXJVUpfq1CmoqEc0Ny4zZPY+V
F5DCaYWlTKyTqCyMkoGM.1NTbV6JkPIM9lG8pw3fXvt3YNc.ybH0gY90WDWm
mIdsh6ZWjbzWSjbxPH479m4sWDXmm4CZjmOewPIaYx3ZAj8K4Y9PDaUs.y13
NMeSSmxQeoWR0i34h7Db2oaRSobR07UZN5wGqOE6WHV+c+j4PfqsEeXOyHFT
YcMWH4RR1AfKWNM3icGShz8T5iuL3FGCTd4AGW6MlaJDtRa2aluHz3EmuXvq
mB1+h26xXpzDYvHWALG1Q9xTvERvnLv4ZdFD4PrBAuc.vmO.30GOrRQYa4Pf
4Vm4Z80nzFHVTB31Y.e6LfucFvK1y.dcPkv5ninAeXdBhcANBpiE10hut+se
RsvwHbZ8+tSGdm0qwPi7IVpihwzg6HDa.ne2+2PkRAwe1ytN8aUbLe2+5eK9
us++mNHhyUn5a0gknwzI0m4eDZeK5+Et+w3.sKU79iFMr+C4Ox42xFuu09o6
8u8GUp39u7u383y5TN3aC2C+Nu+n5A+tey7lSReapqXe5j+o9OAaOF3U3S4e
2C7cdUehzW7VuuMeH8cE+P9aI5eqHdP0aN6Sx7c+ud2quWzC2WpXROPOnOR9
pLk0Bc1Wk86qbvqO1ols8Adc4GR2Wzorlz.M7q+vYlMmFxFhIn8ZA5DXi7.F
eLGrPtzVkqC0YN+6KUTY.qLkWkreU1q.ip8pc0eSOtM5SdA6+XvVkRSiW6Lk
zawbLa0MaEsZjZSswJ+hn+utQoY0TfOjdvGJ3KB3Qa6gVrWRjm+GiBW6sYqu
5cu1yOIw+wOLhMHWLt2NpL2VB4gqXHAlxjXbpoooIKzh.wN93y6BSTHlxXfm
TV+NdcP3da4zo4ELgBU+kBQrrhlZJy1xnUb+vwnsmRB71GEpz1Zy1nnwDjn8
lAIPSX+qfDIRopIhqKWKVXhwVb8oa05NkJlQeLv6+36GQTpul5NjIVYijA9J
JEjV0vSaCFKglRsxxXk3GuMWPmoFwbnENb+j2KGxfXBTsZkCkDDDKXb6V.bt
Yk7hv2jIOGGb74WT7BdP5EzwLjKgDyqoTWFhY82yLloDFKNRKRzB0dYa5ZjM
llBPdlD4tUzukr0smNy68M7uIiRfoBSTqpnDTffRxO2BjKIgJalNeGqOk7ie
RGWeVxggwek26rji2xAduKkl.U25cZBisDPMXQQXX+zGWoGUKmksWdDuXJWo
MCvtzCIlqcK+nRkhcAdqC0UxL0aRMm7FwsKmrliBxpwlRY1U3p4lMGrX1sUo
y1vSlU4hPvOjgVg4BFCotfs28LyG62E17x3i3w4Q.es1TIfB2XCXRRMqF+Bt
UR3ZWQfvlvBCs6slAoMVallNTf5yF4BTfmtNFc6kCcRZX4RvqvHDJspmCSyw
7hWcBgGrKvC7UAdrEFGnjWQmPIpyqaMhGZSIcy+aBgOmJ94rt5z58nPVEPIU
yJrT8GERBxJM9bcjglZYXC2bBQ.mJB8xoqWy2ACDfaqAfjUBFfoepyArB0l3
g0u2DAUTfqbKv4tMb37PyJrdV6CGDm6wLfYuGy35PCN6MVEBeHn17RPccnAY
yNpwbUyoorkZPbsqiz.+W01IELMU+U6Tx0YY.DQ.HrIaKybrR860Ljidkmr7
14FvutCMHY1WC47PCO6qgbsivjYlxqZi2BNoMdKnq8PpwS8PNznxCjnTcFIY
LLHuqDaUbr1clpIuqMMP3T1+rXKBqPQLm6USRqAqSyv.Lr1I1Tnr9zzDpjNh
uMf.K7YlqJKQlxkQP3fVFglrNQm7p6GdekzSbZoiiDr9ofWbu6rfZsEijUvT
J2bVZp3OaK7QJioYpsTDPQl+SInYqOqnC6+iOGk7hy8VENrm9RSmcwGqmgU5
MWYJ2P8xsgJ5v3Lmsgtr6yXF9ZZmLoTYnn5TlNecSm0Aa8+7KdTHR+Omm3nQ
XhiDnpSbIb1H0G8e1c5bd7qbMSWBnFqM.UueBMpS9f+wZ+GaYdBpOOIcz+mz
kcEcl7Qwot+zz3mPFARDZ1uGugdVtljMj9XXvmL4QT31vjOWjPEsYiNR.r83
.ivh2V3DbuylKWqiUaPjmWMYy8G2F93GRdNN5zSOW750RSmx23i0uwCOkU1+
yuxYaBSuhNDGRYadmNU7L6EDe53yAGW4GtQ+ee21nnCZ8tzu9iQaKt0bK7o4
6EtNXWjZ688qWo.xC9YmrWSUfuqfOFRsU5XiOPDx1H4fBjby6n7gwY4.ppqR
JePcydJY2SapmTP+jZ7Zt9MQHt7MAFiuoRdVsM63JX.008M02bBBGguIL104
z0hdXoCyIrXL9lDt7MwFiuIlKeSzw3ah5x2zXrdh5xJ2JKuK6KsK9qFRbfYD
AGgIIzEgFr4BMqLZJ6zzK9qF4xWMCOBSRjKKCPSBKCxIoJiAKCxEoJnwPRIz
k4DZLjTVt9tz0BtqcelxGlaOmN9U8M4BuHjNVfW+aROFnmSLDrQ3KR3hLC9X
LkbZ0DeD9h3tv4QGCwfbG9hjSgPPtqX4nuGCyE9EDZLT.h65ZfqVPuKeSYCm
oeeyJ7uUNmKcgYVYamxPuJdp.Ka7FitRFnALEtNwsXjqzkxhLr1xVoX4n+Vp
TbbpTTbpWLbZuH3Ts32XbqtsnbTw94yQmstJW9yl5dv6+of8mrl4mUGYJiEO
7zlvsayOglhNjOye.omeSdGet3o4fjDHTX506PLGwLuBqCzqhmVj8YfYODgR
j.yw7PXHNgZdk.go3xchS6igN+cAfR62.PJrUtQr9RvxGY6c96eJs5yvKz6e
ODGcHJNuL8rBKye+mRhdJ1ecXZvECJcnA2mxJoSqgp0Bk61o.zvrmoHqWNw3
GO8neWDffslJXQITUGt7bCrH.Pgv9JBEfPklo2cT8vlJQc4mFAXRCMAx3HKl
J..Ho7Cqc9o44de3dM6aPNNikHnAmQ4DJDWPvkw4xLBDNEhMCTjDKj1WQgpQ
R4GxE9sbZQKrbNxFTloSjypI3.pPXeUsYUUlNFEXwRl9Gt8U1OoIgmKGlJen
o.BjaJjAJnkv4VFBjzxjPY4vawrzPI15OeHXu2O6u+n2OGrK7gnsqO6SO+Ge
rJeGVSvM3IIaZqWKSJV8Dt5EDevzC7h+KZwccsvnZ7YT5WizXYm+uxxKmPMO
LZcYRagLRYZWkgNXEsKBfkqLe8GOkAebmvExGldQd0BakbYjrHqfVZ.gBG6g
0tfiG8eJXroEWp3lBBNxV3W+UcH3fKz6nceiup9isH2iq7pC2nhESiHG3tLz
rB5Cnly3QUZi8.+9SaOEjU7jZdT0jzPHmQrR7yGfR8kfSv.LN5S6G7H773hl
u1DOQivu+y9Ce.BPpsqrhx3XLxt1AAgP73O.+g3ffKXDZPOr9GqFSZ8DF+A2
eMX61nO08nqXxW9KlzujJA.Qm6WnTwhakr.EPi7OpBwoi5Dvz70+AktCCFb0
rh.C4mp1RiZFovhRyFkAXrUgB8HzY4NLhxxUYJ6HOUgJEvIwcrW9bMgNOe5F
wqnhHGBLCHIlv.xTUD4vx6275QlR7OzG2eAMW+Q+jHueTWNOu6R99sFl2ROA
8a9mey+evuDDdA
-----------end_max5_patcher-----------