Making sense of fluid.ampslice~

That would indeed be useful, and warrant splitting things up (though it seems to me like it would just end up making more objects (fluid.curves~ and fluid.numiterpeakpicker~(!)) rather than breaking existing ones.

I wonder what kind of impact the mel band transform would make in this context (percussive, fast transient attacks).

I’m still “chasing the dragon” of having super tight/fast onset detection, so wondering if that may be bit of the secrete sauce.

(also, I thought this object didn’t go into the frequency domain? or am I misunderstanding something)

Indeed, its not that the simple idea of decoupling would necessarily break things, but that a general reconfiguration of parameters etc could one day happen. IAC, for this particular case, it would always be pretty simple to provide backwards looking wrappers around the new objects that behaved as before.

Could be? The mel banding condenses the data, and this may have the effect of making the onset detection curve for drums cleaner in some respect. We can infer a bit from their scheme: they will be throwing away phase (unless there’s a complex-valued mel bands thing I haven’t encountered before), and they will possibly be using some kind of frame-to-frame difference to get their onset curve.

Using fluid.melbands , [vexpr] and multislider you could check visually.

fluid.ampslice doesn’t, but the scheme described in the patent you cite does…

@rodrigo.constanzo I do not have your latest behaviour comparison patch including test signals (clicks) and rolls and such. Can you please post it here so I can test my fixes?

Here is the link with patch and all the real audio files/bits:
http://rodrigoconstanzo.com/bucket/onsetdetection.zip

Here is just the patch (synthetic signals):


----------begin_max5_patcher----------
12030.3oc68s2iaqbrm+847ofPWf.6jw51u6lahSbtYWjr.I6l8l.rXw8bgA
GIpY30RhJTT1GmfLe129AoF9lMeHJJez.aMZ3yp90UWc0U2UU+iu+6V7X3O5
ebgy+Mm+Cmu669Ge+28c5CoNv2k72e2hcd+3psdG0W1hc9GO58j+hGLmK1+G
i0GGBAKQtDtfldpsA68WEdZu97njCFdJdqeb7WO3adoKV37elbpf05GT3i+W
uCRReH6OsKXu7NNl8gbvKd0yA6e5iQ9qhMOGH.HVBdvghP5eATehoKAme7xm
j4kqeTP0A+me+2q93AKY889eQRbk373fc9QKpi+1rMzKdwC0wnftynXWEuQD
mYwGbTLcMLJpGL5gsdecavw3WpkqNF7zdusJ1ppuo9+5fUwAg68h9ZkLtak7
MrI9V.0rpfa9kt4V1rmgyWsM3vy9AO8r9dzmqRLglbz0dwdIvPBNXdFm6Pj4
DxS483wvsmh8kT2yZF4nj87chB2t83xu384DVRcoaB15u2amuEW1mB1afEuS
qCBUGIyErML7f5jfWOzpv8w96i+3wXuX+TpOKc9cKNt8TjRpzvFYPHSiYTvS
AxVpX+cGBS.WTwKRIBjb64N9idGkMrm1KabLmlPJbiAxltiOGrIscqvC9ucx
aaPbxy173VT9ArJLR0zKEfphH1Hgxvu7z1vGywEUylxFhmhed2wpAiiG78WW
MkpPviwQ9RxoZhHZm2931nT8EU8KXW3Z+5wg7z+Yp+AkBmUeRxN+moWqt2s4
KIGzbj4WuddW60ybMcyc0bNgnUAvo01mmStzc4O3u14zgjdydAapsSeKWXic
6O5uMmL0RnfHf.HhQEHDW7f7PHLxEBwtHBfBX3LxNm0Z.uq03tViaesFz9p0
.NWzZbHRZ0b65LZ9xrxPg6c4u2k+aft7nd1kGIlI832r0aWi80q6Bt2K+du7
YQu7S672ep1d3A6iS6JWYGXw4I3evKRJyG6G8Qov+ia8yLcVq6cabmCQPzCq
iEk74QfrcOoIcwuSwBR3SRZ+1sOIwMYys5OdP8wuK7PfrEV9s+Z3gvsgO80e
y4ysY6of0K81c331fU9urnFOpfGOWG8KbfMhvUhrrt5xHC5k3YLj6RZiNLZD
8LlYZLgQu3fafQSFXnRdEWIuRZkWY5egnrV7NVeX157.51Pu0O5IUD1IWcJP
cs4DKz97iAnpVRpnMVL4nO9zJo7dTplCL.5xfOT42xnYJ81Pc89dJxacfuQW
2qjfb7rs5m2GSwkEFpphqP+Ir6zagmvYJG8PlOZ7VRuCWACQX.hKAPfDh5VA
.tbzQtP.b4Xg9oAPbBl.EBAGQ4r5e1RYCi5OD+UOSl6BNEGlE2p9pNDI0bEk
NDCXIcDck8yAG0RbM3P6ZU4S5rOcSkjIDkjLi2lqrSN5QuOmRL+K+uTjSNx1
YwuT8w+x+G0m96WaNhYjvwAkj1At5SuzK8YfN61aj1a+3Du86dAzmUCWdvYk
YfzLChVCGq05Uo+9b6K+hYF26SsT6VZyeAS1U1O+Y+niIcVRsadg2gCYNbNC
lkfy+kQEf3gyGJXu4PmM7dQj+mCRu+ydmegWjjghkbyoHi1sejQV75iQZgWz
9SAmaozMSmmcgDsUSOPJJuxbyp1szSmYHNWCzXLFBAzHkKOCFozWrMb0mLlx
lRcKBO3KMTW4jAo9Eu3BD+h09a7NsM9iajyn3XveWSBPzxJO+lDRrxSddNN+
1n.0L9RtjmhBVGtWQD4ZJTGN80Ia+0M3PZVlQeE68NTwMKExj3RMmTMknSGe
zKR0RkX4IJ8jwggayepy22V+MwIm9Pv98EPw3vC0exH0DLq+zOFJO4tld15y
b7im1aN6GkBEx41knv60qSNOfjts4e7+n29fcxIBlNcOD37IMVe+7wUJ+Kki
eMm4yUbl0Rg7U9eIXsYFGfrBCxKO3PpPzhysxqCdRNMo7GK16oi4Oxw3uZ.8
LG5ziIch+nZRbaSlN6qWPtkpN+zueUAWgo9lSQ2imjn+9EYmTUiZxJpMCKxd
uMLulZ03Uq2KfXsXOwXhNI8ybTREZ5KLcuG5IvjaDfFMpsOnFYQOQEpwMNIn
RYCcuznxocO5G8Rib9qN0xrN+0ABb1hbtAnRMr5dAAOkumV50WsR05l2P8qh
NwXHA.rjgoRCbwHADQMNKqB3M0oDnBjSwA.pYiGLGaJnyilBASKPig+zskfL
SZIfFELD9RJxEgoBrqff4+Tpsf4NOZKbcgZuZHmoyMUawpvc6TyZupwPeGFr
nFTGYIp2A.F11H.PgBgwR6Kxq2wr1Ikb8edLCLUXFoVLCe8vLJcViYzZwLx0
CyD7YMlwpEynWMLif.yZLiWKlwtFXldbABEdswriqBO3+RcPiXv1riQE3PHF
XVPrh7XjbBYIV.7NsulcdGdlH6T6Xg4U3OIxNBByLTH61bnPJ7pAYT9s4HgT
xUCxDt2lCDR4WKHifP2niCd0zkQn348vfvg5uDL41XTPyryabx4pok2nuSQn
KkGmoDZ01TX1.Es3lUzbCmHWJbhvbqVp6lDmvWL4ITxhVHPK4TNFQPPA+lUb
BeofIHIYapRtxvTSiqsOL3nuylsggQ0nEm6dElmGU6YPNPZ4IGAnB4QHLM5w
XyHqB9b31S67cVGrYiej7hJvyYQwqfgUXc2zp.QHXVYaUsySjN89L0kmrqBw
kbJ8sxLEoWMPykLyAs5mqH6ZAZLDalCZ0OaQwUCzntybPq14KRcuZflKXdCZ
0pRa5WFHtKs1gAHyHHq1gNgfq.lQpcTf4DlgpEyfWALCq2OzUMHvbByf0hY3
qFlU0X.yILqVHa5MPS..ZHqhQ.ftyIeFB4Ccm8vgkYQK7ZnIpylKnfXn6old
hBWCemV+FR8fS3lMG8ia1CO04YG2ZwPPKtefq6RvD3kbAix.x4NSc0XHwpMl
ZwG+qwpPdfn1XVnt3VnvsWU7KTSLLTebLzdrLTW7LjKlFrHtFZJ1FHIHawdf
UGdCVDhC1DlCsFpCVFtCMDxC1E1CsD5CsF9CsFBDsDFDsGJDsFNDVDRD1DVD
cIzHZH7HZMDIZNLIZNTIZNbIZLjIpKrIpNzIpI7IrJDJpNLJJp.onR5RmuUy
cxqw9+w9iRMHGche1K1QIqd74v3Wbh89j9f9NpFRmidRB1WpbWenOqiaXm3P
GuOGFr1Q1XI0G6Db73I+iKK9pxkoAwENYEYUhVMWp1U4.lrFj5dqBSh3iWnS
aCCMla3w7CQNzVgRCYVXXyHeo9g0kG7zhAPaz6+8BGg.CBJGzjCILHQvDPFA
vPO3Hpba91Trdb8P024.aEJyFG+UglBPinIxZzjyWJnbLPEMx.ABfgUEs+yW
vzasYzJmiAO84isKh9fEXKbnXKl9ZGdA2RISzD.llW2h54c7X0IkwWJm5fqr
eJGInPppSJNIJhZW0WgylNXQwgkzD+909+XaBi4sORo4ukAyzbl55ZFbOFdJ
ZUprUpriCrD6IGEONXu2qY3kychU45kd0v2aJL4kZEEpTZO4TX5K0JJD2JAl
4jYmigNg.r9iFig+nWbbTvimhMxEUMAqdYHlI8BkXd0YS9qwVsuuLCbYmU76
rJJfpaVwzKfegawmDHWsmYjCUsD6hQB.PdD2jUhFRl5P8rdj831f09u3PUYS
P7P.YxEX09wVAxXAYIUYlE2E55lriS3tyNLFg.T8GCBlESNLiMFFTILaRB0y
Db1KNb8iCRSAg0WuMmHKVZmOQXyG7QdcA6Ns6EmBqTamQI7.UKVd6FJDyGX5
fyyAGTW2PfH3.gHnYdhT7cmuNVNe0kXF2kYPVSxSSEyi2895cuud26q2ldeU
pPK1OxesiNex5H0J1n2SQ06PgA60OWiImtfkXNvkCY7DC9YnTmrLCbjZa.pA
GC12WXjOXmPm3VFc39.ugPNiUCNqNEGtYSegO5fcqkYlOI3G+FB+HwO6DFIG
02QkIq7i9RXj7HOK0vWvZrNAnCdQQvIElGndG3.QhYDj1hKmicdzYSqdZ1j+
qpJCpTxmqjAKcZlOj.rjJDXAihoLBgp7ke0yX+J49YKWtoMQ9+sS96W80gsh
S3guxclzjHTJWR.t.x4cAiPMGc2amkbxLdtzZF47qb9fQc.w4CRatkVgdz+r
5.mODmjfqypsn0lgJxK+stkrFhfNTvVhPtLN8U++gY3am1iUdGW4sN2t1x5I
D23l.rWKWkYpaHUdhkBvHLISXxVsmntRnplqFCLC2LlArFyNuhVVstVvFVWq
5rPzp02ZZA3lgVwPg1jN4iH11nMjmA3YwBvR.CUGYhjoKboH+DlFkkes8YFN
uVPVk3n8KlHoxKdzRu6S5xnpzwYMmCoVv4peXPAEK4NrlyUGA6BDDf7fFrf.
AXLFPQHNmxuJLNoCqAuxHwucZxIcoIm2NmCdHyGWA9AMx7yMSKYMLSCcdgeq
v4cQsEAbe6ez6Uj6uuy6fy6XfkNl+AW1uvi.Wej1PaKRazaAQAdIUNmZAQNj
ANIDS.n4yRW9jWrZiFjaaaZQ4qq1DERuiIGDUiJbLdIiIGgE8pwcT2oNkoTO
d4u9I+WZO2u2VBUgi6cZ+v3s6Ji6Fz7AmNus1aDqZIcXi5eXtUmrDDxmOc9V
8rJnxFz9OgCGpfjDjbkiT5xcIo6QGJc9fQiTGNgn26SmDESUnIeV0gy64AIH
w3CqyFUUKBKlfxwynsxTvd4k9R2Fl67ZbzZ5hmzacUTgTIk7GtqzPU01.CYJ
riHNzkffXAia5UJrYigQlFzbs+Vuu9hZKfp9+Pj6P8deOAwIa3IxRHEP4Xtb
d5Fs7hYzd4LckeVeJxXheuLDMe5XnK5uTaFSZ054cmQvztiwgpPd633T9Fft
8FuLgHTk5y3yG88O4u+EmOjJT4.44So8cd6GNvswZU1iBQj66EwtsWDWe7vR
YKaM6GQdhcs5tstlfBfdOXvuucDuucDmwaGw09E1gwcegGYEu8F5dVJTN9U+
Io3uVEy5e8v2qXlMofIe3vR1WBXZEq6VcZGrY4MMEvnE+g.oQAQe0wzO8MRI
l29K+gneX+eVk.ZOaP0aHjjkxWxKuGZtD0+C1uJxWs5dNuW6r2+0y2xqWxFm
2jDjs+p26.b9Y+LGyjxeSvd3acdu7Fe6+PewwIWl7Hl6N9ep9k+1i9NYdJ+Z
GvacJdGIe4cNu4LI81rOjeHV8oDQfxKN8Ioe2+xEW+MzQvdKBp6l2FGCdYyS
D6Putr42FaFFI0TF7pwrqgzgjjjGFrMfrAyg0ul0kUC4JDrtvNPeLKVrlbCU
tNHV0RVnHz69PlOxu.Ui5RmzTFY631vu33u+y9akFMk8JpaCzlSfl12IRPb0
E8brx51hAMHUOkrhag1qTFqaiJ6rza7o+SzBitMvm2nF+1was2gXe0FdMbmy
e9257Wki683Vuu915xla8FX3b8vBBUvZUbo1RxPEESTaYsMAc0Ariq715qRs
Oxogtyaqzrt0NlzMWGEtn8dUkLihHvvxPHvspsu90Bp72JoYG+f3mU65eIH4
DF4n5JtJH9qNq0tZSkXjB26nqCl0gf3Z5d1e2FIGAV6iH0BLIXpxP+qYRdDr
pDizUBC09tUhcGkhYRXJm5LmMxYtE9EI1t1ek2W6J7g6czPCo75RLkljL7LA
7TdVQYT24Dw0lsdxqdsiWbr2pOcrqcYw8tKKApU5y3jkPj.SYtXbhi2bYyot
rqddWPrDwhBd5o7EhDa.HDu2.jb.ScgoAQj+lBQLWJNSopYBwmF7iarCpQ+1
VLiNkaLSTu02SLFagbW5hH.NBwnLzq4F3YwRBD2xtRoIno2RMLWSDvMqQlH4
qz2QEdKwmG7q0J7i9+0lwa5at9HAuPRyRcYLL3ry+sJm0fGQ7pz9OuNOn0mk
+WnJ1NELMp5Mcd8a377wDgd7Bm2jZCiJaOFDeRZ47a.KUCu.W9171JWZumeg
Ub2YJzF04SexiGYVLXgRoeQaagzYz.kIIakL37Wjl4Fr2Y0oHUcSp0QPqynL
29aTlIsCKMJiWb2H3JlQVk483wvsJUh0TotrxPCZ+WgchYHC7RBh.AHt.qx1
jnyUhqYhDVEwgUtwLA822DrT2OBbQLDPPbY.WUrjljOZlGEafjfkRp6JxeW3
m8c9u+65rXR+mgnTCjwoD.UvHxMQgnYORMOrE8z9CJM9axEB30sqMacKXfl9
pEUJDW49mhy0madr8MheNx+3yu3n1.UCJ8tAAtWqznWU67JHlsjNolIWLtN6
LBhA8sFHjlbxPkU6Yksgv5rMrJ8zSs4e+d+89QdxwTSb1l2Y2s48pC29r21S
R6A0tTxesyie0Asjt63ae08RA6kuDkG4zL0xeX+Or+CFgem2mb6F1c2Iken9
wU9JmoresJqmuWplN9TzdmG8UqIwi9aBi7k+R83RLFRcwO4Er+Mx2wCNRl6s
xmepSZduJMo6mdeILvJO0yq38qVZVGIgKuakeCUKZq+90GKv7uQOkq2lymiu
40u8ne7W7kTsz7XEGnrOV97zViHefUYjRBm8kmCV8r73odQRZ421s4oRE8s9
eS87RFD68Rn8fjIS9yyIVhjPA14Pnb9w5a6O72q2LcdMZUldc2I9yppNSTyN
8TuJ+W+QIMS9NQFNUTyzZlzVTzyy0Oc7GrXp4Wf72IqsZgsIA1npMpxIzSNu
gQQVMod1DswZMalGunmT41CSygd3zkNI84jVz5bVY.Q98j1G01V1zMW2et8l
pZG5X5mNaRaSdiHkyqsx1kLqsLrh.d8pWXkqnz.6zYCxuBZpLNVlfDKEEyUy
7Yjukki3LnXBwc5qBmoYEWopGAWvXHo8sFms023157kWdqr7JTW0VDICfWZq
g3VJOtW29VovFCowF7NSEVRDp.oKePTaanvOpjqPXI8VZiAccHWIUPrfZoMQ
svojZQ1HPhaVVXHASelm4tf0ZCPS5uwjpJUchkCNKPmWRELGT5nWP3AaC7.u
JvCSGiNH0fG4M3hSZ7DPtw0iRCjS+qKH.ZSeWDqqcGpGVnTfImTpS9eB.007
CmqxIZ.yfvkO4EDAfVf.P2lUecYDgnBSXKIkjjPCScWmCDGL10TmlKctKDTw
wcYjolT0ynRKqbwRCbQDrdiQRAPtqDoDTNgojDTvGSfQH.j3pBtsKoZ1JH3Z
R9N7aMNCZaaF9BZRC2V0LhwSMCGn8YIGxVx4Ln.mnIQ02Dwf0btKD.v38uqi
N4WZuOBubjFrdRCbQHMJvVRiL0nl0jV47hzrA0zKxPczF5xPa11fNKr9lZqs
AnYA4Rr0ZNNap6tXMowZPjDekIMwT2S1ZRS2kGVMoQttjFTL05XHVOfFcx6F
XKowl7wZslzpX3k4RCJord3BFEhAZC+HHPYe7xDKgkRYKkuvIU2DyVN+RZ8N
w148UgRgpwekKh.bUZYEhH.DVme5wtrZN2j1OvZlkO4ZOPVZORpI8WFpv1YT
55dIohtLiR3EhHv1NHHFdAgBLejb.+.7cQ883c0N6SnRs.E1mtISBu7otT3D
YVzZg5h9EzkhJfVpJYDcHiKyTk1gbUvfkMpBR7HboyboXdamfbEp5F67K9nx
XHa0GktlcWNp.Zq4ZPKLWfKMMiVH5KwhkX0OTAmQXDgxsd1dcxSsj6xwXDmg
S2HopDOWY6+JekS4H9VCkHnkVdUEDYx2K0eFpxMoPj.4REoguIzDpYkO0TZq
Fh0IOccoLCPSFPqIiKkNcDoKloew.iNY+7EiJPcAKtXsH1ZpL6hhEVOb2kaE
NuHLFz0VsifaMNCcMVvLSbgMOVvrpVaBqxgPUtGwz4NtZ1jXm2ga679QVtb5
VZFOrZR1a0J+8w4jiDJfVhMHHS8MNvUnrArHtmK6.ASZYdHs0J+Hnpc8m9p+
XvdUlvz2lsK0CYfc0FvrpTm2hcRNKH6XyU0rkCbJDSFMCO4.FUcHDomQIV12
gn+lr2DENUj9N+iG8xl5UZl36.pmqccSv1smY7JRHUKR2klKdJxacPgpfpAy
fmklzFi9PkeCVLoYpuUT5sJ0aIQ7Gp7aUeqo2IxE.c0Ru3DoW02jGBVwc5s+
ojzqIuPde7PT3gvny4hzkX2b22o3vy.Pt7VV1zgU8hBk6o1cIhhwUdGjl0s+
DoXLPOt.QhSX2oPRN16fsDb18tqTQ4ezKNz4OpxJoKFCZL4Yj9.ZqzzjPW0l
MPqJSf1RonoXYnwH3n+z.g52YlMasgFxuIq2rMb+ocIORUBCVEo14xhoUG4.
4pIAoQ3sdVfmuurAfaZndn.YIeD6G8QSNUMSvnU41otxsodxVCTGZtzRIMQY
CezNu3LgCRUAAPGwobaF8W2H5+7WTCWsnNjpv1POGjjFHRUlZ3quZfiEZFlT
lsqXGiOZLIrWrHsernxRqJSGli.K5+2W6sJM1AxQrj9QrpzOup8fl9YMDKX7
ZOVsMX0mdoWsH3EcruFhZVQJiTG1c5j5NDrumLIpyLIQmABgDStFULgLoypv
CA9q+qIUv4eSuXXXeaUMpPqnpXWc77VLM1mNnVMou9pRc8oiOWQJquhzUe0o
p9lSS8Ukh5OOLeUol9LlQkIkziIlTytt2sKMoVs6lw9uJSG8sjJ5aKMz2XJn
2hzOeMod91S67Mjx4aLcy2XplugzLeyoX9FSu7sjZ4aKsxaaJkulzIeioR95
Si70mB4qO8w2MiEKkx3qHcw2ZphubZheLiJRXc4vpdmeV3.SshvjqtLIu8YR
JY4c0wsT2AxsbD8pvsGkiUkujkkkq5cY1hZhrTlg4fFy9f3ILj3Os6Q+nwo7
7PsM+BHefkJVDcIbSsCTwhpRpxUWus1kTcBP0jOgAW8npFTmrWuyvUBSJVlX
r.Zlo+.UK+R5O+ZlzLFkFL2SJ+Np8zPyidZbr31rmVypygCDOHRyKKmCkpQ2
tIofquckXeh6ku94Y.o.3ZkeyasV.Ve4GC2+7tM4U+aIl5JqbiBGCnlPZFV5
1Q3nIMz+OOpxkSNwIyc24MG81aNjxtZUFKJX+5SqTI0oiwm1r4sNGC24qx7k
O4rM3SpTsSvweSsoEDRMfOnN8d3FTw8G729Y4DVV406zyBMietvl79NDwZn9
C.u5MPQ9aMoOmv5xLj3da4.xjtZHRqV4R4XDIQkOaNYCwq.vlMKF8LauYAwK
i.hqhUEKxsr9utNFskCjZr5JiyMqlFV7htK+jjB.Ph7nGEL0khyKH5ItTnGj
OSPuVRdusn9o+4bUBAUo5GNcFo94U.nd0O8u7+xPUp9wj3P9FQ8C7R0AhPIe
6q9gboPOLelfdMVZ.Ph9m1qy5nwAUN.tpo5UIGebavJ+s96eJ9Ym2Db745JS
WHV+yR5PSc0FjWX.Bge6nIJeYGeT6KkVVxAWaMQsmTqemJAa9NH.LnDaMaxy
q0JLVYsfbxIkl1M.OeJ+KuaPY0w74a7wAXQVonjJguR.KjLwIL7lzD9aF8pS
Hxn1CIEsxq1alMAXolpCqC+RclfCg8E.RSnmvB1eJle7+oCKF6BsEBqa8Kx8
L77Z9Gs0526oePLdxrD.HHyO.n1l+9WxOb4U27O0c9GbQRf26Zj.Ni+4GTUQ
3pZh7yAO8rJ2gqRy9icIFCyzCA5ZBtR9DKZjaqMW61atuys7hYNrYYeRJDIU
aCboM37s6bzQnKlGNRJQxzug8vA5h4gCB3aezCewj8f.129xdWNUffYB3U+D
UOtMXs+KNT0FC.ODyOH7ouHWgIoEBVZwMrB2c93LfDLFg.T8GCBlEWKetTIL
qK3OyEb1KNb8iCxwKD1.czbImHPXyG74PR0OZPHDbfdXJY2w3ZU+yhOQ+ZCF
2Zhbi5hdiB2dUQwQMQxQ8QyQ6QzQcQ0Qg.3r0n6nPDd3ZhiPDSuHGTyd0CSo
ECw2pByCKB0CaB2iVC4CKC6iFB8C6B+iVBAjVCCjVCEjVBGj1CIjVCKDKBMD
aBOjtDhHMDlHsFpHMGtHMGxHMG1HMF5H0E9HUGBI0DFIVEJIUGNIE0fTT+bo
y2pqLxqrVpPK1T7C00dQoVwhWZckdql7MViiqUq+gM5pcUY7AfKGx3oYYUTU
URql7FR97BPtA5tz.ZEkryNAi7gBilvrEpCXQydt6FA4RpIelpVYegO5PgOn
wj9D7ieCgej3mczYOMmGOEK6T+kvH4QR8WYeATzPAT0x8q5WC0K.BDIlQPZI
qXKrL1NO5TRRrjor5Y8WY3Wz3FroeRmjj.qUUpivBFESYDBECqapnMMk+qGv
JsATZPz5WqUssBxMiqCVHEYb.ETJWR.t.UxGRfUYmPQkg6caSv55grlwykVy
HmekyGLpCHNePZy8AUIN8r5.mObda3mQaQqMCqCVoLQxK5qM1f.4ijfNTvVJ
mrKiSeMoqiY3am1iUdGW4sNWjgX8Dhab+Zz3DiqCUMScCoRKET.VNUYACiLU
N1ZbwxUBUKtLk8FyvMiY.qwrFV1xlcoPokurNKDKuTlWc.tYnULTnMoS9Hhs
MZC4Y.dJFArzNMsw3RpW5HSjLcgKE4mvj0PInAnr8YFZk.adWlTpx6VFlqJs
OVAXaQl0Och8Uku1IUdwidJ9rSBX8lyocfygTK37gmjxmFFmTLat1TSN5aol
bRWZx4sy40maPmF9AMx7yMSKYMLSCcdgeqv4cQsEAjOm8V4HMeeUqxQaYZxh
KwSu7DbyYdxBNKtxTW5EcE4Rlt85SQFbsWglOp+gdlIjEXxIW3JECc4tmKe0
tynEP+I+8u37gTPRsUEFTbKPF3h7x3nkbAix.fyEvYHhbeAM61BZt93gkxV1
ZVTStw6jFmm4ljBIHf6qo480z79ZZNaWSy09E1lBc26Erh2dCcOKsQm9U+Io
3uVEy5e8vWvIimNMwADKw4lXZESduNsC13ij0I40jfiwgQe0wzO8MRIl29K+
gneX+eVseDOafvaHjD+AJ4k2CMWh5+A6WE4qbQfy60VL9ud9Vd8R137FyS24
W8doIa+relypmUojl2DrG9Vm2Kuw29OzWbbxkIOh4ti+mpe4u8nuSlmxu1A7
Vmh2QxWdmyaNSRuM6C4GhUeJQDn7hSeR528ubw02qvA6cfCS7ENXeukH1gpN
0QOe8ntjZJCd0X10P5PJmbjFZ3VBMf4fSvXcYJUsNipKvb95.8wrXFe4Fpbc
PrpkLWsRQNe3Gx7Q9Y4Npy+pkvJTxce12we+m82JMbp1jXEpl4Rz67tTRleA
ql3PozsmqIqVOWh8tvsxIl2eLp2S3hXRriyeLRMIDk9u3PGuOGFr1YyVO4Uu
1wKN1a0mN1UHC2+rsmIYVoLWAhDXJyEiSlipKqpc3w0VpZeXfzrhMaCCi5JJ
gn82wGlE3hIVRPRSpPbAFAv5EbkM0vjM4qALvofed5bRE.3dshPipRWCtScf
Czjv3mkhh67cVGrYiup14HY4eSmEFGezsMgX5451Iq.5ljzjmExvxd5CJnLb
cmbjMMVE3tKEbAigjcdzpPq1nSKjZes9DTxHy9WX8bstt5wtf0HXdGq.yWlZ
HuskKYZ4xw3Etv+ZOoAqmz.WWRCxpmzPWFRyVwJJaxaPsVhGM4Mn7NUEkm1V
TVWpiuSKrw5RgNdZE1rsFLiujZWss3GmNhzkgJ5Xgz8hPDXwrnNki6VG8KUU
wFS5x.HWLv.0ktuWLr.1Er3hQEcwZL38xW+OUJe8fAWBtGoh7NnCE48KCUX6
f8oapqKCUPs09V9TaMj0jFYpMFx9JIeJObuTxeuTx+c2Kk72Kk7VJQbuTxeu
TxO5UqZVmqV0DfJmgopRQtSc4p1e8S90ykowTctLpVk4p+tyqlZwDA0BuNhU
89MaOErdo2tC5jq+KNeHaRDUsOic9PlZehy634NvlMliTH47C4Lcf8dtjM4.
oY+a4sk7fMozVShA6CYxwuIG4bNO140+Pe5L4ps7KMEtEgyGxr4kx0nA6aiF
FgLI8dyB84NEsZGbNtWpW5eWBG8o2HoyLKkCWZxH3lZXG7dUFu3109UyeXDS
kwS.tWhwuWhwuWhw62hlmcT3NLRbo8QTuSK9ooCbT0iIWmF9IHlojZ+Gx1In
+EpqDH40b2z838YbRfgIEoIS9cRPMYLb38X84dr9bOVelqw5SaoWmrSVtS5p
abHr9E2.BihEyPYvamHp3m+hCbIYT.QvPyPQ7jrJKrd6Almf3wOu4E4T1.pN
lTawxGZ7aMgznlS2lXKPZXRnDqGcPXaN0hLCjWkXb6gOU6oiO1PEVID9Rpqq
KmAL+fTIRgjjFI81Q18Wny9Wi.hBgWFH0TkdIjaGHMxa+5vcpw+aEVC12Bnh
tLfpIsawugjS+45bYxXz0GhGJlhw5.fAlLRk6sTucvR9XfgzwBCMlLgE+zr6
MerfQD+VqCsbR6eREXlPoAnNuSJV5.Tq5f46CK.oQMaJJyZXEARRHz2PwH8p
SQe19bNZUd2q1kto21alBmFCiH7amrU7XYuIev8zkloALijScM+n1MF3aQCN
wihAmbwkARY+T1fSt6kATg+D1fSNYnXpPnCCSH4FzfS33n+jNVXH+V0fS7Xz
8lMVvH7V0fSo8lmM2jZL2jwFX9jhLT6MSQUWiejo7eJauIiNT6MSfyD+adSY
u4nrfFrA6hiTODaRIYPgqAOuEDH0Y6iwAFG75Bk.ioKLD6Fy7mwXjazfMSGQ
Pl8FmYxN2RqLzXM8Qzvm9HSmKntMmvHcTlvHhNVfHC9S3oHhXiELBw2Z1P9K
bDihjHdzzIxLYpP3OMEEIiFNd6IKpmOCFwfxYx.bHPfCUMYFpt6kShmzoCzS
5MaAjqsapCnqYOF.I2R80wH3HrFOtiy9hIcPmaOGW.GiUJSLRnHd90OWUD9B
2aWslrQLpz.yGTY1Y+X+nOZ1eg0j7n61VcKo3eajCIoeN+kFicdbDv3AmhgM
xgL2Lv2MxNEbTpigiztDDILN0gey4oLGAXLcVlXv6EP14jNuJxptcbU1putZ
633mG5HISZbVFYNM1RqkhPz3nOCahNyQo5CdCTbLaebhgli94FCloiV4wbdW
AG6RAbjdERd8b2NPfb90fB6BDpVwJGxTSgcob2wEWCLrK0PA90nHJvocsUdx
ovtTdJ4Wi9xrNgg37YnqogB6BFxtJXHtKUbWv0fB6RYEE4dMnvtT8OgWABrS
0V3qQabmJcrWEoPLnKRgWABDkj6VsWY3jSgcwvFzUgB6hgMnqg5ZTWz0ftFl
uh5hxFcBOkM0TXWFTFcMLeEg6JFxmZJrKJruJPHrqi4M01Fh5zHJWCyFftcU
LbxovtLjB7ZXaX2JM7WiA8fcx70qRAGrSCobMrND1o4JWc2pxYp4YHoyZlzg
yWRuloXblz4yWRG0BpSmwjNoYRmLeI8ZFa4LoylwjNuYRGOiI8V5lhlVRuKF
hCuFSHDhF0pw6Ef.gccv6od4Lff4tymfiqEZ4pdxYR6fsjCtKPo8Kck0bN41
rw.xmWtyy.y65OI1cXILRjYeaT8t5+BVvSa.RV8r291xunsgJrAhJlJvKcFg
J+5Wbxumb6NnTeYaFYCn.ElXhCOe.kCO6cLLZXhJjAhJlX4fhlOnhReuUXRq
InW9.wFPRRochSPuE2INsr00ywxhZYYfMrLAT+1tog7uaMa2lJ1pMi.7TZmc
kKAzOvLPLAgsFA.CEAtHEtXrskwILZNTJGw7KIUXakbDeIKMaXaKJZ3KYE9z
5xII9RVsSwVWxUujkUaqKpk3KYwxCaccCDzPAW6ahxBT9hE1q1B.U0QKcl0o
1pQRk0gDb00gDjE0gDpd..Fc5pJPGbToW8i+6pDfcOp4JmiEP6KvLBS11vTx
UXt2K4JouuyRClzeGfbupqbupqbupqb2UQ2cUzsjqhP2cUTEnB7tqh5QgK5a
UWE0fmR9IhqhfCsXUwtwcUDALKlFrsNrh.+12IMnYg6QfyBWHZszI7t6Q5l6
QNmIqr18HotLvjBdmVuiD02hQKpqNFAygYbLR4rV3cGib2wH2cLxcGib2wH2
cLxcGib2wH2cLxcGib2wH2cLxcGib2wH2cLxLxwH54woRe5.S0NoqaeDZW8O
RpmCHIyO9h3fjS6dzOJkxjzUvtS6zwyVsLWwg2UOvz6R41nJbMT5rIZJGpZu
CURLUTmrJofV.ETO.k3vmdZqesMuYSutUVWAFE1D459JaVN0vd4bNljviByj
mgaIg8UYQAvZY7Dtz37OF9BHg2T24kNTYeYTG6ICY8jKg.lcaNpwqwLqQ6Va
vdkE32NyrljqcYqzGgNn0vr+7W5iKcgcde8oxy8zytzkSKVNeFglyTeGkRZe
Nv+KZe6ErMH9qYUcDtYyQ+DB6cZv9c3LjhwuoqijCLd1eXophVsMX0mheNJ7
zSOm83kbsV9S74xm3wmTtBN2QdMT5SAkzQqW6uKTZ.x90KkrrjO6SiV0RkfF
ZyL6AeSWOn9WB2L3jWzSIF5u3CRd4jR+u74I+KkK20cQhNc7Y+iK8B1n9yOr
ML7fIkkLZs5JijNEzQ6JNuhDp6N06ep02Xc3W120UqfJnKQTU4XIww0fKftp
dwl35XySG5MSZp6dyHljTESJ6g5e7YY+79xmT.blwmrF3y9KyZRyuyH1jWhM
eN3omOHelah7+acmOgllS1LiOokaNkbzQody8q7ke7T7y8kWY3YlnKkWIuJG
IcnbJXt0p5VhSi7212AV3bgNVHlcCrv.0wlcefkyL4bafEFrJlr2CrjxmytA
VXnF3y9Ky1mAVzWRdGHa35htlKg2K4Rtbdp0hT9bI301Wjvl2jfMFuIlMuI7
X7lv1fd4BewBYPqI3UCK+pAC6Uir3USbGC7EXaKIbfuItURmfQfmxmz+aJ6q
MXdh0Aoyg8ln17lbqte.ZBd0rpe03I3UCuD89s5Uip4UOrd+brs8IQCUpxF8
LYyx58+MAsokbLFwfOUC2xrtYBOz2DpCxhC6MAmr2DXpdST2I6Mwmr2DaxdS
SU2IBZxdSvo5MgmLAB7jIPfsQhffFi2DYx3I7j8llLU4XajxIixaZp5NgrRS
NcDLrGYyTHJX.vHYtsUu57oYywxlW6e0i9LdQbaaZGrPjUZJGi4rgrQSIbL7
GChLYcAsx.QwX7llJVBZi.AbLlZBDa6zsFp9K3jYhCzF63gjR7jwspEB2M0K
oPXtUHD2JGda0GZaECqM8FZzDhOEbk6qQF1o0Ag+Ec7Y8w+j+9SFOMmFEY4g
hGeZSv1sqB2FVJ59Rcu8ByYOGIcoW6+gCXIxk.gBI1sDCwbDS+M4WnzLpWSt
GX5MQnDW.RcoDFhSn5uIPXJV8MPgaC856B.cMuAfq.PLeSdHnZySk4171+TR
7nwyDTUGhBODFcNv7VhcOe8mhCeJxacPxdyFja6Z9PhjTj7rEirpE6j.ZP58
jUx6biwe7zJulZ.7VsR9fyApXjDfzbGgJ4T823likgOW3u0eWwakKXLtFPE.
nPX9l7ofP4u2GeJ2s4BHPt9UJboDN2baHWyihxNeeYi.QY2h+2G7267W71ez
4u3uK3wvsqecgPNJouUJ3NOAh.LCKAYbjoAW..PRd5SsKpz22GC1q5a4eVH.
6hfZg.zYoHDWPv4EBxKkR3THVyJHWrjCM2NTRIEQk16LbVPol9CVJiluGg3b
+.AGPEBy2JwUE6QvREOXpe3luYdRy2NDe531.oFs+uJ0cM0wHCtZVWurejpE
dfzxNuejcNLfst+oo44rfHOokt19WEHeYGp1ky0WW5GiKCmIxgZE4k8cj5kQ
tY0Ao5vQnvwlrxs0Xqlv5.ZM3dzY5al12p72ZnuIWnFQ6gJ+V4aaVNFW9dG1
0JlMtqrP5R2lkwd.IOicGSIKyly8ea6I+zB2t8CCC4LhQo5YBzUcH3Ef.iB+
x9NSguRWzy8MwWHJ728UutSf.jzbBiRRNFiL8cPPHDO9D3uOx2uGTnF8vpeL
FknFJd7It+e9a2F9kNScBoUJbilCn.p0uQkHZdUHKxlSI9OzYUBpK.HFKFPG
TN+dosccl7Uhh.cyOUNXIUyIvrZyFEBLxXPghBadlNci1pxPRFgwvtIRw7D6
jksGtip77q7y3i3UwUt.NDnuTWLgAbSr9mCoiIWE6cnIlovLK9idwgN+QUB+
XQed+lIlWSRe46+me++evzH50O
-----------end_max5_patcher-----------

thanks. there is hope :wink:

1 Like

Ok, giving this a bump since I’ve sat down and had a play with the latest version of fluid.ampslice~.

So it seems that I can get solid parity between the Max version and the fluid.ampslice~, but in mucking around with settings and thresholds and such, and I can’t get better performance (which probably makes sense given they are kind of “the same”).

It seems that one thing that’s holding it back is going from nothing to fast onsets, which produces a kind of lag while the envelope follower comes up from the floor (negative infinity?).

I’ve cleaned up and updated the example patch, and highlighted with what I mean in one section (number 4 in the patch). If you quickly retrigger that example, it “works”, but if you playback [p pressSnare] only once, it catches the first transient, then a gap of silence while the envelope follower(s) catch up, then it works fine. The example next to it [p rampSnare] catches all the fast attacks since the envelope follower is already boosted a bit.

I got slightly better results by introducing some noise, but not significant enough to warrant actually using it.

What I’m starting to think now though, is that there are limits to this topology, and that this is more-or-less it. At least for this object on its own. I’ve not yet played with fluid.ampgate~ to see if that can help for these kind of fast attacks.

I think part of the limitation here, based on just intuition, and just in playing around with the numbers, is the fixed thresholds. For example, in looking at a screenshot from that Sensory Percussion video linked in the original post, you can see all the onsets it catches even though the envelope isn’t contained in a reasonable space. (it could also be this UI is just a normal envelope follower with the peaks coming from a differential, but it doesn’t look like it)


Obviously they are going into the frequency domain based on the patent documents and other discussions in this and other threads, but I think the peak finding should be able to do the same in the time domain, which is what leads me to think there’s a topology difference going on here (outside of some magical settings I’ve yet to find).

Here’s the patch as it stands:


----------begin_max5_patcher----------
11724.3oc68s9iiibjmetm+JHzBrnG6p0kuyjmuwXr8cv9Cyt2dmOfCGrOzf
kDqp31ThZEo5dZa35u8MePphuYRojTrmpJzsJU7Yj+xHiHxHiLh+928tU2m7
ygoq79u58W7d2696e26dm9PpC7t7+9cq1E7yahCR0W1prveN69SYYI6Wcm4z
OEsOSephCr+ztn8wgY5a.lev3vGC17U0cuIIN4X4S8Px9r8A6B0Oje2wnfXu
eeR71hGWzi6SNFtINZymJeWx2RxorhWCN+nGBx1HInG+n7NxLsKBCsFbmGkq
9DAJ9z6+e9sXdJYe8Pn45ksCy+0sqhq5Xxo8aC2ptDl5YXNpp8nIa5pRG4bK
7u3AViI9.zcs7EXIZHR+fWkb++9GXmeTGBNJQkrvieLbev8wZxq3Ee+ikdIP
UaBrlKDHLU8MBGPEh7Wg5F9Ge22o93NK6j2jraWnr0WuUl8TTp2mh1u0K4Au
ujb7Sod2GtI3TZnWTl2gSwwodYOE5Et+ygwIGB8dHINN4KgG8jfr5d1K4Bxh
9r7x2+Pz9nruV7Jhi1GtQBwYk6LakQpZ+Nn69cH.SVij3AGrV9IjITvDg2Ar
SV4PfJX6Vuzjcgd6ShRCasQhbRiDw7UMNBR2FMb5XbGMQzkzD+1a.OhSUfAx
eJGvCc1.dL91Of+auNYeBdMWw4ClxdYhy5ko9u0Ke48xPijsopaF6Ns2f25l
Ge2LCwzZpm3tYj6jYiVtFok908Ravxh13E9yA6NDKsuuud8Jcs+ov3Oqt0fU
i0PDeFUOREIGwJanPe8uj8qufep2zCAaBK+1KKgjspzElF82zWnhKvgfilG8
C2GjFtcVgGFwL8CC5ffjQiNTGhNODmHo7WdfG2EnoSl81jh5w9Kh19KrvLuK
yfYzPCluOX+iuLRV99i1IIQEpddfrrMTbP34CVFif8Np7B.p8geQ9favE8qd
tUdFTqHErGjBnYGHJFAo06PsYq8hToRQsAwqZ0BiKx79NZgGh1+omWYO6vvM
xb1ArXX1g9ZjfKoQtKLMM3wvFsRkfJp7e.fGP+K2zsBkB10BAYZg9x+zhg.s
0ZIBW1k5IGSb3OuO33Yf3vwvToTR4TxS1+wKcJ3V.DHftumec88D9pxupvi4
XPNHHEjEEG94vioxVSIB6cqBNbnzgeWoaQgb+6FMzh6Nenn8Ur9QYXQ3miJt
e74iFbT1fyjs1SGM5G9YVwDFTOljsgG2eJR+jLGT1GlSR5dKkdkzC4x70cpE
m9EHj5aXgzJLXlY6PDkLMRYlQbxlOYL6ATbvjCg6i1WtCtxo2F9Pvo3rOVVY
BDst0yWnUp0SV0pvyMfGOFsMYuhHpzSnNbwqSxdnGWn97kFi9J1GbnkaVxCH
gkNNYprQdJ89fipNpbI9nhSlkjDW8Tmuu3vGxxOsTl29ZnXVxgtO4wnGepm6
89D4I202yVelzOdZu4reTxSj8wzfOWEsyBhiyGRW8w+yARcjAYRCR1kaLv4S
Zz58T5liIwwUZuly74VNyVIO9lvuDsM6oJpcUmQd4QGJXhVctWdazigoYUOV
VvioUORZ1WMfdoCc597wveLKTZDlrUT8Bp3W5xCXKK7qxw6SHXcAgo6Keh1j
w0sbttj0YryQNsgBWvUURmUR6pKwCsp967EgdUa7cJ7qKAf0t81DD1gvvtEH
NrPwtDLVQ3nEBHqIjDqkNxMhJETicmPPUzucAkVHrzFAlCJzzRAm8H7zNAnC
HDcPAoCJLc.ApCKTcPAqVHb0FAriQHaOBZGTXa+Bb6Wna+Bd6U3aWBfaWHbG
BhsRXb6BjqK.otf4FmeHAzsLQ8mqe5tDU2u35NMO0XktYhIDXahrsVrcKdHp
74zlvWRR27.h+pmkSTlzKHhtVPjqm6JlBMyj0sfHXA.hoe9gm8DPfZfIsWrD
2KVRr.Ky8KDRKWWfGMXdWueqOnF4uD3WkXLbZYWID9ZpuuOmAL+fXRQ.Fuyg
o1C3ODmDj0KhxV..5uVNyQv5aAhx0XIg3RDEBW.P5wf8aS1oz+eKfUyRivGA
iZ4EHoUPEsPF3C.S7PeLV6fUXtpJemxZhWDi1Aq4yCF1kybuJLj9JZ3cAPh3
Ne.MeA.ixIs+II2nOTZ.p2GjrkJGrKmQt968hrLGgrHfwc.Lf8Pa+VHsDLFc
yoieN74qvJTj8.nwbn7EtbjVgVY07ZEMguNr2TZ+EvnGW8g5GtjoDOA1ax4K
CCNwSsAmsCorIvfSt3UjFo1gUnyM3j6+ZwfSgfn0wSl.CN4jkwn80yDFxm.C
N4KHCNwS8v6BfD5bCN4rkiAmR6MOatI0XtIiMs1aV.r9FuIS4NxdSF4Uh8l4
.XtWOmH6MYzEg+3mXewWDWglXvT3WOfxtJuwyVB93PugZl30EJGFKVXHlSWS
C1hweaSrlaDAYhceyjcFyRCMrpaj3UxzGYlMu1TLgQzBYBizIeBi4fnIbLc6
TDQulbZYAPBwt1FRzxX0xDqmIYhlMiJF5TVQ7qHVwyH4DvKRVJymAiXPOUro
Sf.OpZxLT8XPubOo2e3H36lP6nXq7.ItxQ5nEwXcLBBliPioPsivgKwi+xYj
NDLOnH14iygyhMjU1IlSUfrQYk7NFo3yggnAm1LrgyS5bqUca4Fy7tehmTnY
OZ4WBhQtAhIuF7LgYRzBiyc3bmNkZ3xYkY8Dfo0YY4.oYlfLxj3qrkvbq270
MwgyCSowaYDpS4ImkoEZHrqPtGv536UnY0vfhO60.u5TTwtwtdTkquu8aC+4
ZaEjICvz3Ru3E3pYpLVKSG.tt.8DNGUqtoQT6+yAhvecyUcc8C4oImNtonck
S5dMgfsgoYQ6Ouca9KmUGpu3Kha3hIPvHnPL3VPgiACQJJjL2THZDTH6V.g3
wvFRuETHYLTX63cxwslMIHZAS579Ic7BlzE8S5rkKoiH8S5jELoy5mzoKWRG
OvvT9xkz4Cf5vELo62OoClWRmNVk2ytlG1h2DM9XnP7sfBEigB8uETn+X3CQ
2.JDMFCwQvaAENpIynZNv4lBGig3haADhGKaHetovQYbxMACoiECYyMENFUJ
H9s.CGiJEzsXBgnwnRAcKT5gTpTP1Nq+aAEhGkJkaAAhV5NehNVUdyMANJqW
uEVMvFSeL5VXaHCuz4BYiQoL6VHtlMlAJZ.etsMjOpIQeKvP9nvvawLQ4iQZ
C+lPgiwvF9sv7UtXr8xy8xYvGybk42ByWGCDN7H4Rmrbl3akJUos8ilTF2GC
xxNFc+oLyBE1BgdYoqrGiStOHNOIjcNw30QFM66Z1.N+sWfYGluHC29XkHQv
1DFIp+DFoIf.w.P26NhNVk31hgipqT77.LA2m97TkHMQlXao8c7vnSjlX+YB
R17jriIb5PESlBm5HTgMSnxu8YupAqbmAxyk.JPgYiC5lbtZoD22zBJGdJHM
43ySFpX1mKTjaPk4RlhRO3kfIHqvDPdR5cTXxPhaKkkBc.1TODk5L7jtDlBB
n6vRZfn3uRlXubPN1UbH0RLH4.3oQHuYq7Ufc3CpG.pLB.uZD3kbddiHu5EP
oMaCKAMMcGWcaB6vdPRMmfzaOyXIBnkDAZBoArukDwTBDMc8XW9SYRoBa6Ov
SZGhsrlX1TRELaoB+IjJHVyW.5jJxOXwb0FZdZ+8KIW92+7xpOmLCwM1hUxo
c2GdbkSJ7PR0695MEnYivbYUdnxB4YttdBkk73iwgtot5TTws5ZW+z+FhpR6
jLS0MI4i9XRoTcyUVmcJP.ShRlgGt6t6t5KptBoFlcJxMcmLVtsolbOgULus
0RNWCrTDm4n6yd5XX5SpB12MtQRAFmdvuxFIoQiLMN4Kp5az1juregzJyMl7
xakrNakmN3xxfkptWjcm2KObIwBnub.EllenR7RxFl7ue3gRGP1LeHHMK+gP
e4uzOAHDfuySBrowQaBiC2+X1Sx6AQty6onGe5fjLe3X3+g55j2YbRxQuOvA
1WgnGs7CBHOgP3uVnkjhDEIpsQ1SIt0rb37c.50NvBhZvyUtObgzLu5QVPZm
MyKan0TnI3p6K4MUETZ35BoYd88khl8kJgG251m.hJ2MxDWZ6yuQ6qr3xKoY
dHN3qwQoYioBORyO5l3nCOEppNO5qUm9M5VBqYaCB8M8zFmvAIVT..6nRVn9
+1nMpouDb7qshWmgqsAYA0m9ih56vUKA2mlDKmxjrY7jQYqpTI5oJYOoq+Rv
mewwN5Zs04oC0+k8on8FRK3z1nD0QJcAR1zCU8M0pMRMrg6y9npDL00zIiOc
rnLDoJdw07h2wnGkSjLVUJeRxmWDp9EcePpDDOsORYNroZCT8BNDI6K2jbT0
UddJos+hLJx2k1N47fDWR9hYhjkHopWz+wof3nrud1HcIwU02iplqT7bnjnZ
690Ta5SQOjctVKWiHNtKXeV+smzCglBHUm2e6mrJNbFEjLpYQa9TZ0Fhp1m0
cyTMt7Lo02b9ufw7m1Et+zHFui6y9V8zqMNSFZSEcUMyy7QukFyJ4Gx4ZV8G
TzoDNjWvuK9QIjJ4nT+wcpOdH9Tz10RcyZCGetcKv7mo4v9q8ftY1q4nXdQQ
0e3Z+aWSeWvbXUhMUZX9lrjiO6g5nghurFJCxKrxldUkAVA1ky8INIXqYQ0c
QeJCv0ExdUuptwRuTs9hyFhWoJxCViAPeF7tV+V4pUe9sgF6883wfsQ4KlA7
7yRp3JV+79XAguxPUsbE5Ogimdq8DNS4n6J8Qu2Rwc3KXHBCP7I.BjPtSmru
4R0fbg.3ywB8SCf3DLAJDBNhxYc+rkrG40.Q9KEi7JWvorjx3V6W0giIGRNd
t5Rtl5tQsYOEkVTePchqTKXjOOpkwsyYps6tlyBmKJ7hxq9e5eUc8UnbuU+F
0G+S+uTeFJMbReDiVO2.TUJqftovlmqGD6ecR0.NsTeuwnOsjtTG1hI9Lqqq
4c5wUt+qvp4sgIIuP0h.ZXzGfdqZd+V079sp4cOQ8Q5FIKxkDVPCD0GP.lUJ
XofXv4e0UjevEkIiipv8y7r9f13.yDfcX.uLUMcQtqYLggpMsbLcda4UVZXW
F3slJ0.x..TfcAC1fgAlfWsZs2SZRzAfyCwIxF8p5NoHqVIsvQPFyT0PX4V7
3LHi9KWHiZllK0Xqj6fL7bBYMRdoNJZlYlr1LLOr2aMikZQJRqhzIwbBL8EA
qU8nfKiAbSgjJG0nhQrkA5D0HqbtDa6TV0s4lidnFDTDWqf0LLUN6eLR.USe
s8zErZdXUMJZfUhnYtWeUalRW1AunNrdfsp1Cor85e62UHJRr8K+dB5uv6IL
K+HUUFoQ9HLUf8EDLeQ1WP9kceguuthpRkS+ew2Wv7mo9hhfluMcn5.e0B0m
ioOZvoBBEq0KOAolnKSTAg5YlQLzR.yH2NLiRGOlgWBXF81gYB93wLxR.yX2
LLif.iGynKALieKvLy1hjBGOlMWVoNc90KeFAXTsFuMN5hMfK99.10t5ZgoK
TPXFUgrQy5TUIzqGUgEPFc7R0ovWmZBKfLg+3grWoJBygLBBMdHi+5TOXAjQ
wiWMH3ab0fEdiAStDsfv4VK3TsfOTSscoow.Nyq7Hzr574oZgwLU2plrKtCm
H+R.mP4KXgPUBJ4XDAAMA6mqfI7uHXmxWZY05rNMvDZVWKr9zqoqJ4l8r17O
OOp14hbfzxSNBPExiPXlf1iMjJN9RvaeeNI9ztPusQO7P3Q4E0DNldqDL4Dl
1.QHXPCE37Wm9L02XI.kga3WaKLH8UpSSK.Mexk.ZzWmyULGzXH1k.ZrWmyV
r.zn9WBnIdcNewBPyGbIf1RPc57KRi6S6TO.YHLaIrNP3a.jQ5TKvfPFbI3j
UzM.yvJKcaUIvvX1RvKqvaFl0lNfgwrkvXy42ig.fFxZQCfYir2KjQ+V2mg4
wMDG1r0agWCg7N7Z347O42DQGeQD6bonvruBh8knYUYomzoHohBM6jIl.ulK
XTFPNwYpuFkHVFcpc5bG+U0e2urEwpBDctUw5Z6hU61aaai0wVGq6sO1vagr
t1FYU1JYVrcxpskxnlMSFfXRkQ4ICt5kb5V2VYVr0xrY6kM3VLyxsYVOa0L6
1tYCrkyFbamM3VOafse1vaAsA2FZVrUzrY6nMlsjVOaKsA2ZZ8u8z5eKp0+1
Tq2spVWaWs12xZcrs0rZqq091Wqt.jwVF5aZtSUI1+O1mJkfj5k8TPlmhWM8
ojrm8xB9j9fgdpNRuz.IAGJEtqOzm0osAurDufOmDs0S1YIEV6EkldJLcc8W
UaYSsAMxpe0nctZIv7Egzjq1MoBH9ZPe059WxA6UTOVUE401KzPkYM0lGCkx
G11T44XwH3vXDzrwpfR8kbHgAIBl.xH.F5NOQqQHrEZSawW+2dT8CdvdgRji
fRNesfxw.UJd.HP.LrsjrR2HY4jsRq6CKvB.LC1ZzV4kF83mSuBbEMLthouL
JVvGAK4cV.lv4.Laj53m.gcECjY70x4N3KGKyQBJjpFH2dVkuO2gYrFr8jKu
49Zjf4aA+pZeTijMeSX8hKHQPSEMytBO6snDxI.WPMDe4V1ovuUUmt3YE+A2
uKfFX1xHejoN0PVi8wHA.HOhe9hLCINoNsPmKOC2CxlFGsM7YOpNg+1IHimT
PFKHqoJKo39Pe+7.Og66DLlvWLXrJoLq+XtgYrwDfVg47pry0iyhaONGjkr8
9Inbdkyl1H1nHL2.cyUk8RdcQ6Ns6Yu9VoVz0NXtQ.IJDtAlvyUs9x6oHUB6
cxfn7ZfF0M0.spU2n2b9ZmNe02j2fPLC5mmD1oz2795ade8Muu9Mp2WkBzxB
OFt0Smxt8jBO606onI0gB9FaV8AqwbfOGx34yXfgJ7GSedSXVb42P.pAGi1e
CgQTtaYzaEHnMHGeIfbFqF71bJK4gGtgvW9B8liebavO5R.+HYO4kbTp02Sk
IqBO9kjixiTT9Dtg.JVnYBQPcz4.QBafzkvphj4cu2CWgOTsvSyPyjfDf0Tg
.KXTLkQHTkG7aeF7saiaQoxtYpQogKWIKnkaRUSONEteyWm1UbJO4yBk7bDf
OfbNDWDpIv66nkbBuDXYM5ykVyHmzi2OZDGP79QoM2RqPSCOKNv6Gk1FlDm7
3WKKsXhW3OCuNTvViP9LN8EWBhYX66EZolnzQzYc66O1DjtIXakn1ZBVGPyT
xPpLtLEfQXRoc+Z6Nnx5oJ2RL+MCnZ8BCcuww0UgY8TjnuXLpRxisw5Z0kEh
Vs9VeCAv4C2GOB2O1J5Ca60Fxy.L5WHK.aNKrObsn57kra0Wqr2IZ.kCOyvk
0BxpXLrewDIsdwNqvZLqKipRbi0sbH0hVt5GFTPwxVGV2xUGA6CDDf7fFrf.
AXLFPQHNmxuIMbxHVC9l0j6uk6xIioKmObK2jRyy+3FzdPNt87MSOYGMldF7
B+kRKeLhsHf2B+iKdE49a6BN38AFXsm4ev0ct1bzKcs4L93gKvqox4UKHRkB
378PhonmdEaOBLelV5xGCxBKWL3FyZWNTdTgpQANFulwj5LQuXsFcbgpwcCt
jlHwLgWgaeL74IHYpX7fcqa0FzHRD7CkSU3y0RheNr1c+ZhmOtqE1JHjaGV0
R9TtLHglIPZySpsN1DD+IErSRLxWpEzm6SJBeGJ0IwP.G9s8.tBgSsH81oC3
DykfozfmlrwZTUszodlM2MwhBatTzIQC4kdIPDYfzOmPJGR9C2WZnoJTuP2o
KL1HNzmffXAiaF4IXWnRuyqxwcCI4hLWRt1FFG70mUg.p5+tmuChyC3IxZHE
P4XtbN3Fg7B2Dlmn4R.VwJ+r8zQiI9NWZuJZMosKs22+JMDEAlqwmoYIps7V
5DHrGa1ZPsJFiO1Ak8OBD5OWFtGt+YuerfoxiBQSVXr1lUoPnihQy2BEwRgh
31zCqkcrcDNh7bKe0io8Mao.5a6E72hFw2hFwEbzHtMrV.FO3phUYby+R393
jUW8JSxMAhfIC2vxi8.L8xVbxtF4W219UsbecHUw3TWSoKZ0eJRZLvwu5YFf
9dIqx2+a9qG+q6+2T4.1yFR8dBIeo9kX4O.MWh5+Q62bLTspdd+f1Iu+WNeK
ubIO3897MW6+sevC38O+O6YlL96i1C+duePdie+eWewY4Wl7Hl6N6en9UXbZ
nWomxu0C78d0ui7u7Au2elj99xOj+Zl5SIfCkWbwSR+t+MKf.4HZ+.alafq3
JQurd4NHpjfK.rSRwC.dNHnM0fGIO+Kz8d1th0VKg0slMlUA4FrIcgif9XVr
HMUzQtMJS0Od+iUWBq6J8Q0ElxoKYReYhsz3ju3Et+ygwRqkJeEcE3r1NKCv
PErYhtPgnrqs9lMjpm3V8HmsBKMc0LgOOnxJK2.7AgQWC9PlK748J82dAaCN
jEpBz0jcd+a+Nu+OR8d2GG70uekyAFNWq3Pn1kV0WAt7bXQ8j3VYKW5nBIBm
M.KcSPbnJk9rWUnpikFFs0yjL4lOlKiRDAF1DBA9sE05U1D.3YCpBikjrWXT
1Spn8WBRdIG8TCE2Dk8UusZWroRHRI68zU.ytPPryQPrTAr1SRpEeRvfH.6k
jKOB1V9Ppx3S+4BC09rUhcoR1LILUQbl2Cxork7EI1tMbSvWmQ3CR4ckPJMo
c39.OLat.OkKUTF0cNAb8Pbf7p25EjkEr4Soyo9RnVnOiSVCQBLk4iw4dkyT
M56aHKd9Fxt4ocQYRD6XziOVs.jL0.jTgott1fHxeSgHlOEWpR2zG9flq0iJ
yaBbXKmXLkB4u1GQ.bDhQYnWRFvC5s15oxoJJFQyFz.cOzv7M6qsIAZlKlli
RpJzSssVxNq7ypbCRUnBaETgjFb5yXXvK97mXeo8Q++NMbvk3Ui3N2U1caBQ
.gp.7Ty1n1i17t78U08BgVeg26KrgQkkGixNIsb98f0J0Kv0eeEakaFy4Srf
6QSgiWbtCSm2Hy5AKTh1qaAKjNj39kPViOOIqTBm+hzL2n8daNcTUujFTC5T
XTlIeCKMJiWOLF7ECZU1rYRav8oIwJQhcTgtlXCMT4GIsNE7ZBh.AHt.qxEk
nyEmqdM0X17bQK6+Jm4aBVg2GA9HFBHH9LfuZallmrZ5qtZAlK.HeSRIkccL
bWxmC89u+GlS1DorIiSI.pcqH2rMEMAPUuLHyUrDbZ+AkD+Gpr0ucizajcPS
qALEmqOmsgy4fwlAhc6y3XYOcLL8om8TANE8Fk87ZKppfX1ZpChmCHXtpQR0
2OmNpnGTjTxPMkn0gUeiEhpVMhFXexN+l+8GC2GdLPpSM2YaAmc2VvKNb6yA
wmj1CpcoT3Vu6+pGZMcW52+h6kh1KeIJOxoaTq+q6+q6+QCyu2Oje6ll6tSJ
+P8yaBUNSY+VU1NeuTLc1oi68tOTslD2G9PxwP4uTOtbigTW7iAQ6eu7cbmm
rw88xmegSZ9AU5QOr39xa.aBTOu52uZoY8jDt7tU9MTsnsg62lVqw+d8Tt99
J9b78u7s6Cy9RnjpklGqZAJ6ikOOs0HxGXaFoj2x9xSQadRd7BuHIs7KNtJU
pnus+d0yKWI1OHg1CxFY9edNgRjuEf8NjHmop919S+stMSmOylom6zp1FVQM
w5ods76TrxBPzsYx247vErZldy79h5ddtBvxtPfkMT0u1jpYTU3T4L0ImC8S
znms9cVLy8EPR6LOJdBN9nJmdX5NzpSW6kOlSZYo2YgAD42y6eTgqrYXtd77
barSdWUUy.kyYcDcSUtjRqfLrksyZGZefKyRBr2hwiBDnw8wDjXsndlblOrG
jW.o016sLJpcuskJ4PBtfwPRKAM9Ji6j.E1er1Ud9A0LTVdApaKDQJA3MBMD
RiTtPWYW9lWnN0DUIYbzKWvnIMtkjVyjmvKjFXRHMeeKIMRsvowsTgsccn5a
4baSb.NkbE1xp0HbptMjqsreHR2revaLogl6QFBpkjldd0dnopyCOJx.NUjg
7YSrfJn8wwCmMNdSGxvB0v8KO4ZReEkdl6h1pm5WtlNlz5Ek1WoYwBz4E6Dy
AMN5DBOXafG3MAdX58LGRYOW0oMwI8dBH23ye4jVK9qID.sRpEarCG5FVnTf
IGvpyNmB.027CmqxXg.icwMO4Dh.PajJ42uJvogEhJL6pPImjDZXp6571iCi
8MkL8FmahfJNdLV2zm4BLpbxN9X47RQDrNjjo.H2WhTBJmvTbBJ3iIvHD.R7
Ua1zoTLaKDbG10x+VqkAssOCOglEaswQB2IlgCzq1.GxVy4Ln.mKIQM1Dwfc
btIB.X7KenyDa4p8jFbtsbkBrkzlc68slzZlIxVLnlwP6Y0AB1NUD9hv5aps
1FfVDjq8NNhM2CWrlzX8vRRtwjlXtGIaMooGxCamzn2VRC1CpgusNojSWr9O
kAm8Qn7wvqsL6PIMkCWynPLPa3GAAZtrKLwZXijrTyKbVkMwrskOkVuSrcde
sHTnc7W4hH.WkHjgHB.g00LBrOqiyMqxbstwxm8gnHKsGovj9ogJrcFk99SI
ULlYTNU9RFaqRPLbBgBL2QKhyU36htGw6qc1mPkTPpE574SBu4olJbhrH5sP
iQ9xTsXLXnkhRbnCY7YZeYhfb0tvr7l9I2ivMNyT03scBxsHpy0Yzem1vP1J
OpXcemNp.Zq4ZPKLWfKMMiVaaOiEqwpenBNivHBka8r85jmZM2miwHNCWDI3
pzAYS6+ZdkyoFeqgRDzRKuZChLYpotOCU4lTHRf7ohh8MMzrKPadp4zVMDaQ
rjxZx.dyWfcDYLloOYfwnredxnBzXvhIqGwVSkYSJVXs5toaENmjFFz2Voif
u0ZYnawBlY1PlKiELqs0lvpr2UqQmoNcM1Q3YdN1T2E7yrJoQwhjLZ6jrJRX
0X8Gi1qRKrgcGLbkZCAa1DtOqB2mPcoRDEAYpuwA9Bkki0uyJYyKX9y9th93
J1JeWIXWE5ysksJWsS1xhJqatstsJfSscCU+vSklnp1fhzynDKG6PzeSNZhB
aLHZhH8cgooAkS5QSQe68O9PTb74F96Z7bkO37XQd0iGC1FUqtCavL3Y9Bsw
n2052f0ySs5aEUbqR4VRD+tV+V62Zwch7APeMeHNmOT8M4gfsbmA6eLOi1xq
kpUObL4Pxwyo+20X+J22orjy.PYqCqjH55lUn4H0wyQTOiNLBtYc+OQxFCz5
EHRbB6OGbxYAGrkfKG08RAk+TPVh2OoRDvqbAMl+LJd.CULnxoqNS.usk7cG
n3OUuvOYXbzeZfP86rz1bvPCU2dCODmr+zt7GoDxNtKHqz1gp08zP6aGmV2i
G4Awmd2qSaj4Qae22ToPenRa3pz1PkbYbQtbPSSmOX4s7dw9mR0oJwsrviez
j1jO2INRbpx1.4ks.xu5YkhmUsAVnVAKX2fkoXxfEZXhXAXUaqbTA.LYrKm0
HgtrIprjp0LQ63ZhzKoIF921Fr44QzZ.C0ZX9RcR5MWuIOpUJYOWgbINrG4P
z9O0di.N5tDhNsWBIl7aq355SPNrQ9P7onsqU0ph3nMgio41iDILkcNe9emm
v9la4sEXKE3DG0u5oJa.o+48RUQto60mQMY2ASsxSbci4HvUkeUuTCIJTu0Q
sins5FQgl5VpWDsTqHZuNQzeMhns5CwYE9sUWHJYPUo5AgoJ5AAZcYLCiCQT
dWT2ZsfXf5.wP0.hdq+CVT6G5ntOLbMenm58Pu05gdqyC8TiG5u9NzascXf5
5vP0zAaqmCcTKG5sNNzcMbn652P20tgwY1Xi50PK0pgAqSCMqQCK+pMWddmz
Hpyo0WN7bkTFO3kNAktpbfwrw3wtojxUM+p7pulBUq5iTR+Al7R4DBJLY6PJ
7s5Iza0Sn2pmPK05Iz.0cjMxYj7omuhBOhMUsEgQfgQYFz9p1RKxs6QcVUWN
9tYr3snbqvZRufH5ZAQSd2GSgcaQvkChfE.Hl94Gd1S.ApAlzdwRbuXIwBrr
HSGQM0xfQCl20625CpKkhFug7qRLFNsrqDBesZ69xY.yOH0ZrRLoTap8.dyD
zXcDks..zesNYjcKPTtwUcDWhnvkPAw5Xv9sI6T5+uEvJROMC9HXTqms2a.p
nEx.e.XhG5iw5vK.lqpx2orl3EwncvZ97fgFalZOiucwXH8Uzv6BfDwc9.Z9
B.F0ogYvZenz.TuOHYK8z0Wcy26EYYNBYQlp9Dj4ppwHZIXL5lSG+b3yWgUn
H6AP74pVz3sBsgq95XQc9Eu8lR6u.F83mSxLpn.eBr2jyWFFbhmZCNaGRYSf
AmbwqHMRsCqPmavI2+0hAmBgIQaQl.CN4jkwn80yDFxm.CN4KHCNwS8v6BfD
5bCN4rkiAmR6MOatI0XtIiMs1aV.rlxITdUfzA1axHuRr2LG.y854DYuIitH
7G+D6K9b+Ga1QcPSZ8yYdimsD7wgtzSLwqKTNLVrvPLmtlFrEi+1lXM2pvdz
rkW4icogFV0MR7JY5iL8lVeRlvHZgLgQ5jOgwbPzDTztcJhnWSNsr.HgXWaC
IZYrZYh0yjLQlIVvgNkUD+JhU7LRNA7hjkx7YvHFTNSFfGAB7npIyP0iA8x8
jd+gifuaBsCnuINDfDW4HczhXrNFAAyQnwTn1Q3vk3we4LRGBlGTD67w4vYw
Fx6OkkkrehCjMyVtI26XjhOGFhFbZyvFNOoys62skaLy69IdRgLyVQqDDibC
DSdM3YByjnEFm6v4NcJ0vkyJy5I.SqyxxARyLAYjIwWYKg4Vu4qahCmGlRi2
xHTmxSNKSKrd5EXzx8.VGeu4EH9VKbvMLvqNEUtz.W+bMKKvSHfUuTK2Du.W
MSkwZY5.v0Enmv4nZ0MMRihKXSvts7qSKP9vE.H8k0aIw5hXFtT5i6OBBjyu
ET3XfP0FtxiL2THeLXn3VfgrwPgjaAERGau7rSgjwfg2hwxrQgg3poDu4gBG
CFxtIXHdDTXQhtcdoPzHnPj+sfBGAABg2.BbLiSf2h9XLZoyE1LGO2GW3Mf.
Q90KsmCILb1ovwXXC5lPgiwvFzsPbMZLxZP2ByWQiQXiNs5xlaJbLJkQ2ByW
Q3whg74lBGi.6aBDBGqNu411PznznbKLa.5OV1vYmBGiJE3sv1P3XTo.uEJ8
fix70awLQgiRkxsv5P3nlqb6CqZVaCVfjNqeRGtbI8NlhwYRmubIcz.nNcAS
5j9Icxxkz6P2xYRmsfIcd+jNdAS5CLLEMuj9XLDGdKlPHbLFhytEDHbrJum6
ky.BV5NeB5VKzJcxxYhugx550nzKKck0eVX2DX.UyD6Ua.SaBiL39zmmpDFI
xDBGsGX+iOgQ5OS4PyMOEr+xxun1gJHSJj1QnBalPkea4TUeuwqxk.JPgY+w
4nbKJdtR2pOEjlb74ICULamCJxMnBYlPEk79KASrJ87px4W5jQ6nvjASPubW
hM0iDmNiBmKgof.5N5aFHX0qzhEqpTxqZMbaZITab.7zHxtrU9JvJ7IuPXzN
.UNazCtZD3krddi.L5JJtp1V2tvnorJ6ZckYluDpLyXxTRE1VkLwSYA619pu
7TVJ6w1VcJwrkPMft9rWtQkAYPOkXueQTHnpVd3dwV.npxooS+NtoD.UTPRx
23QLpEEEp1JEI3Intq7+Vk.rcRYWgyLah.SoHf4eUUcED4sptxaUck2p5JmM
Q8sptxatJ5MWE8lqhl2Jyy2TtJB9lqh5ovE8JyUQNvQIKSWEgMo+JKbUDbY5
pHBXQLMXqKz7ve46jFzhv8HvEgKDsl6D9l6Qbi6Qxcbv05cDDyodG4XvtCtw
wHLRYGizL6ENtxQK5MGi7liQdywHu4Xj2bLxaNF4MGi7liQdywHu4Xj2bLxa
NF4MGi7liQdywH2RGinmGmJ8oCLU6DG4ejb+Gj6eDH3hCeD5E4fjS6tO73H7
DBp6VBFab9gt8PAVzNpq+V4Whncm1o2Pc2clbKNjxoTs3YH+W7YRG4J0QBJY
IO9XbnabODx2+EPoYths+znasxGfialc3bL4i9XhGwQr24seie+nV3crpLDM
S8+Nbz7ZOpbnLxssTHfYaDR0ZyD5RGcV1lcaZdngadlDqcSC0s1H8Vpiutow
9qd1QcjDjoBSUTK9nWgGcgWTT8U35nhFzmiB+h10dQwQYesL8m7vCog4D9Gz
cJe.WhTMtMc6QodwytCqPF5l3nMeJ6oiImd7oxGugm0pdhO27D2+nxSvUNxK
6j915S.itOwDA8lAUP8uD9kZmAGeL2N8U+njVNoDeKeKx+R4wbMO3wSoOElt
NH5A0e9iwIIGLYbDa6UOatw1vcIRKn1ucsrSSRrqZQa7kzqqrQ5Tjaz6Hfl0
ivrrD4E.iKYcWNKcTQcFQpQ6SkrNgwg6eL6oxMT8Cn5jlLs65lil25GXRRVX
BZCD152Dyh2DoTNo4xeSDaeSWaapZZepq8lJyEuItEuoxImqK+M4a6a5p6mr
oMwcQahhroMUYdg0xLIS6qtZxQoVlE4xe0PKd0Z56Z6Io.aeSWsTDgMis4tX
bfMnm.ax+fW0aR.r8Mcs8SBrMLijpZocy3.6e0NebffYK9ds7L9yk.MgMuIg
KT7HrQ9Ew2EuoQHi9pdQbq.OWXe.2l1jN8Rcsir4rQL755dSzalBM6d0r1e0
no+UOMVPvsYDHzECLXy0HPBZtDTRfy1aZt.OrMrhDWXrE1Fvi3j1zb0KgrhG
2ExIQjYqMAlKVOn+r8llMqAf7Y6MYCuGzE1gBoyVaBaqxoq0BGHZ1ZSylNC3
k0jLd8qVDHqdG0h73ZQcbyHNt6nMtdjFqWiYSTWVySiuDrtm1Fk7m0gL6G+W
B2ex3Fyh.6sJRb+iODEGuIINoQ.WW3ezUlydN3lKt1+hGXMxm.gBIrrFCwbD
S+M4WnzRybM+dfE2DgR7AH0kRXHNgp+l.goX02.0tMzKuK.z27F.9B.w7M4g
fpEzpzsEr+w7PDlWJNWObL4PxwywJ8Zr+4q+TVxiGC1FkGtLfJqf9c4LRGkm
sdvttZmDPiJtmxLdm6L9oSaB5qCHMLV1qKopJ3JGAX9ZbEx3HCtH..HoRSUu
.P566iQ6UrfgmwJrOBpwJzYvFwEDbUrZU4f7Vxl++7P3du+bv9Tu+b3tn6Sh
29hmwsgS4LJ1AyhkcfUYWDmYRDb.UHLeqQaoN6BiBLHHS8C27MySZR3VJVqf
MajmnR6Fq5CzMVRAMoFhnNV49hJ2CgSgXciF4iE9luQgRthp2jj6YW82GWHa
uF.C.EBy2juZDp58d+iUtMe.Ax0zo78Q3bysg7MOJJqPx2UNf3SowQRIZ+eU
h65afQIZyDeHk+vQzxtfelcdmYzNYz4PLvck9nLr1BGfgm87XRdN6emcF0Zv
ppws6ZvkBlyAQdIinTtLxuLOqRRBgBcc+PkvUvU8EWtPqRheJDez7a8H9gKT
Zztq0u071Vj53pN5vtdwxgBqEbW59rR1CHayXeWxYYBXhee7ovhxZY6TUahs
gbFwn23LA5qNDbBHviIeY+novWnK54wl3IhB+CeMX7DH.I0jXD4wwXjYrCBB
gX2Sf+wiggW.EpQOr5Gi0VJqMbOw8+KLNN4Kil5DRU9bijCn.pkuQkHJsoQb
k12cH0EA.BW0.zwI4eTZK3nIeEqHP28Skp9n5VBrrzLmPfGMFTnnPqk6vHLF
1OmcjmaqiDX8w8Zhz7zfdo83dDuMaM8AbHPeo9XBC3ma3GGRcYqJK3PeMlZy
D4mBxR79I0dvb0k79MSLui8g628O9t+SPYM7oK
-----------end_max5_patcher-----------

And this is a useful bit of “real” snare audio to test it with as well:
http://rodrigoconstanzo.com/bucket/snare%20rolls.wav

the floor is the fixed threshold. make it as high as you can (above your pianissimo attack you care about) and you’re golden.

Ok, that definitely helps with coming from “zero”, but doesn’t help the detection for faster material (e.g. with the snare rolls.wav audio file).

ok I’ll explore in more details when I have headroom in a few days…

1 Like

Ok, I did some more testing with this today.

I initially set out to do some mic correction on the Sensory Percussion mic (testing it out with a new Earthworks acquisition):

And although the results sounded great from the correction, I found that the transients got flattened a bit by the convolution.

BUT in doing so I created some fresh audio recordings to test this against and I got some nice snappy tracking going with that hardware! Obviously it makes a difference for things like this, so that’s in no small part part of the reason they can get such crazy tracking with their system.

Here’s a comparison where the first half is using the (nice sounding) audio from the Earthworks DM20, and the second half is using the raw audio from the Sensory Percussion pickup:


sensory percussion with ampslice.mp3.zip (195.7 KB)

Here are the settings used:
Screenshot 2020-04-20 at 8.01.13 pm

Really aggressive highpassfreq and fairly tight minslicelength. The rest is more-or-less my generic settings.

I may play around with the convolution a bit more to see if I can have it leave the transients in tact more, while correcting more of the body of the sound, to have a best-of-both-worlds situation, but at the moment I’m going to do some testing where I do the onset detection from the mic directly, then do all descriptor-based analysis from the corrected version.

For good measure, here’s the IR, smoothed version, inversion:
Screenshot 2020-04-20 at 8.24.22 pm

And the final final version (after running it through an apparently very ripple-y highpass):
Screenshot 2020-04-20 at 8.23.26 pm

1 Like

Morning!

I presume this is possible if the phase is all over the place, but I’m surprised.

Are you saying that you track post-convolution? I would not do that personally, since you care so much about latency… and also, since it is not dynamic, I don’t think that it will add much more than the highpass and the lowpass (in effect that is what ramps are) built in the profile of amplitude.

this is what I would do indeed. As little preprocessing as possible for stuff you don’t care about ‘qualitative’ description and then get the qualities from stuff you think sounds good (like your air mic for instance - no need for it to be the same as long as the distance between the mics stays consistent, you can compensate and bingo!)

btw if you give me that audio without the clicks, or a similarly challenging one, let’s say left is the contact and right is the good sounding one, I’ll try some settings but will go verbose with my process of finding thresholds too. It was most illuminating to @weefuzzy to see my process when he worked on simplifying the interface (leading to 2 objects now with distinct tasks)

I did all the post-processing like min phasing it and everything. I just suspect that because it sounds better (warmer and less “clanky”) that that in and of itself reduced some of the material in the high register which is what the pickup was doing well. I am just guessing though.

I don’t know why this didn’t occur to me before, but I can just use the SP pickup for the onset detection, but then use the audio from the DPA to do the analysis. So the SP will just fire the onset detection algorithm on its own. I setup a patch for this yesterday which I will test soon (a lot of work/Zoom meetings today and tomorrow sadly).

I’ve also setup a thing where I can do what I initially suggested and take the onset pre-convolution and analysis post-convolution if I’m only using the SP pickup. Handy.

Ooh definitely! I’ll bounce some audio out and post it when I have a chance today.

1 Like

this is exactly what will mess with phase. Here is an example patch that helps you see what you hear (energy smear) - now try with less radical filters this is a 15th order but that should show you that a click, the sharpest and shortest of attacks (your favourite :stuck_out_tongue: ) will have a time domain behaviour now…


----------begin_max5_patcher----------
602.3ocwVF0jZBCDG+Y7SQFdlqSHBnzmZ+bz4lNQM3kqPBSRP85M28YuIa.K
VQNpZm9Bwrrj+69K6l3qyBBWIOvzgnOi9FJH30YAAfImgf14AgUzCqKoZvsv
8zcrBop58vH+aEMUbQIy.uNs03plhBlRPqXvGoMLVcAuzvTceVM0r9ItX62U
r0Fe.DuH4S3HTRNwMrHOyMPH1AziseEeCrdxUO+Pdu.P1X5hfrVqZyKkdw67
y6j4kZlWtvhRI0DFM5OJ4ZXLD8naUda1L2inIBqJlVS2x5h.C6fwyClAM.SN
AkjKCJRZrGM.nVR7SFFSKGFSwSGS22TWwz0RglghwXL5gbLh39AFk5GblA6Q
n5mnV+rHIBUQ+AqOwrtQR9awV7bn9pcHYd7XbK6+D2Dr8V4OCabUiloFtoKd
rJkTHk8sTIKGKiSt4LdEUr8tl09iQd+jc9unoU05KW.LBMxvK6U.DuLYLbLe
XbPthyWtdtnqsAupoZiht+3lOzWTI2v5mtmvfjViERgoftFbDeYtjlAUIj7E
PUBFC3IC2CLtURy+oWRWwzY7hD1y0im7+UEmVNdgUs8HAlvPMboXnfB1yvsO
NFP2o1sAA7svx3z7amkwWKK+.p.gf8NMwedmOjHN6mhJsrQstaoZuMA86DYC
Sa3BXiqmO4m3iTswdAmKDGb2YpBmLAgaCtaRmojfjgSP7+bgiGVXxMIb1DDN
4Lx5qjn006XJcqyfD11qmkPXsHBlxE9oygoJ1Ndm+veVLjprsPFa+SixWleH
yevdn6HNkng2V8XU9sY+BrxM.hM
-----------end_max5_patcher-----------

I did suggest that a few times in the past, because it is what I do sometimes… it is very ircam-street team to do preprocessing of the signal, optimising for the task… at least this is in their old patches that I’ve learnt that long, long ago :slight_smile:

1 Like

I’ll check out the phase thing later. Just on a lunch break between Zoomeetings (ugh).

Here’s an audio example if you want to take a stab at it (would love to hear the results and see your thinking):

The left channel is the audio direct from the sensory percussion pickup and the right channel is the Earthworks DM20. Recorded at the same time and with no eq/compression/whatever.

It’s things like flams, press rolls, and faster rolls, with some ‘full kit’ playing at the end for good measure.

I think at the time I was still trying to use their onset detection algorithm anyways, so I was doing their “system” and sending MIDI over and then the onset descriptors was completely separate. So it wasn’t too worth while. The performance I got out of the last test was pretty promising though, hence being back on the audio/audio approach.

1 Like

ok, first I listen to both source:

  • the left is super noisy, super high-passed, but just very slightly ahead (I can hear it more than I can see it by the pull in the image)
  • I’m going to set a threshold that is too permissive, to find where the noise floor is. The idea is to get the noise floor to react (slow env vs fast env) when I start the play (that gives a good idea) - you will notice that it helps it become more nervous - around -50 works for me
  • then I set the minslice to something not ridiculous (like 2205 aka 20Hz) and I play with the fastrampdown to smooth the tail a bit, in conjunction with on thresh (I have the off thresh about 6dB below to start with) and I get quite good results…

My thinking: top heavy source is what I want. So nervous in, scrap the low end, and surf that peak.

Patch (dumb) and picture of settings (good) attached. Comments and questions welcome.


----------begin_max5_patcher----------
1227.3ocuWszaaiCD9r8uBAc1qiH0KqdpG189BrXOsnHfQh1lMRhpjT4AJZ+
suCeHYIW4D2J4FfXwGCG98MyPNC+55U9OvegJ889f2+4sZ0WWuZkYH8.qb8W
4WQdIujHMh4STJQKyeicJVgYP9Ce9OvciwaUkTk50FpUu99dexMUcaEqFlzn
JjaPsFsZoVcTPkG4kEc5RpdsznFe+SpvtAizQCQkejUe3dAMWY21nrnsAa7v
ow5On3.SO71.uOoWy2VuV+yl4R6rYSaYI+YAopof+b8Bv6vHrlogA2VdihVL
h21rfzNLbIncM8YfjcfPQewrK96KaYEaAHKKY4zu68w8DoxRAu3S8zdRXuC7
93IJp6GeZfNQfgFD16gft62epOnhirCGa.bsWP+hWZPvT9hK5JjrC0jR+Muq
S48r73Ka4QQAaiAK+Nj1juCcqB3PyNfan+YAB4PYA+VNogWLhuHmz5n8xbR6
x4Slu+d3QokKixs1eiSlu+tjyEKHiuwt54mJY3kjK.uShRt8ISJH4eeBiQh+
TLFekjJ3xjJcmlEQXK0RmEkZJIuVxjpoHP7UjMZpV5+KX4JFulHd8mNeUdIq
4HEhCLzEkn8YSYgheOKTloPBDFa+lfz1H2hJHJhyr3rK1MtuD5AS.SsmURqI
UVflejKoxOb2+JoB4cMj69Sp7QEu4t+4u8H0Ed+EQnN9LW7nb6yjmbzpSKOx
psVXRaAiqGYf.RZI0X2rnHXaZZVbP3Fn0trjNvqkDtWnYPXhA9P8GzZ08REQ
Q631PV.5ugRKbW9exXX8wB1AF3.UzpFtSDbvEDBLFGTGqjcvbrT5XJ2LiF+K
sjRlxMk+CDIK2ej.JVEExuQA+4TquhWPu7h2yKgRxNTxeXDIFqBYYqPuKSC7
wzqWFHbVwxeTNd+ZX.Ly4BwHO1YPRTQpUusPF8HOx1ql1w3TxzSZrCp1ZH72
cQej6dfUc2EXa3FzNxhUPS3ruuGlyTBtyjub23+141MnyujUe9alMZTO9X6g
j2Jx63l60hdCtMABag.mSt3tp4GHSEqngypUtMLLFYJ1NLX.NM8tv83WKxhl
KxRhiMHKdm9SGxz8lIxz0CMOnA2EZgV1Pilt2bgFZof1h6OwKExBvC8m5dyD
Ynnk5PP7tQ9ycy1nglsUCkkcaB0PnkBZgnQgZnYCs3eZjwEETyE4AyylbEar
9xCzbs8gK0kigACOLo68av1mLssG8CI1HMMOA0l5VsYOgT5elaDOcioKq11M
zzUPeh0IuovZeh.Rspf7psBap3WRrOuyTGlnFpHvt2.aW6RYeVxz9JlgxIRz
0XXPNPt8j1R0XCh90T47Rt3dVsF6zAkec5mgkv+vAi78EFsYvOF+QWsF44zZ
0.YghoMUTGlgQI5VoAY6BhbZ2ZL23bdBXomWMheEfdVWT+Pm8HBap54sn7HH
EgCiwYZzDlhiiLsvoQwnkFVPI1RxA5R6KfWxT1SnguppqnP+CBRACvc26cr7
G06SRf+R2LYqgk8ZWFt+ER61AVtMS15GWV2pvYAnLiuOz460sfgPmsJR8AqQ
Fm1+NTvAH3MbQ2oSXoY8x2p38Ds6dw9xtm18M9zw04EsECe0QWFeVDDVEfMs
.NCX9WMxBVy2V++P2DjPd
-----------end_max5_patcher-----------

1 Like

Interesting.

The sound is indeed noisy and highpassed, with a real high-pitched squeal, which is something I had made a thread about a while back in terms of trying to “correct” for that before doing anything else.

What I normally do is have the vanilla Max version open at the same time and massage those settings as I can see the envelope output of that and make decisions accordingly. I still haven’t gotten a solid understanding of how the fast/slow envelope times have an impact on the peaks.

So with you’re tweaking of the settings (verbose style), are you doing that blind? Just poking at the numbers and… imagining what it’s doing?

edit:
I’m now wondering what other kind of pre-processing I could do with that signal to better improv it for “just” onset detection. Obviously the bulk of it is in the high frequency range, so I may try something where I aggressively highpass and maybe even bandpass to see if that improves the results.

Would looking at something like an expander help out too? Or would that just add latency (and potentially complicate things).

Man, that’s crazy! I’m not up on phase stuff (other than knowing, much like impedance, and whether to use effect or affect, the rule of thumb is “it is always the wrong one”), but I imagine it shouldn’t be doing what it’s doing there, heh.

Ok, after a quick initial test. It seems that a hearty bump at 5k (with a shitty biquad~) improves the tracking. I’ll test it across a bunch of material to see if that holds up, but that could perhaps be useful.

It’s kind of tricky to check for this, so I moved the filtergraph~ around a bunch, cutting the frequency initially, to see where it worked the worst, and then boosted around there and roamed around to see if that helped.

Looking at spectrumdraw~ it looks like there’s a lot of energy in the 4-5k range anyways, so it could be that that’s the resonant peak of the hall sensor or whatever it is that’s going on inside the unit.

Bam!

Check this shit out:

So having a really aggressive highpassfreq, along with @tremblap’s settings, coupled with a 5k bump before hitting the onset detection is magic!

Here are the complete settings:
fastrampup 3, fastrampdown 383, offthreshold 5, onthreshold 11, floor -44, highpassfreq 2000, slowrampdown 2205, slowrampup 2205, minslicelength 1024

And here’s the audio from the DPA and the clicks:

2 Likes

I knew we’d get you there :slight_smile: This is fantastic! I hope it’ll behave with the kit around though- this is so nervous i’m afraid it’ll be trigger happy, but you might be able to adjust floor dynamically… watch this idea: if floor was taken from your bd or oh mic, which would tell you how loud the non-snare is!

1 Like