Making sense of fluid.ampslice~

What will happen when it is fixed?! My guess is that the weird behaviour on quiet stuff is the object’s inability to deal with digital silencio.

That is an interesting question. @groma and @weefuzzy might have different answers to the suggestion that there is a @vintage attribute :wink:

1 Like

Would a @vintage flag just mean “does not work with digital silence?”

I’m mainly interested in having a better way to understand and set parameters, since that’s the most apparent problem for me. If I set the Max-land version and the fluid. version to the same parameters, I don’t get the same results (due to digital silence), which is where I’m stuck on trying to understand things since I can monitor thresholds and such in Max-land more easily.

So I’m curious how this will be handled/possible (like if you will show the internal signals via an output(s) or if you will have a Max-land patch next to it which shows the same numbers so you can tweak your settings). A tricky interface problem to solve.

A little bit of a comment off this post here, since it’s relevant here.

I can only assume (hope!) that something similar is planned for this object, as among all of them it’s still the most obtuse to tweak for me.

As a point of comparison, yesterday I was tweaking some thresholds in my performance patch since I’m using a different bass drum for the trigger here for rehearsals, and being able to see all of this was invaluable:

I shudder to think how long it would have taken me to find the appropriate setting changes in fluid.ampslice~. I literally would have been turning knobs randomly hoping for it to work better.

1 Like

Jacob’s thing applies to all buf slicers, including the bufampslice. I guess you mean the RT version though? What for you would be a useful aid for RT slicers (beyond seeing feature curve, which we’ve just discussed in another thread)?

Meanwhile, @tremblap has been doing some detective work on this object to try and find out why it doesn’t behave like the Max prototype, and the team has also been discussing the general scheme it uses to see if we can make it less gnarly. So, besides visual aids, it should soon be plain-old better behaved (which will make life easier too, we hope).

2 Likes

Definitely talking about the realtime one. The offline ones have Reaper, and the @leafcutterjohn (and future @jacob.hart) version, but this one is enigmatic.

So having the “raw” curves output will go a long way, and would just need the obvious things there (differential, the curve from each envelope follower etc…), as well as having a clear signal path and labelled topology.

But if we’re going “all out”, having an interactive thing would be very useful:

(not sure if the discourse auto-embed takes the starting time, but at 7:31 is what I’m mainly talking about)

Where you can set a base noise floor, as well as thresholds (as relative to the visual envelope following) in a meaningfully interactive way. You can also see the note onsets/offsets as they related to the incoming signal.

That would not only take the guesswork out of the current setup, but also let you arrive at more meaningful settings (given the incoming material type), as being able to see the curves is still abstracted from the results that the algorithm produces.

(this could also end up being really crazy if you incorporate the greedy/pre/post stuff it can do, so that would be great for getting into that too, but I’m mainly concerned with the vanilla implementation(ability))

//////////////////////////////////////////////////////////////////////////////////////////////////

Having parity with the Max version would be nice too, even if it ends up not being possible if you implement things that work “better” than the vanilla Max one (and have an easier system to find solidly working settings).

//////////////////////////////////////////////////////////////////////////////////////////////////

Lastly, this relates a bit to the discussion in this thread, but it would be great to have some kind of control over how the algorithm works in a “real-world” context, specifically as it relates to “rolls”.

Most of the reading I’ve done around onset detection algorithms tend to have a processing fork that deals with behavioral edge cases like “rolls”.

I can smell @tremblap’s “you can code it yourself” coming a mile away, but this seems like that kind of thing that is natively useful to an object that detects onsets (just like the greedy/pre/post stuff is possible if one “codes it oneself”, but it’s integral enough to be incorporated into the actual object).

I don’t know enough, dsp wise (although also in general!), to know what that would mean in context, but it’s something I was pushing up against in the vanilla Max version (in this thread).

Just a thought.

1 Like

Indeed this is the whole point of this project: allowing you do be able to do it. The idea bounced here with curve output and segmentation tools of that curve is a good step forward allowing techno-fluent composers like you to code whatever custom tool you need.

As @weefuzzy said, I’m working on this now. The plan is to give you the settings needed - but since Pd SC and Max all have different views of what an exponential slide interface should be, some translation between values will be needed. I plan to give you a rule of thumb, since I fight to get it right on similar grounds here…

Stay tuned!

today’s xkcd is very appropriate: https://xkcd.com/2224/

I’ll do some testing once the object is updated to see how fast I can get it, but I’ve never been able to get the Max (or fluid.) version to work on fast drum hits.

My concern in mentioning that, same goes for the other thread, is that it wouldn’t be possible to code in the fluid. environment at all if the optimizations occurred within the algorithm (because the object/algorithm is coded as a black box), but in looking at my older post on the topic, the ‘roll detection’ appears to happen after the onset detection but before the spectral analysis:

Specifically this diagram:


My original thoughts in the thread about specificity are that sometimes it will not be possible to “code it ourselves” if the algorithms don’t allow for procedural and content-aware variations (within the algorithm).

//////////////////////////////////////////////////////////////////////////////////////////////////

For example, to brainstorm, fluid.ampslice~ could output something saying that the @minslicelength is in effect, but another onset(s) has arrived, allowing for a forked treatment (different thresholds and whatnot) of what has arrived in that time since something within a roll, or very fast hits, may require different thresholding than an attack in open air.

Granted, some of that can happen outside the object, by just setting the @minslicelength to zero and then having a manual process fork sending but it can get real sloppy real quick, as well as involving double processing potentially.

That’s just a quick brainstorm, but it doesn’t seem crazy to me to having a lockout just be a conditional state, rather than an absolute one.

edit:
So in thinking about that last example, I could have two separate fluid.ampslice~ running, and then do some external logic to compute a lockout flag (i.e. if onsets arrive >50ms use the output from the “slow” fluid.ampslice~, and if they arrive <50ms use the output from the “fast” fluid.ampslice~, but then it’s a lot of wasted cpu on the “fast” one, as well as the risk of missing onsets between the transitions because even the “fast” one would likely have to have a small lockout, which could happen during a transition).

So if as part of the future “curves” output (or whatever it would be (signal rate or Max? (timing/synchronicity?))), if there could be a flag that says whether the lockout for @minslicelength is active, and if so, then a feedback loop can be programmed which sets different/new @thresh values (if it is tight/accurate enough to do so). I don’t know how the internal envelope followers respond to dynamically changed thresholds (do they zero out/reset, do they just morph, etc…), so that may not even be viable.

But again, this is something that is not really possible (to easily) “code oneself”.

The diagram is unfortunately unclear; that box of things is the spectral analysis (FFT->Mel bands etc). fluid.onsetslice is basically 1110->1130->1140 (i.e. we don’t reduce to Mel bands, and we have a choice of ways of doing 1130).

ISTM, this is a very strong argument for the decoupling we’re thinking about in the future. ‘peak-picking’ becomes its own object, and that frees us and you up to play with onset function in different ways, and to use things like peak-picking on different kinds of curve (e.g. pitch envelopes, or indeed, mel bands).

1 Like

In the scheme above this would be FFT-rate (i.e. updating once per hop), so there wouldn’t be much point using a full signal for it. It is a problem with Max that there is no simple way of getting very strong timing at arbitary slower rates. Framelib is, as far as I know, the only thing that can do this. In fact, if there were a Framelib melbands object, one could experiment with that scheme quite simply.

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