bach.slot type function compared to max function | noticeable difference of interpolation output

Discussions, advice, bug reports and much more about the "bach" environment.
Post Reply
sydy
Posts: 155
Joined: Tue Mar 21, 2017 1:34 pm

bach.slot type function compared to max function | noticeable difference of interpolation output

Post by sydy » Mon Jan 06, 2020 6:06 pm

Hy Daniele,

Little question concerning the calculation for the interpolation in a Bach.slot function.

I compared the interpolation output of the max function to the bach.slot type function.
When I interpolate a y-coordinate by giving the x-coordinate I get a noticeable difference between the output of the bach.slot type function and the max-function – see copy compressed.

Could you maybe explain why?
Sorry I'm dumb as Münchhausen in math, but this would be nice to understand – at least roughly.

The reason why I need to understand it better is because I'd like to replace some max-functions with bach.slot. But as I get this differences its a bit annoying because interpolation results will differ a lot.

Thanks in advance.
M

<pre><code>
----------begin_max5_patcher----------
1576.3oc6assbihCD8YmuBJp8wLtjD22m186HUJWxfbrlEKQAh33cp4ee0EL
FBBGaGmryXhmTvfDRsNmtUqFn0Otal6R9KjJWm+z4AmYy9wcyloKRUvrlqm4
tA+RZNtReato7MaHLg68l5DjWD5xoLAorfmiETNyojTUmKbVUx23rDmtddUN
usM4TFIkWyzMD0TXgrIx9U27E1uCrHcMk8zhRRpvLj8AyA263CiTmfA5q77l
CbdroMr5MTVNQnG6vlBoY5QLe42+FLw8vcxqE6uUfpved2cpC2+gwLxl6rpl
kpp35SNdAwZ9HN9hYm3Od1IkyKynLrfT4PYUzLxYPKCAcPjmFlAgWLnitdfl
Q1J6xAXVOinfWJv4N+kTDNszhQdhcEDCbbcuWc6rmbaG+1zzvv4AG.MDoNgP
mCn8rC58LcE9YR1B4cJk4BrPTRWVKLNNl0h8YtOSJqjJMYerjTppLF.AZhyv
bmK+sgTUgehLxTJGv7v3..x8Mmk3MJ8dLZ03cY+7mX3wYUjEVEYmUgWep.57
GP2S1aw4wCMPGBCTmht.d.d83gU4bYmbFyWVwK2f0HI7HPz3qLLQcz3z3rl+
ztLRAtDugHUIKHL7xb8vBXep0UzHPNQH.5ABcuH8KRpRCZMzu.8azGuYdNsR
jUuo3BQXXbGK33nyFgAe7HDL2w7GT+22.yQAWFZ8CR5tF3asbfE35c8fqZwh
Z5kAjlHXZTaPKyKU8tYI0mR447R2Sc8tqnBcP7s6GKFOK5gd6APmAu8UKOlm
Mad2XBlziidj72kTbd6nXqLjKIoRWRyohcut+G2IHLvDBkmw7IoavSJq0NfC
z.oCG5MvVgS64.ThISXQrSVOYWM40QHUz+UKDsYto3sq44jE0TkRYQFVfW.Z
+0vlF8ki6CpCpKnrU78E.2WglYkm2vypkwuqrubberscZsi77gfU6V6+P1IO
A5UVoT4oaxhWZ9mx5YgbQMrHzusPS6.m38AAQnvDOjebOYIQUwYIqNCSR2XH
5CqmJk5mdkrqhgK5WTFeClx9j.pQXuC3JHajQiiykpYcOv3LRe7HM6IrrApy
szLw5t8P+VslPeZs1LCWK38qKkWra6ZBqpPN6bPGiSSkKSXTE3LLKaaIUbXL
0dinWaopLkcraO9k05WVq++Zs5Y0ZU9DLpn6rarZsxOQa0X..FFmD9YXqlQV
gqyEtmt8UbRreDv+WNyC3EYd3a2YlB7iafLR02ntyNSSDvMhkQvXNNF0owWN
Ll.NLBG2gwQbV7kihaWGEQVsHzuiEqFDCqwl8vuuQbEaeFBMmbjUTsV6up7x
kYmjXkWpJFywwvZ9L8aDBAPHB7Y3232WScHvpNMW9ytNcXM2Vy8gPqDh5iwX
iNFBraqo7P6uqD02naRRG1eXb0GBdRRG1e3Sn+DkNr+DWpOaxjjNr+jFvvIJ
cXOLaUlyLIoC6QYqxdpIIcXO3ZUp1MEoCzf3Ry1I+ezzJ67g8ZMbha1sRz5n
AAmluqbTNYrGS2M+lgOFDcJtTPSqMYM5HzxQtkF9A6dqLKZP3pLtfrV1lw7p
Xq1FVY8MCqLHpULShb73e72QmIItY3D6gthlngthrG5JZhF5JxdnqnIZnqH6
gthlngthrG5JZhF5pm8WopGX5QG8dw6hpAYJ307M9Ctn2p+Y+MH+PZfGBFCh
Rh78eE80lXnCSNy1smvCNPmGuj8Dvq1rP81.DGxu0HUVtiRlGF.f9AI6+od.
d+4v3X+nn8YIpbQyjj49AdgPu8k4eHUk694S5j3pCxY21u2r8j2sIuyT8Pat
qpmVzoOur7z8M2uBn3yeGK3uOoqyxJ3TlnZwVpX8hz5xmICxG3lycx746M4z
dOMrd.q2bWuZSHpgsp79p8JdcY5d1sEHNG.dFoRn1MYMZlGZ2fBiZZcpRR+t
OeKAAM2y6SPlA6wki20PPdmBhPWCtC9IwcImhb5OX3kYlruG7gK4War1JZ36
RzAmineefT2Kn2PVdCrXLSywEEMa4AsXTBQ5G+6lMSP785KoLykZeVx0ielV
00IqKtT5MTHcEVWZ1yCuD56ZZpzwYIql1vmR3IEodMBUvKUEM6EA8RI28y69
O7KZv9.
-----------end_max5_patcher-----------
</code></pre>

danieleghisi
Site Admin
Posts: 1347
Joined: Fri Dec 03, 2010 1:25 pm

Re: bach.slot type function compared to max function | noticeable difference of interpolation output

Post by danieleghisi » Sun Jan 12, 2020 5:26 pm

Hi sydy,

I don't think that the formula used by Cycling74 was public was when we created bach 10 years ago.
Now there's the gen.curve~ example which should show the algorithm, but there is no official formula given out or posted in the help file.

Our formula is quite simple:
y = t^((1+s)/(1-s))
where t is a 0-1 normalized input and s is the slope.
This works for positive slopes; for negative slopes one just preserves the simmetry and goes with
y = 1-(1-t)^((1+|s|)/(1-|s|))

The Max formula seems to involve some sort of rescaling of exponentials (such as (e^(tK)-1)/(e^K-1) for appropriate K, which depends in some specific way on the slope s). Computationally they should be similar, because the hard part of the Max formula (rescaling and getting the K) seems to be done only once per curve. If you compute it with different slopes many times, though, ours should be way faster. (I've briefly tried to write down a formula from the gen algorithm but I most certainly have done some wrong calculation because, although it made sense, it didn't match the output curve. If anyone wants to run some tests, I'm interested.)

I'm not sure which one is "best", I guess there are good and bad things about both of them. Our formula has a derivative of 0 at the beginning of the curve, making them usually steeper than Cycling's. If Cycling chose to go with their one, it's more than likely that they have thought this through. I'd love to know why they went with it.

I wouldn't be against using Max's formula in the future instead of ours, although that would mean rethinking some parts of the code (it's not just changing a formula; as I said, Max formula makes sense if you don't change the slope too frequently, so we would need to modify some low level code), but I would like it to be documented prior to that, so that we stand on solid ground, and not just on extrapolations ;-)

d

<pre><code>
----------begin_max5_patcher----------
1757.3oc6cssbihCD8Y6uBVp8QOtjD22m186XpobICJwJKV3BDIw6Ty+9JIt
DaivgjfcxXTlIPrt0ceTq1M3iv+b9L60YOSJrs9KquaMa1OmOalpHYAype8L
6s3miSwEplYeWZFqbq8hpp1g4wanr6WkSh4UCSXTzRuEVNgvkfEVPXvxHeHz
2U7anWjqi+BKDZIv5G0CgXznrTBWM7v5BuKKeKVMf9uzrrRdS6P0kRSTJU15
G9FD7hRki2R3j7UDFdcJQ1DPccUiAe+NRk1ZauvxdMlcus0Ojs3WymKOrXfn
Ai7jP1MBlSdVoy1+w2rfKG.F4ovHj5E8CJHsP.TCDDZ2mYJl1j346wF2RJJv
2S5XjTl.h2YAs9S34LUTfxOv2Sdp53XXp98ZpuOq7U8q8E5tZNy+J6Wi953W
uFGuY4+R1WXUO4+2B4ZMjnAvJTyEd94e3PQk98zOvvqaRA9QRxJQuDZ0JLmm
SWWxqh5Mq09mY+HIuflwDhdMIWVYH.B.pJUn2aECUfUQZF2tcxmwKn+mRQgB
HntX8x8f9vDy5pQ7exo3zyA1fHEJGoNg..0qjmZwh0OEmsUzU5ZZJku+Tw0i
SKieGN9H+simfbdYxnx8gcnqSbVZVdkFpzniNzpYGL4Fb1I2tSvOsIKkrpjJ
A6UIXNdEn8m5NVMOXY+c4A4Knr6xZJ.1TgBoEmejjlEKfGKBS9m6TE9i19qT
Hw46JYwbwT2w0JVeHNANprbg9p5xpmq+mz6XkJpruaagU8CLv1AAAH+HGja3
QxpnQgGprNPMI6xIEDFG20rtOWLCcTI6KX3cGWTR1VLkckLzJg8ALWNY6trb
b51rD0HvxXmLSK7dIrjNSmOQS3aTpPYtFnZCgd+Fk6FtjmcbcwY61+zFBqXm
X8WmAFGGKd21poBbBlk7TNk+hN01PzodrRWZK89iFuUi25mq2piVuUQJDozB
tdmUsUdE8UCA.QdcQ9WCe0Dxc3xTt8v8uBiBcC.te4bOfuK2CW8AyjFe+NH8
T8MZ3r2nKB3Fwyvqu.G8FzvDvXBDvvu+.FmIXgIPwsafh.sdDp6agVGht0ny
e322LtB0uBglRNy6nps1up3x6yOIRKtTrqu.Gcq4ZF2vGBfPD3ZD232WWcHP
6bZp3G8yocq41ZsODpEPfP8vQWC61ZIOT+8JQda0mjvg9KFG5LQgC8W7Izch
BG5uhKn2DENzekFxO7wIIbnOMaXvDENzmks7SgeRBG5StFFMMgCTm7RS1K9K
Zbgd7PesUXhcxsR15nNImltOuWLouKS2N8lAO5jcJNmSiKSUZSOvxYZRM9fs
uUVE0IcUVFmrQzm9hpnq1ZTYyMCpzIqULSX439+ve6ckD+lASzm5JZhl5JRe
pqnIZpqH8othlnothzm5JZhl5JRepqnIZpqN5ukpNfoGbbzMdmWzgwfi4c7G
7ttq9u4OCxwuCNtNdQANgNhfrNHXjqKJLBcBNdF1ZFmUxpovJ7yktxMj7FFM
tzU1+qOck+Xz72KBUQy+vQkl+NiLK+u9bx1Kv6lfS1PCmrMrb0vxUCmrMdqF
NYanXogS1FNYa3jsgS1l.FFNYaBTX3jsgS1FNYa3jsgS1FNYa3jsgS1FNYa3
jsgS1FNYa3jsgS1FNYa3jsgS1FNYa3jsgS1FNYa3jsgS1FNYa3jsgS1FNYe0
3jsnmvHuHjq6UjS1u5CTaGf5ICd8CAcHJZXbs9c7HzF49I7Hz90efhqHFbyS
F6Kn4KuZ+udluiaTk8qN4AtblevuOew.zrl.Aqvlw5oku2k3KFfOlMBa7+GK
az8RXiCMJVf2xfPeWHB4DABbC.AiuOsnqzsBkQ501tSEDZaSgv1BODVb9LV7
2Rq4W0K3L6KBsfkJUkd25MtcA.ugX+0rN9HPrG2nE8siGvII6xnLdwpmn7Mq
hKyejzYGVTeF1dP7+uAV56cov4Hv0Alc+xCycPY0PZmRYm9MfiBFkkeLzWjU
lG2nkMgUsdAHSHEbJqJc3WZjL4CYizN8NTIMDAch1jkmTs0kfWdIGnWxfOjj
gtCPzWDaV8Au+pFs6mlnctDv8fr4QvUVNFvWQN9ifbBFfbBGA43ODbCMF.2P
jTvXHngrv6DsYjbBCGhjGiYM3fjDXLjzPVX0SrDzGRxCZZLpiIV81h3c6p2D
rJoHkgH2iGp1zngKlWkOZ0KUuUtcN4QZS68TkfyEYivEohTlWsYYe1uJMAU5
E4rRZc.Sg0IDYAee5ouUb69r8AkUSxAf5chpLQChHM.YmTsnt3skobZim3gv
V6PoXbI+kApge1GglxaDE63sIq2hCN.W1hZuE0oBbUYvI0mhc06gWUhdy+07
+GXDZ3OE
-----------end_max5_patcher-----------
</code></pre>

sydy
Posts: 155
Joined: Tue Mar 21, 2017 1:34 pm

Re: bach.slot type function compared to max function | noticeable difference of interpolation output

Post by sydy » Mon Jan 13, 2020 8:33 am

Hy Daniele,

Thanks for your reply and insight. Indeed it's seems like max uses kind of mystery numbers.
It tried to reproduce the max formula by rescaling the exponentials (see copy compressed). But couldn't get the same results as the output of the max function gui.

I'll write to cycling and try to get the information.

<pre><code>
----------begin_max5_patcher----------
3145.3oc6c0sbhiiE95jmBWdxEc5IgQG8mklo1p18h8IXurmonb.mFOKXSYL
cB6Ty69JIaHArbh.DDH3.EDjj0Q5Se5ni94X+WWeU3C4OmLKL3WC9VvUW8WW
e0UlfzAbU8uuJbR7yCFGOyjrvGGmmMeR3cUQ8Xdwj3RcD75PxmWNNorbwzjp
bML7tfvGhy9dXveTmjowkCFkl889EICJqRkjC8.NAIEHIWPiXD5cAbtrG5t.
ZTuHNMBoeiETNWbW.F2CsJ+TkmzLkPMEPnNvzglha9C+48bHbkjKhmjTlTzO
IK9gwlhH5kbopraxFrNv+95q0ebmiPSVxSJwsTVkIOapbg2G1FzjlUtCnBko
QE.gze0NPfs.D3PqUVXGprGFdfpRd.4AjyTdfcTYO3AzScd.kc.4AL4YJOvN
prG7.zoNOfPIGPdf3LkGXGU1cd.Kxe7fVpreUWvP8ZsJqnOwuWk1xfgLFUWa
iHaccFeVTmIQ8vBTjpiOUQyY36BHxndLEWmPw.PnRpHRACv1W+EmC0eonGhx
nLDkJjpW593DUd5CDfbxq8SUmszOGD8DDISSGvDjfv7fpPx4poQVgHl.qYCD
91yIXm7bB7whSPOWm1jUHZ24DT94oURGBNAC+YxjocmSvHm7bBKlNDAMG3D.
Xe4DziCm3ngSLLsQOGO.SrOYvDlGcHfI9GpFl82lUgZdX9bdJzy.6zEp4lsA
6fh39YdJvYP8Whv1lmhzKH.DcpOViTdrr+.XmqKkuMHhIgcz9C3j2lTI4nwI
Na2dGhe4Dmo6tygfS7wtB+kAOpe8NCnbWi+4svNbTOMhDgDBMpvjKsl3cWvW
KvSKq8G4zFBXDnmHB3b0aBRYREdev.5AGC77F9s6ZF73jUGjOYRhpzuYc86I
kAKBTJJBdNbqHwlsxAXUsensn8qEscH+09Unx1j.UaURwzv2Rw2a1VForMTp
TtIwToHJRhkJy.wQ7lycZW14lVVCaOpL6g3Ai5MMunLdbv+TIhfxv8ZP.63A
U1DOvxstSMqkYKrD5lE+ijg8UoTUb5GWVVj9fpMdVMpTCKWE9ijhYo4Yp73g
jBcjBjp0wDoATOoHXfT1C1nWk04luC7KpH7DegIrL0Sh.cHVmKZz47B3XAmN
LqyE8icJZJqHFZ.i1Pq2EovLCB.QrHgPDIIR8pYzr+TjBUXBAlh3XBMhB3sE
o733xSRlMK96IMgizYkCmO4MTur0PAg0iyhhT.QDSwOjf1TT91fE1Tzb3WlK
eOPFGT1dxo.Gi.ksYTID0ltGkcOas4onyoQx7M1BHQCKEsu8E6.zRjmSP69q
PiQ0mhBAP.JWQTAAWOEanoEnL0LwwDFAAxHP0Omw1VjUb30ng5ET8FLuuGoz
FsaZ2.p5ZkXFlwUefUZ3zCJB0VhBRFV.RkNspQE25IcEczwhcGJTpw5wHBBV
8VFgwJkZZ6CDdBJ3m5CzYuKBk1bjNNda5iXCLnGEdArjWX5fDbCri8QroH11
AvRYiv1yKfiyf9I+HdrGq9DdObDNB3QbDWQEh3JZgX6GFps0qsNzA4CMkwva
V.A+ifadF9U32B9oeJ3+TFWTNMWMuweO6lE353vl392YCqiQE2y8WdgjeyDv
v4E0APMoV863R0XXlHGTGEyD0Ji2MKpyf4E+HtbdQhIkOnR4zzuVFm8EES3q
p+8lA29Klb2bswSmVj+b5jWx6x57lah+46UMHySL47SiRGLJ3ojfpUPJdVfB
JlNurm45VnttundcexyS+xMO70unqS+rVR2d6WCz.yOGTG0Mk2phdAbuBRt8
UAqtfa+pFltM3WT4zqCN39.K4qJgA296Ygam0.IJq.F9plO+aePac1qV+f.v
q8wkUiBp5jGwYTU2bg9bWu86dK+ryrdqKmhxRAer7TXxIokmFHb1372F4Zhd
OlmUlozRXxj+UQ5KZYe3oA4STfa5CoiSKWrpLtcjPPuf+a.63pUwxrXVqUPd
LdvZqvfpNTQaV0S1Nr8VMcZR1f7w4EUkQijW6iUkfW2HyBeUwZV5+yTr.8QM
y5FNTG5SixGmzedptcn+v3x39nU+U2JT0DED9M8G5ejl8X9x.fkQXZQTe+ij
w4CTfePRl9emZB7OVc8lVW89tLOafVO85w9eSVn9BsVXEpFeykz+45WZhSey
F2voqBr55PNlN.Eg4RBlJVSVyVVfcUVupXlLsHYVRVYbyp02KTMTqExhYYwS
WOng4ShSyNRUzJgsGU2xjIJsewimnMWP27mmsQKshDmjMrQy4SoCKGYJB0VA
r9UMJI86iLzs34k4qG2f7oKdZTR1ropd2Mx33ACTCUU0TDOLNa3SEokuTlVk
P7lLVMkNvNeris1wV+XYqDqrUkwW5YdZmrZMxiHWUfP.WH4GCt5vjGimOtLz
c9kPZFn+jid.6D8fZWYltx2NAokn+jpNaKoHnOILCVaJNZUoQmBiK.EF71UX
7FJK5TT74UQQjUFgYgNrRHZFiM9v4qEWB68PRGm7FinZM1SUbY23IRq3xros
o3nYLGS8Fb.A.FcLzab9R0Aj01zwp+r2l1LlOW88AvJfnOq+1filUrOWc4A6
qUh9H+eQBG1mLNPtPgC6S9DnWnvg8Ybo8crKR3v9LMztP1EIbX2LasWVdQBG
1sxFDWnvgciqA4kIbfaXW5vEp+KcvL63g8XqvjvgeVrVG2v3zwKJZESZaZ5g
i+zfGMrNMtnLcv7wlRSKvxajjZ7IN7yRunFlqlkWlLRcMsoUwVr0nxnOMnRC
qViyT0731272V6IU9oASra5J9B0zUrcSWwWnlthsa5J9B0zUrcSWwWnlthsa
5J9B0zUh8kTUeW+7RCNVag2Km03DC5yU7GsSqp+VuGj9+BHTBSFQDDsW7gAI
khER7F33py6YySq4f74YKOKqA+wt32uqNZa0QVe9+g28dng8Sma8ACSmC81x
CdqM2c05Au8cu27rC2WYo0gFOrxUFl0+ozxQ80tfPRiyga82vpOTuq73kCQS
f9.4MqLYZeSlf5cfaZ3.twM7DJH5gAhPxQDNPEnHXGaavnOf1lcuo4X4U7Vu
0br2dEObjtIYdvbRDabQspCe3kHfGuSbeJ3KCVwJKtPxouuLD04JCcGN7tCG
dmqLzwV6bkgNWYnyUF5bkgNWYnyUF5TXz4JCcJJ5bkgNWYnyUF5bkgNWYnyU
F5bkgNWYnyUF5bkgNWYnyUF5bkgNWYnyUF5bkgNWYnyUF5bkgNWYnyUF5bkg
NWYnyUF5bkgNWYnyUFNxtxf5JAo9gsG8X5JCGjCqskmdjDUPHIGjjHIRUqiT
gI19mEn7O1Cm8qebcrWOsNr+Hox1yg7c4w0A6T+o0g8pOk4kGWGfn6w0Q2iq
i+9ZCgIbbZVUl9sULdCgTG9579Y4yKFrj9V+roN3EZ2vjYkoYUii9RZ330RT
dwvpxj8mtstJYF1EQiNDh1riENUqaaDGmkD3hjndPRRWEjEzD1KIuQt1hnIU
IZ+jjSTFvCRhPbkbtusaavvsKIlzC0IVjKRR3AIQcg0aJN6K54jRjMp3dh1C
tPQXLePFcouMi5iFNgKRh6i5jKpfI9PoAk6fjn9PoAyIFA1GRxEUtXezUF6B
iXCH1SiR6jnMXN3691Djq05OFQa58.d2hLW5orr7seRxkd+3HeveibkD48AH
bRzanGzWccbQ+.v+vD8AAuoNQp7wvjfSvqOnuPjqMjdWafahFeHzAhAG4PeL
RFNHyGl5Bdi8xjabPP9XBGfKFmC9nFAtLxE3CawcQPhCg1MwZz8V5RrN6cT5
vgIY9Qz32iX5iIE3hAeaLsKeUGcZRBGjt8tzq2G1bQcf.w7jbdO1B3EiHcgs
3i4.AtXRtWLVk4PaD1GSJF6BeG6kEuvowx8wjhIGstRlL4833DtOV+XhKRxG
qjFwEkuDeX8LwEyBHdw.DmV7Bunb0oELvK5Hbw5MpOT6wbZUb8A5E4xPSdYE
5boYBn9REw61L4kwaoagUS6mjbh50D8p1jx3oSq2USiXzBIbR7eVcK.Sbm4m
oYU+zrOngEI+HcY5qBItXvnzxjA5cS1r81OyqtU1Yt4HVjMOs1RPU0SIxYkK
Fu4Fit51p1eZp1IEHT84aPedKRxJMWjIE0AOY93xzkF58ZbaUVY7b1xWxnk9
Y+Zvo9.Eks9M8L1cu5Cn2JTaaJNUfq4vLnKOylVe2ZyblGt9uu9+C9OjzDA
-----------end_max5_patcher-----------
</code></pre>

sydy
Posts: 155
Joined: Tue Mar 21, 2017 1:34 pm

Re: bach.slot type function compared to max function | noticeable difference of interpolation output

Post by sydy » Thu Jan 16, 2020 11:56 am

Hy Daniele,

Followup.
I found the formula for the max-function-based-curves in the ejies ej.function.js – you’ll find the code there at line 1056 to 1089 (not working as an external in max8 but the formula works).
You’ll see in the copy compressed that the output of my bell.script matches exactly the interpolation through the max-GUI-function in mode curve.

As I said math isn’t my domain. And it seems like cycling has some strange numbers in there formula. Also it seems as the curve~ DSP-object can’t calculate curves ±0.995. That’s why the output is actually clipped by the c-routine.
See line 228 of ej.function.js // clip to ±0.995 due to curve~ bug

Knowing all this now, I tend rather to write my curve-object in gen~ applying the formula you use in the slot-GUI (type function) and get totally rid of the max-GUI. I find the Bach-GUI better, the formula more simple and less demanding in coding…

The only still annoying problem is the pattrstorage of the function-GUI. There are work arounds yes…

Hope this is useful in some ways to you.
M

<pre><code>
----------begin_max5_patcher----------
2647.3oc6a0kjaiaD9YMmBTZ7CZ1LRlfj5u0NNwINUxVU10Nd89zpTpfHgjn
ME.CI3HocWmJ2gbAxUHWg8njSRZ.PRQpQThRhR1O301Ryf+5t+5ePiFX+4aZ
zbBeEMpI5qQ+HpQie9lFMTMIanQxu2n4BxJGeRjZXMYzk7Iuu485tDzUBUyS
HNy6DvCEDezumGKPhzgvhW3w7oB0zwaZDFTZqlIs54pVKX8aaNHc95wIVGP0
rYyl2KIGaVSzeOYHADgybO1rwgTGgdTV8Fzw3djsMV9E1rm7KSyNFYSJh7.0
cLPKXNiIBQn2jXgFKZjI6MZ9.MLxiy.FdBMT14.CrggpyOdyMoe9watuh3mC
ewBJS7H.7eDSCCWiV2Z0ciXKmSYHGzKPFcRGnuGi5viYh7.VPHMBVLh.3vw6
bDU.8M1A52u4dfVroDLs5K+rus5msj.6EFMd9gPiSTV6sGYEist3x5yWY7Bz
yWggOVK+o0xexIN7Apr41IPwTdHZ8K1o7acPqAqyCgr2CBYOTgJXakGVBdY2
+ZfQsOEP5Dg.qlGLVC115RBAqLPqvn0Fn0XjRvadVRDd3djHS6gJQoadkpow
EThZWGhTE7juvhjZaP5CvlfNbWJ5+8u92HWd7DeJxw2y4CHNCIlSQ5ccPBNx
my+.xiE4kL5owh3PJJj5SIQvrHLWOWhfhV546iH997kxowCn5URQFWOob5uF
VHDQvWzoSG0BCHfzkXIIzE8JByCVTDrfnWxbCoDz4g16y9omg1iPg0CMruHX
8ss.XhxlAd4TP.mFxWnfD566LMl4HiB148QJTUgxpAHiIfvFc6IQQrwfgnQr
VxY89nXOX8.zmEgffI7vHIb9sjUCPdcncPdQR2tPfS.flwEnk7PEBCoM.Kh2
TzZdLhDD3SVq3iQMAreQrOYTS4JA8Fh3KYZUlxJHVD.y0gCqZT.m4FIYJYOo
7O5O+CeCrA3s2AD.9pEZBn.A0ob9DgZnDGQLXtkrV7oalqjg88BBntp3hJGr
HXOzgC6hjVH3Nne4WPs2zPankITGRLX3AKDgAh1LvvSLWQoW88uQuH+SfaTH
JvBJ7zzbfbBaA7iDO8oJNPJU+5+USG2Xp7WSVGX8Gwt6Vov8jWyneqG6cKAC
6eKvkFO9+vnmgt8VDl11zPoAVSEn.dTjmzACf3LuOX4DKBdEeAwStZfb8Ljb
p51eKj7HMWy+5+AZe0XCnomrB+0IjYU6HAITn5BmzkYZWTlKzw5zoXoaec1T
VmNC6zdfYDv8XxNUBeR+cUcKagHc7kT6uo2KS2euTJBRE.cRE4x4dNyQKonY
TsI.rpzv.tuZi+Qp+.ViIjQl0zHlPlBUKnGwSlsBV5VJgpMJkZ2gdJJGjono
O3aMWYRspMYkWzuSM84AvzC3Ka0JuFqcB4tC8U.rZdOPTar7W.sNVsZQ7ETT
jHTg85roiPeiL.GhtB7YTgtjA35fTzYpjNRp8TTKPQ0V9y28Lk1Jxg3Kc7jd
vczxjbvsf0okbdeEBDx6fof6Hkqz1SZQwMfCmdQTSesBJlolYl8gxtPj3WA3
Yd3bj.7Jo9feRQLMQ0Iw0wFaioaCe5E72fxgi6D9Rl4tAjiW7UFHhskVfM.q
4QLjRzTQa.4+6+g27lW+12g9Cu7O9WPu96Pu4ku6s+oW+c6NAqgm01IcO71I
5rvGzScjttlCq48SztQYwOOucGs121iX8YS6qSEwn+EY6wDwIKl3YJOCNn7z
0nVjmo9bfaNupGXkKSvPxBJfDioLBrMQdwqBUVPtCNQIk8N7QfLF1oqDF1Tp
gSP7Ko9JAxjDogBH0s+pWjvMdQvQ.Q3c.QcKu.K6qvJlXs702TWXEqGUXE0j
z0JIegTl54SSJlRNVpQSHiobM2H2TjHy645htbeVSdLcS3rlBoO3s8xBqaHv
5BfugsU0G2nW54XkKCjDVHK1SMGcifNJgkTZCFX2DEPbzSVpzR6dCXLPq3MU
mVpmsBYrGXrAL.s8LetyGnt4L7.HGRe2ik+75E51kNkD6KFOkyDQd+jhCTEc
YG8OMgC2YmRYPw9uLzKKBPilyB8b4LISTPSHaNkbfScW84kxKLpQvHA6Xx5i
zTRmPZQh3nIjPohJwKzLsSAm6Wrqr44SmJR5Nviw1BEE7fx6LzCRdo7tmvgN
Wru0V0Sz3Xlt2wfMgXrrngEGGjwRhKawkeEbdKHzAU3oUAlFYcpiDMOxIj66
WPd087vN5wErwcnK8bEyUDJuw.LbufTinlYZYWuYzHQw1DjYQEaIRrVC54ZJ
dRhO7XAcAjalXqATnnw4cXyGbqP6aEjC7rhHynYti4iz4WL71iCwYVriGGlq
zZIefvckExSGQGag2TDvMg22TH3Fog4OEDoPX+h.h.MA4WJZfKEMLKAMr2KZ
n1+69piJFpu5N7ZiJPvSHJiKZ0ZmS.aJwRY34YnLTCIC6IyCXf00FR9I+NvF
dgHqSv0oDik96GPtu5fRut6J4nZBTTRXoRswQGvXXcDvPmNfU1mElUZV64iq
p3BlKcUtjRpE3QKAmfahwtwGKyl6G.5oCR1efTmWmHvlTQjm8rj8fTLjr+cC
MQ73PmTcYhWOpHuA6oJ7XYIl8iaDaTUMbOVlPtI0mAbQUwB4tHWNtPt33JvE
8uzLQkfhAWPtneEYhgkxCIMld5lpdu2GUZkvYblP7SRZL6PG6HqyS+dyK4bw
BzTH8HGeJI7HNOr0NtgOyROO7TeNQjUa.3aM416ojMGjqj.5JVU2kDn9Dcbc
J5oWzVsH50QwfLMtlECJ40QnOlvYVKnhGSZil2nCR+Wr5uFcL6tSHxrpECBa
ehECJ4dhGV3RUu.hKNUbkxJ5I3yTbsNMwMsPeC0kFQqo+jZaiMul11XqDq5j
Kz8pXc297Mu6cZp6zHY0i0ccntsupQx5M3hWV6MuWhi9QCtqZZehgwRjTqAc
yURiB0zVdm805iNHrdd1AgWzGdPn9oG.eo9wOed9Ag04CPHT9DDxjR4+9xaQ
3KuEgu7VD9L4sHz73N2JEzltEt5j59EbWkzTaWK4oZYcV6mUS4od0NEhkwYc
kz1I2Xoo8m9zx69IHs7j2SxkJs7xKzP0O20Ipf62WWAY0gM6187TuG+y6w9w
RxfSR+lUMkz+UTYuHIIyTtvUErV0R508tG0uU56tYy8xksxDW8F9QikoSMV+
VqUSVMX8GIeiy9P0BDF6S1q34p5DoOd2EstM966k6T8vj3yxKxxZOdQp4W7t
UzB710sNQrOv0XTRwpwlEFzBuDqyjcu.FUcfSyz+upH82JQYTUdyxtB7V9p4
exTRFn6fTpNHjzV3pPnJoV6VSDx7.DRlnf79gNKBUEiAYBXmuNpBDpHyvCc0
YpZbdDtJT1xtNr2uZTRdWEatZvRnTu5hPWCOKEgLuFDxrBPGtNTRVcuRXWup
X1UGQkv1WKJUEOosrMyBWfOO6iproko4kfzVUQQhqifwURH2hcpovwJn6p4n
e7te5b+154XKowVOC6sdB1O94WW9Sud6mcs5QIT1ys9lOdy+GopecIC
-----------end_max5_patcher-----------
</code></pre>

Post Reply