OSC looper

one of the things that has been on my performance wishlist for a while now is a general purpose OSC looper. i’m imagining something along the lines of Mesh by @Galapagoose - http://monome.org/docs/app:mesh , but not specific to the monome and with the ability to be synced to a MIDI clock (or exist as an M4L app but perhaps that would be less interesting to others).

basic features:

  • sync/quantize to a MIDI clock (not pre-defined loop lengths, but quantizable to a DAW clock)
  • ability to relay & record all OSC messages
  • ability to trigger, retrigger & loop a bank of recorded patterns/gestures/loops/noodles (triggering could be via MIDI, OSC or keyboard)
  • a method of saving those patterns/gestures/loops/noodles as a time-stamped string or something that could be reloaded

my guess is that this would be very quick to implement. my questions are:

  • does this already exist?
  • (how) would other people use something like this?
  • what environments & interfaces should be supported? (ie ableton 9 with monome & soundplane)
  • what are the best options for building this from something that already exists, such as Mesh or Pages? ( @phortran )

Ahoy - I can’t give a full appraisal of the idea, but I would recommend mesh as a good starting point. The interface to record / playback is obviously grid oriented, but the actual source and destinations are just generic OSC messages – indeed you can use it to capture arc messages just as easily as grid. This dumb behaviour makes it at once immediate but also frustrating in terms of hung notes and such things. This always seems to be the curse of building software that is too flexible, rather than tightly configured to a particular device.

That being said, mesh could easily be expanded to achieve your goals. One difficult issue is that you generally need to run the looper in series with your OSC signal flow. If you try and run it in parallel I think it creates a conflict when trying to create two OSC hosts looking at the same port (ie. you can’t). This of course is frustrating when you just want to use your device directly without the looper (having to change ports). Again, the process is quite fluid with the monome due to the dynamic port generation of serialosc, but I have a feeling soundplane doesn’t follow this metaphor, and would require manual editing when switching.

Anyway. Cool idea! I’d love to see that bunch of code extended to meet other’s needs. Also not that the sequencer data was just time stamped events in a list, so should be easy enough to dump into a text file for saving.

1 Like

You might find this useful. I built this (kind of based on a simplified version of a single mesh looper) for use as a generic pattern recorder, allowing for variable speed playback, and variable total length etc…


----------begin_max5_patcher----------
7750.3oc6ck9iiabk+yy7WQkF9CyLtGMrt3Qbb.xlrY2EXC1.mrHKPlfFTRr
6ldjHUHoF2scr+aeqCdeVjhRhrGZiQc2EOT898NpWUu2qpe50u5l09O4DdC3
WC96fW8pe50u5Uhl3M7p3+9U2r29oM6rCE21Ma72u2wK5lakWKx4oHQ6emyF
+fsNaA+GNgQGCbRtAui6c814DIdZXbiGri17nq2C2E3rIR9siwzUZ2BnFD9O
flhefrVoA9GwOj6VwWj+5u+8F4d69GiRd8ZwsFF87NGwMmbe266Ecu8Fm7cB
dagt+nnMj1JMdq+7qeM+iaOQv3+Iv8AWO6cCELLrVgnYfgtQafg9DAL7b9AV
2oBVry2d6dmvP.r2hDzUFLT.Rz4juAR.Bn5AApU8n.rQTPdSQOevQ9scyMf+
wHJBDy4+ve1NJxIvCDH0OB.+fazifOaG3ZudmC3vN6mWau4SfvCNLkGausfs
tbHv02aUxKcmqG6oO5IdyngghXHG9vFlBsLXCnn4TQVxeKyrTReg8Gr9yZm.
90HsQ+aX.3yrObxem0AJZZB3.JfCDkj9iZgkTUrmX7qMwBLh2f.US9szm0Kg
742k4sE+H6tJfw3zdaf8dGlLycNdbQj73+V2Pt.ym77W2Wg6ai+W529ykIkL
5IOoTfYxgoLdxF+c9AIu.B+EfuM42LFjxTj+COryYf1IPbCj2J6jhOqkUha2
NQanuBvrKWGcLMi7vvF.Q2TBIRsdp3StpXsPBTYk9waTgCfXJ6OY+IldccjG
paNtgXjAKRaiLPFkQFx2Wj1gdUJAyTRb247YmfPlQ6bu5Wci8gC4Z9U4dDNJ
88RsGiaSax0S1jVZSANe1M44wosZGvPjHFbvEM3c8mLSLQweMLcy.uiththr
QF+50IuvDPT5hETp0nSDp+DybBILV6C6727Ims46S23evwy06PfSHSf0NJty
kd4sN2aebWzc4Mb.Qqp85IibT6E8XJhBh62wFqbWB4cyCAta883chBPMu4Lq
tPgyj7OyHFwc3YenlGlImvfkFtXHiHOFt1NfyIhMIfRtXju+thWJ8414beT7
kO354UBEi7Oz7EYtO9XKO6Ze1E2216Vbkv6N5Iu5cL0wn6Bs+bQzNxd2tX8y
hu9mr8b2aG4D4tOdT7zKJMK9X3l.+c6JPuxq74ZtxVlP7Fmevcazihun7BCr
a28PhPzMob4stb6CEaKx9gvhsTQ2k0zw0wJo2E4rmMFWToanvLdxqQl2RVg1
ayhVYqZoNu8GC72+m7OF5j+Fqy7cS13LkiGii+ArrMtF8cKcX65UfZzPeCHZ
Ym.xoKWiEwh.WiVFax5XoGuNqjMXorYqkcawrIqlErbVx5IRXgQuYimMZ.UA
inpXHsSioJZPsEippYXsCiqcZfsSircXnsaiscZvUAitpX3sOFeaw.bmFga2
Pb6Fia2fbqFkaxvb8Fma1bR2Foq2PcYiCkMXW45cY3tnw6HfF3G2sYmicP46
oI61MY6FgEqXCTt9M5nxteWq8ab4u010YqZGGU5p0C9MNuE1rCSH+J8yx1fx
eUwDBxYt7xvs9wcf8Nacs8ZkWg5lWQ0jy8G0CVk1UjUUXV7SaFTXTfi8d.dj
XQxY1KGxsSVDZgEc4zgfV3dqDQzW3PWRknDdTezhvlK7nN4Qe1d2QGvyoy76
TcdHlQgI3bKtUWJSjSkQAOAF0rgI8znwjjCI0OdDcgG0JOx8dvW4BAe62Bff
nGc7X+vYWnC38vwRkBJWxSBTI9k1B+pU90ukMwwwZTISwDlvnUTEXL3qHiQF
gmuf0khs70KUIr0hpzYWUJdVR8QSBarnI0Eq48imUNnkUO3MWS2Etemu8rf6
DAtGb+H4d.TG2C1y0b5qR1ysyH9z6GMCb8SIhrnDcgThh4N8RGBunC0C1zQu
C7LETaUW5RpysjIcKTsUrCiVXW80EbbNWv+p6gr+gjNhyHPDXss2CsxIwJyI
kIzHBpqDmDtrtdbGPYcrVgeMUgeRbPjR9r0PSXbAmpSRdEll9dMfoEilOOgi
6HzqBnfeesC3g9GCRxxzTQOPU7YqSXjqWZhP72yr3TyM+n61sNd0wf15Fxi6
sLp7CRD5jnKnhzEOVuyE5B0G90LitTkewc1etPW39PWj4Eco0G5BNOnKROnK
5LxdHsO7Ky4Cco2G8K57htz5CcMSzuL5CcYMe3Wl8ftHynwur5CcMezu3QST
c5Z9LtLoOiK2.HLIoq9XOjLe76k1G4vFLdNIoq9LOE57QNj9B0u29QWz4EcA
e442aunqYz7Tn8x+P3YhtJt7ahU7qi0eKawZOt00+uHJel69SNdGKtHgIE.T
6nx5Gt2c2tz549UMdmu5ljUa7F4ceaoKWnlvQVDHTTz6XH1.oK9M1uPo0HJE
+rvzBJmRrzPhBJWGYPnheyDgohhLWqgGGk8cqAsjeiZVlZxxSm2DrP8sm831
dODW1QFEqGFo3Uf+A+fz5zZE1pxyeLx+g.6stwK2ZA1cQ9cwhJSV04rmpoE5
8l8LFna42YYglb7v6RYRocnltS0wbX0ZaqzqYPXe0WyI+VZjSV3tpxQeccrm
a3Et016jEv1c1QQAtqOFI0NqQGYXEO0C67WauKtjnR0rUoRpxJ6pWWUTK82x
LbNhE6ZfOCG.6asFWQsWiqEhckgQWk3Zg.P1qRbE0YIt1cXpZLDUmWX9W8d.
bn3KDJqCMK8bAkuM.FOT.F1e.tb9eckv2GrYRwvSAikY+sdrrrYWRwPsKHHO
EP374s.Pan0CeR9kHvWS8NsUPFJJi6OJWJ4DtcxHbevtZ9hzSoaY97H2gjnc
ahl9Elv8Avu2e2NwtNvevIpRwkzKQbjr55QlBYbHrSSI5WPvVjqJsB3K6JD.
nviyXySFZhLUjXfW1VHV1VHV1VH5bxLSxsEhCf+yi6YX9O57W3aQimbhWx7S
jucLRkobNTqNa7ksye50JslxIUVK1UZvxdcKSTKV3ayJeMuplr12hE+1s5ql
k+1r9WyR3z3dCDFIqPJZsK5TSCDn3fApNffRCJziAF5XvA0GfPgAITZfBkFr
PgALTaPCkF3PwAOTc.j9NHRGCjnzfIcOfR2Cpz8.KcN3RaCvz7fLsalSsAaZ
d.m5LTU2.O0depL.TM4RND7a.PMYtjWSli24vQcLyZ4FAID0XEc15b8Tejot
S44NXcpk5yclU4UWV9JgX5BykCr815umudncxZQ8h0Fu.qTk4rjIDmst5DcF
xbi2lPBqwIxSTyEIYulJq3BgKJtiJu04oCAfOdyajJvuQxSzdK3CbUOsUfuF
fi+iUe7lQ1rc7dWNQcy1KLe0Y90UiPU4XZ8gi0UsBUYxevqHqnw5GpA9PUu6
qsVhpmE0TNbz.ipZtiVW1YzR5b.gM9.MlRGsmVGCV57jIcROo85SM84IsS6K
s+hgzIv9R5jKDsW0PP8Y0T83hhY2TKY3TCHXKY5T8OQWY7zol0SiPlOMBY+T
2Y.kZYAkBYBUsxKUWNsNyJplyLplD.UNCoFwrjZDyTpwKaoTOio5SVSUGaTk
rmptkO9jVNntylptVanZxpp5RhuqwtJvHGNBcrLZDj9DMBzRzHlQQiH6vcpw
yofkXQrDKhkXQrDKhkXQrrjlKwh3KkXQ7zRrH9hLVDnkXQrDKhkXQrDKhkXQ
rDKhkXQrDKhkXQrDKhkXQrDKhJdbxvmnS+rRBSjauzVoSKPgy3ky1djabcrc
APO4W8HgdDMp5awvvwJ7Kpt8AewB9kqmaD2XiLXJm3d2LRijgolXUh8ExbI1
WyoJwQdZ3XHOltwhxxzzhtD9qkvesD9qkveUY7mjw6ZaAV+vG.+w.+8+5O5w
9MlH0ge8G9.yUzMNggrgW99vU9AO7A9wnMyhwCefIa5t4Cq8O5sw4id7+m8T
+tc6.+6OYyHUmPveKvMJhGFsmA+d6PmmAemicHv1aK3ei05eL3Y.P7PGYCsE
FB7iX3zO3F5.3JYNaWwurqWDfqgC9Vft12.j+G6Y9ab9Lv+ddf5.gOZevge2
hcoBvSG7CuE7L6yuI9tYysk4Ns2C.Vatb9O+IieJ9+8QubOsH3AruOzJyuQ9
zhFp+654r6F01cmPKYGTmrmAJeh+als.fe.363JxI23y0bi+U+CfHev+lPSN
4s9Ye2sfPmniGdyaEjxOIuBG0dCWWiqv81uQ1nGaZ9A9ex4MIMbe.y.72wf6
2fSuov89LdQ5svoImHI4TGNVhN4nOqKKTD+.J9c7rrwGc3jXbq+bAJXaf8OT
j.Vau4SODvju19FnFJo2j1m9eOrkuA2v+16t2H9wWCdSB28c4YDusXm74j68
4j684p2aZ23uxrXvYJgNN.27e8NOsg8zghV3ZIasCbYJEIcwMANNdouk+q6A
tQfs9NLA2.gWMr2VTHH6KloDIlG9gcOyY.r+78P4iy9Veif99sRP+8B8k+0+
RRz+Ff1aA+TRmNGU+tuk8FholeN6M8r7MI4Toupmq9pdt0WULc8GXb0xrDmc
6bOD5H5yeM+K3CHo1Z5ev+o7y2lHoTmgK9R5sggrBqWD8QJhOX4lSBVVjyFX
4A+Mt6PHfFqP9n063LLuBjGyv418bK9ZqniUb5jd.i6XBOUlNowRX5NCwemq
LOVL13T2zPve0MUkypuvXOGIVwHxXkZr8kuBWXr8fwx7QkQziFGStucAwB6q
TMU4YDywhmUeBYwcgMhMEK4bDG1Hn0tKYVYmASwUvJ9VB1aKPN8WLR.DIqu+
R.FKR.yCGxzPirrhIRtzjJafeIyoNeLW7HOTfoVOYtnEl64ve6QMeWSLxKm5
abBupByUag4dN74dTYtI9v0al6R1LelLKCG2ITAQhAbMPpxYsVXrmCSxoqN5
nsPHwlkk69hVDU4ulK72ygU4Qm+Fq9JWJD0YuuHWAyqZBtCQ8LceIluXR0YX
eytehwKGZ2nuU1f9Wtz9KGRmza1t1KGZ27K2h4wpmjtwWrTt4R0rrTMKKUyx
R0rrTMKyxcVqNVQhdW3FDjLYajYlQySUsPD.wmZ4EbBUFSk4k15bRuNLo2Ad
ObUqbFjxbFjLtLXkJ7CB4JxYjGqby.1yYRGBI2XITTGhtnCo.S5oQiIAk4SH
FB6ASRagIc9MzEyYPx.XolgNr0hgtqlNDapLpqCgMWzgZkIw2o5tGB9sL2z4
YmO+2+M7iC0l105F7vSxeDGs3NYaFKrsqKaKQYCY1G1l9BaqU1lXiGiyr9Zv
a9p6Qf2w9C7aakWgUn72wxsVLCn7jL2PopzFsvqTwO8p4od+2dBh4O3NxP8B
rmkY41N6YM.OV7E49wnp5Mm7jbwm3Fywsk94Wfy4kpYlSiRMWAQKy4UIlT3X
rm4SfV4XPMmbfEXPKdObgGQBgL5wHRK9jeMbtiNDe6fKrJUVZhQPShN.W6VV
WuytqczA3YGzZwytq9h7krfC8wyN3xh7oDSZT7rCh6umcvEWuuriG0KG6fju
z4N0sqw26cJw3cKdr5aAknKHpp5tTYgGr9bkuHR2TJDVBuqlmv0tKf2PdCxc
nsZ5q0bRC1bBCprDzfoKy9RWn4AcYUKKngj6sdl6jktPpRWlyK5RY4PsYCcg
5AY0.FL2IKDY9PVZ80Z3Lgtf8QLj7xjtv5yG5pW5WFuLoK7Lhtv8geglOzEo
OzEddQWp5EEhNunKU85EMirGR6q907XVJMvBZgtlGypD2G5BOelkRunKxKTx
Z9L7UCdPL6YW8hrnuPoq4ynW39rFa34yh.f6yZ1PlOqYSeb5c9rF.j9PVj4i
u7j93aH4bYkuXfHpu78KRuJV19MTx9kPkVJU+xkKb6kn+oTd9mXo4ehkke6k
je2kieGkhe45Y91RBusU980W58kEZTtj6GoxsejJ09woL6UqD6Us75yydTor
5yoizZ4z2TozqPYz2P7Pqq74yD0R+sLCmoc0RAMNiD5HT9cjflMFB+5BhrId
EMsXopO78MVvMsG19lCtb8.YGAUtwvzeIP3mNADNNAInPEQXiuHQ3SQFFJyZ
KLjnHDatHD2WHFhkPLVMHl.+BCh26DE3yz0aDfQsCvHs3BdTHCS6DfujVIpj
ZnmSLtbpQ0XZQUKJZRjmKuBg0zOaTJU+LJGVaBPc0AHoXlx.jwnBPtdQWFLp
xo77PL1QhOXt5FkLaFkz5Dk5BCR+VqlbbYvRcS8NG3TMYcprVNJuz90OU65m
lcqrxyVel.me8Y8ISWFiTUzfL+5yzoi3LFqXetFYnqVetRT2aR1.Os5yPU5y
5Sq9rR5fFSm9LUUyySHcPSUwYZEgnqUetlQ2ZoOOMv4pg5qo9LZ5zmMTrOOc
TAM5yHJigzL3e757KVaWKTabeuwEnstEmsiElsFmpKufrx9q3SIHK5F4lIgr
aUZp99rNY7aT7GL25W6HVXbRRq0Lkha1X6s8Y1GN4uy5JHd5JC5sImoQw6kh
hejvVpsd1t4oC6rS34xZMk+Qxuk9rdIyNmeWhv+j6ir6pthIssyjPt.AqC77
m77WmmpqvDp+HIT7uzu8mKSJYzSdRI+ZMHVcjLdRgXUHCNwsI+lgT1rur87q
vSKm3Q0y7qa0eMi2GFMq+nMp15zt9YZqDJOHp14G2Zu4WpkzPcSZ5BhhPS9r
VAXq5IMspj1.5+ISgtLai0W8C1BdOHvIj8EBhb2yO.5YpnfvH6.VKx6f03G8
b732YXj+gbMKuW9ytyw6gnG+nGW7mce7eDBXnBSOwCbef+dvZmGb87DuK9aI
8kcvVdt2u4X.ODiIOzG81rywNnxsw+FcBrCcBytSQgzF+st1dym.xF7uO6V1
dLPXlmcWo+5ab8.LJlaB9s4tYv5i2euSRfiKdVzazS4aHEJLjYJsiIkEDkAe
shAlmSwftTdo8U4UmYklnoogXVTfD8t0foWIE3w2rEUmGWPkHZ3UhnKb9.OL
dp73+r5gAbgnEUO4gTXzRVOxcOqKJBtsV+FqrvhtW973cbDONjXPnuXHVtMW
fjm.5UCVQwiVSzXHejuy3DT1gx6c247YmfvXGJSVe2arObHWyE7elgPeuz4A
iaSax0S1TpOvrgP9raxymtaabic.CRhX3ww.YW+IyrPIbydlqIAdGEoKB70E
SmgaxoiI2WCzDt9AgRSml53bKz7MqYd+t4SwNfmzn+AG1vLG3Cp4Ek5ae5ki
S2n6Z3Xdtv0uO1CrZuX8gT5lGBb256w6DEvZdyYdcBEtC.yWP5x6vy9PMOrb
JCMbwPQlUs1NfyJhUwPoN666uq3kRetcN2GEe4CrQlKghrAca9hAtO7XKO6Z
e1E2216Vbkv6N5Iu5cLcwn63SOp38YuaWrxYwW+S1LKG1QNLOVjjqV5EklYd
jMCJ+c6JPuxq74ZtxVlT7FmevcaziELF0yohkMwpVl8U3w0wZo2E4rm4wRTo
afQcMEFC0htSQ28JGG1vPaVOGD4y7a6eNzP.ggh8yBCMzJnEgZx0Sk67HsDG
HjUuiCzHFyq1PkH6O4.djISyXofCOZG5G.jIE.2ayM161bjwljNN5ybZj2Z7
sIR7sC6bcxmngE8YDOPPVtoUPM0WY.o5XCt8B4dZgQKfr9TEjiALlf21.2O6
TV7q.jgFHjYIFjfBYPFVW2h4Citdx1HeiHFYphXuCr9YP4MInAfGDLhMIDCS
HhgGFcplhlp3wFeOl6JQbQnG+wAmQex3UymPFzDSfLqXVcBIZSWQjPlVi21A
m4RVR8CBdExvzhIef6BLflSUvHLxOvAvt8zo3OTTgHEIrLWQwVDjE2ATsNAl
Iqo2+b7BaHW2FmsbMnM1G3tmKGKKYcS9+XeW.l7TD2EIm.PXTfi89UitcZlu
8Tt6CqLYS0TCywUytrSCmr1kVVGMEVGsFWKsdK7XvrcaYYYZvb6jvTQS7Npt
UWqrPzj01Eqi7fOmuvlnNadoC0vEhMSVLCb3t9XXQWYvAJFNYQ6x50j03kqG
6pYHizkboIpACSXrdFLQSsBAkdK1FLcUcVrkDrMBrFb+vyPb3JyX3HuyhXXm
4YaKJTnAlJs2lclJcYvt2AJbrU0qDSFZjIIQLLVQrLvP9uqKKbjVfNxnl7nW
VHKBnAzFrQJSibXFL0HElzo3FZTE23Ib6sI4c6kB3DC5BVOTvyfM6eJCvLzk
6B4I1tnFcAdT5PSJ9A.sBpr1MN4apagUudUl.2v4GuQ3tk1GuYnbEdXS3bBh
UQtR2kBBkbVrfJInKnX8ZlEgXbDNbbjJKvi7PnQ2PHtYHDObHL15fjjtXH48
CtDYzyFDWmpuhPoPrEeVrcMRDUaVORzZgFb7jvNAcXBjuZ1rghPEE.sz5rbt
rFpk0SP7L4mID9T1H68ig6U4WNltEpG4Zy4xJTymne3y6W6uav9XwlgSh0.C
MXRXZp+bC77VzWW1QfhUGXiAAfCd5gZZoRc4sDDe9UzJ7QaF9Hm7XQID2k1q
028KizTjzgvz0qg1o69X3nJKF59fGyX7kaZkZCFyPFnbXlV5Tj51tGZNa2im
gCgO5G8KCF2XxWI3FUWeEaZRhcni3E1oMbCNiwse0GFI8y7wEq6U+ANmWBi2
Az0FGLKM3YImQusfX3YLhEv99chCZAvINtQhvJ.jwXPFtfNC9lYOF8EmEiHS
laL7U9.R6y9WQQL1b.dvbaK+6hYXz4e9KCd0cyIqZPnqrvDMDLoJ2aEIG0It
bwAMYFm7KigNNkASn3TJoa+Vl9tsbR6RB4UPyEC2t2I.X9Oeg1QIZMnQSmcR
g7ZlVYd4oBRBGqMUgxQd7hsGKnX03gTc6JXu61CLBIJt+AMooy.lRoqfZ5Dh
XnCsZZuXG47uwGnZAeNk1qFliaJFJuKBn5t0PghpilsY+UsJCuTjnpECuwrk
DQJaqvXX1JJXSvhrhMMHHhmVRlvZZepR8X3joJ7QpVq0TsISeV8MbjoiQYrx
xFSqMUBiQrKmybErwR9tVODzrPqHwYRlAa5Pl5FZZhBeKy0gr1uvp8Ju4aPn
SKdqtJ8YCEU6KybiqDdZ86xtk4vVlZqzY7QJjaK2ZET2xfGST1CmEVoz1uFL
XU14cHVSKFrJ6vQzIlAGrJ8YxzpOSToOOwT9op3Hp4.sr2OkeScSgUb91ENg
4fGeMZwbCAZYwHHq8KrxOgpnxOr+FJqBSchU3bgKlW9TTnI1.UZxxoseMvJ7
X5.7IBVVYfhtFcEJNcYyCVYseM.KUrPSzOMsPEvIcbFdvb0xJN2XQjbADNs8
qANoopqJZCRn55MiY02QwN2BA4Y1F7L7UmfLJ4hcRyWZPR4MDL7bckSTlDQF
CwzY2jXKKJKFyLQljWCDqUVwa6HM0NEalKOHxxOhr1uzfqkhigq7RXqtIjR3
JgZjl6hTJyraxBXUXwtSZ+ZfSSigjHL4F8XbZ5MjjkpqjK5rKOgfo3DgMLdp
9nUlehYsegwIp1U1tc4g3LxlPgNy.mUblWC0oqfTowqlZGiQoSLonwQz0YhI
hItOclXBUVP5St4jHfoogMMJydEcBZNih6SL.NqlynXw43jNgtRGYvjotsnR
aZ6WZHR0Me6yuTjNO7VwUvzzSThLYFYjKqjfSSuQFUdRsmc4ICdAIFWmh5V3
FjmvWI4IUW8syu7DuJ8SvoIm7jApGNCnc9W3MXtvwqQR8HnPp9j190.qzlLN
NkW9gB0Zv6IsqDVQ5AVMKW3ECUCtmAYxj.DFliclDUVlLejWzy7EKu9aV68h
ikkhhUOZhyPDENRhq43HNGl0vwPb9iW0lO9gG5QO7IbrCeBG4vMebC29QMbK
Gyv4O2WuMmXZSGsvUOVgeIelJDu2bVYeHNceV5qf8cOnO+t4LBI1TyLfsscD
aZdk1spah3kkTR+o73cnaDxPLwuV2BqMwypsn6jMebU1ctMgCe649JrSb2jT
fi219J.foVhcd+XI.bqh8DzTSrOx+PeoXBkMKgbTLtMJ1BNwnXQEj0as73cc
3XJ1nUUAiIFEyqdtdyi0nqTkEmtmqOUHXYkC1aE4jhtWPxDZqj7XeBSH9RJV
0KRDnru0w3P6E5QCtSaV7lp3JcUmeqvPTt6ngTnCQ0uXcHjlB8Gn0Eq+fUge
Ydw5NDUXWkYpU6PURLGK4HE5HwOYSFXU5el8kMdTg04fJHz3NubChh4ND1nl
+FoKOGlRnw7GASWZRjdwDbnJzcvWtdiJpUjKmVNUEtE8xgOlJMLwEr+fOGJr
z3cgiKjUGS5Yw1Y9d8EfHzOKlNkm+LWLhv3rHNwW85KHQXdNHBcBIMA2Pxbc
HkPvmkQprfmEIJcjb51ChaHcytzwQEm.JcLTU5Hnp5wOUyG8TkO1oDKfXoEK
VBjcrHwkVf3XXtlEFNYoGqeAgGxhAOvEBdfKBb8K.byK9aCK7axZgd6qadwd
KtPuhE48me8+OH0FMFB
-----------end_max5_patcher-----------
2 Likes