Although I still haven’t made sense of fluid.ampslice~
, it occurred to me that using the gate
output nature of it might make it useful for detecting what a peak was within that time.
So using a vanilla 1->0 crossing would be no good as that could potentially happen 100+ ms after the onset, since the 1->0 crossing happens only when the threshold criteria becomes false, and has nothing to do with when a peak might have happened.
I then thought I could use the code from the previous onset detection algorithm to trigger the amplitude measurement aspect of the previous abstraction:
----------begin_max5_patcher----------
4382.3oc68z0bipbkO64WQW5gT1UoQa+c2rISpI6to17PRU4g7VlsbgEHaxU
BzBHOiu255e66o6FPfDfPRf8jMiqw1xcCz84zmu+f4W9vMydH4agYyP+6n+N
5la9kObyM1gLCbSweeyrM9ea4Z+L6kMKN7qIO7OlM2MUd32xsCuEkrZUVXd4
Dw61jrKecXt8tHEi5FJ+ksgtkb1Lz+SwTa8yW9TT7i2mFtL2MKQ4s.OGI0rE
JsTHwXgV3wTh4Ht1LCkt.W8.hBraDXy8QuZ6hn3xMAt9JElV.iE.4MyVEsN7
4vzrnj3Za4al4ucasguo1sXvL+iD6CROuZnnX2P3pgRCeNp79kUi5mBvaN.r
6RsXiYeSxms+wjDDlFuKxtUbC9qenbKYOMh82Dls0eo6lMGZkSuGCJrHPBla
9Eu.oww6wZvo8iqSV9SgA02xyR1FFGEuMMLKLN2OuXuWMcP3J+cqyueURbdV
zOa2AD3rns4WUrCacRCLX29+gzH+0U.vioQAIwlMQiSByvkKGPcHrvlnNvXu
hX+ssby.cAfV5XxL.H2k8fep4f5g01UfVNYdRx5lSUceqCWkWL81n33Cvh4I
a6dxznGepm68gDXxM88rsyjc+tX2r2CzD42m4+bSrct+50ErrMe7eyONZied
Xdj6HfhqlLL1G.zmxVllrdcC30MyysLS.PiuL7qQA4OYWn5DCvkGssjHZV0o
bPzigY4MGK2+wrlijk+hCoWancOTvCeed3lsqAnn4EzPnVcF15B2ZL9AB4Vl
rYCP4WwNVWR2eLNC3XyP4O4miLzSYOkj+JJ2+mrCFhLGDnLeXiEBBEsC8LP5
kjhxSP9OmDEf.jNHpCEkksKLaQ8kYcTb3xjcw10hUahlBTw0loEImThkUmwr
rHZqT.tpFmxABLoyZtR6EZRJG+W+vGJ+v7KDq1P0wApORCAdxflJQ5VQxITl
zoBErCg.5MTDtjv0RMQxwR5bjVbnFkCQRJu2arzGQjKD0DYHnFF1QoVnEJFV
wYbrlhYD.s3sPzOxQi6D4PeaPN9ANo3nrnGeNqa7DsWRn4CCWwD64uzpSQ4n
IuIHGGzL6REZTxcHUKDJhGvfnnZAQX3NXXK7h6FFYcybTahRAq0EWaePwAge
qKNo852MRG6PvtEfLy2NhJKYW5xxS4xyDDoAz.ZpxihqL24uumxFAf8fNnN6
cQwC+j6BivmIaWT9vO4tf04lnXvRaTmYLDI3dmQW26mmmF8vtb2YWcitOKiC
.KUevecgp+JSGaw1gOreyY+oCGcEd27wW62ulNsk8XILfzoXX5976g5QsJrY
7ELOFUiwvHdRswwGBg2mmOBbqt9PqsOqav93ggxVGED9JR.6Lr3c.Ywz7EBi
NckGwyCr+wfrz39vUbUq3J1aEthyIX6OdKQWLm1pVQWDLsW7k9cBe4mmD7vq
mYjEFNoCEvEJvhGJu.Ovk8hFjshFHiG7BWSzlcadE8QEdxfZFHcQxDdZIHgg
PMbK8FSENqcIKiGXuE8TzVy0LUfLwYiuf0KbR5UB5+BE7HOtSUizg0DVtBlP
7inG8inG8inGcgQOBDTjGlFFf72EDkf.oYcF8G5k5HmmMdOTO7BlB6o.G5JL
dTRK8ZsKu3daBwQeHHGdIJd7QKzB2aMgxfSNElP8tiIbZCQK2kmrZ03iNJxt
RA9PcJ7g3cGevyeBkjBZ1Pfqj.SzWSRgQdBjDVypgQDAwzVhDJgYvPDp9Tnn
28nnlid.s5Bi70C9wOZh90p0I9CHVgNajAGrDZMSKELgjyElXE5Hq5KbXL92
KgadUZ3+6tv3kuLUQblhs3IBP1vwdXNkIzLOMmoMtacZL06NIkSeEnEFrxF8
YG6GG8Yv1NvRnrvJ1OzmA6URVm73K04NuPzZPzRiBe+zWFJgHQKWPodRkXen
RXR1ovuD06M9coe1R+fvWuPL0AN+zEVxYBOkADbBLix3685ifwmDKIdSBes8
oNULhEXfpvXehfY2MDi6HZ1sY2RuQ096RzTA6zfwS5yFO0oUMUHquiRIRAUi
GYgtokzmF0vwmcBQ522f29TjXNcGVZA3GcgKAcAotKAuvSKobIl6wwbBmO23
fGVQnXkVCnUllZGhZR4HQq0JpPIAQSKlpDdX3uGDjQDm.xLeIIZAC18LKjYF
g4g0bLLnCV4DLiwvBJUoDpIEv3CLqVFKK9mqiL9POxT8CY3409wDteoiz986
tShV1v8v7P9mIHanhE33+EMQn+7F+snOJwKPt+QVLlE7oygakFb3F7PRyAwk
LNa.olh0dp7DiGf+ned3qHJhzN7ROQ1IlOr7THrPoB7VTJAsEz8FbH75C9o5
oN4LgAOF95YB6kgTv96dKzWWn4ZsPe68bWwl5bwUUfemIcdyvnzCwdKm0Dhp
WflN0G1KeBNwBmfLtVdPC.sGHk2S4wKS9rPzKLSl5C5Ik.ujwtEIa8Sfq0SN
At+SSvAsi3Vn4KL0tRYPuLvqp2ruJUSMsM7TgKqCPlOXw3UQJc9P30EZfIG9
R4AF0XJz.poEF3KnJhGmRXZopnhU5uzClbN+fv09u7JHABa9dBD.vJRAOeAQ
fEJlB7QxI0S2uFNxjW9AEwDNXWpybuQzvFSU2HZWtmW+fMdxK1jr7DSwpm85
EaYyoo+YtBHtU4A8pqi3M0v+igwuh9b4gNhnpJjhwu.TZy.GBs2B5i2N7++m
qFkfrsKfSkVpHEUgMSVVFOWkPJ9Q6L8iBR4GEjxIxpdPXsZ7p+jFzfP928W.
xKKqYvue10kYAkKQcDWOcVjaNl3fHn2FO1g1HNn.q2AyrKHTANn6OEAJ+ReA
43WtENku629kzuD+W8S82TYHvslZz0FsPXo9DwcIluihWlFZhdO5S1fR8uUc
K6ujUnaKZKke2mPXzu42fbNWcaTL4Nzmfa7tewdw4EWFLh6ty+UyuBWmEhp8
T98H7cnCuihO7QzsUao6p+P9Rt4mvYFAt3xmjcs+sydaRyYT7E25RClxhtOm
U8lMytSY0aCt.fv9PF3AAs7hN76j8dz4UqESRdjjCMppSXKtPF3dP1SfcqTa
DDkaNTd3wlgyddserOH0WT3WaVGT0acfjuhBieNbMnzub11J2o1IpZifh6wM
1lyLVUcXGAHrlsWulmZPZIFMiy6BdWY5k1wEdA+uuT3kO4v6sFcSH+.+s4gl
xSJYC5u9GP+MPl9Cfi42M6bAVkxJUTaJk6CCodQeKVy74FZeos3M1zi.xV5u
NzznzfqGa7WCJvCPoFEliyguS3olQNFc3pFqtN6EroGzCWC6STXT9SlZbD.Z
TRJxP5uLJ+ETfM7Dl1FGbS03SUqXD14hQXfhDqe3lfNqkDJVhEEgjgPIG143
M3G7lbbhMdT.tHCHC.vtg3.zJvp8juB3pfvk9uLNnChvxUHTjEhChTgmnOjA
SN4HCimsFiGpdMBrZsObkAH+7b+k+T1HoOfXEBJU7EDplIjdLVQrJ7j8whvd
CXQV9zlnb.C.ta9XX5HAvfBASkvInb32BBU5IX1ZiSf6CdopoN1T4H5YFKp5
8tdqx+3Nk8TuEdTNVQoRgz.p8GEJBc5AUxHCpROWMself5jenlBPRHxT7r4U
B2aGzYcFq44EeO.3mB143AtaiqB33I5f31axyK.9aT6cmg8YtbkoEjixU1wU
cWawEn8Pk1nVMsxKQ2Vpi07tZIJeGX40s3EFwqjE2UYqUUc2gGQAYm0N3LDu
0cyB2Fl1kxEsQL2gVCQD8I5izKpdD5D3tvaEsFaM70WAykhhQK2klZhDSeZF
t.iAbu3r.iATGloNOcuVCL8lF4+PVxZinj3jnLvXn0IIijBQSygakbxVvobB
lpzLy6AFivSYul.PmdOBOnNqOG+9jkQLA6QkTrl6IwdlNwnnif6PthBO4.UQ
QQC78fmdIOGh9u9OGoiRf214rG1T5+JWM+6xAemGhSdN21Eu0H8aUUyJ0QNG
OiW8AmQx3KwIsl.dkxNWm4iUN0R95x9nmRCyd5UjIw7uGueMZKi8DlbQO3Jv
i5o9EFQ8dgXTRTe4KGA5wBI523CFt224j8zoHSiAF+2gwgo9f1ghvI3WEPA+
8gT3Y+06.KNrNYCtQ9vKH5Bwlr616vcTLr.lXNX2zK9R7Wh+riTD8oha2ANa
1Y7L+aKCMtiFGXdq2ECByx2kFidHzD0xGBWkjFB+x73JTSat3G8ihuEVi4H.
vtCd9kt49IyqIuvx6q..V5addGd+lDeffMNb2lHiXRIRXbP1A.+sVituqQTU
tc+mdHL+qgvtFL.y.AFKvfmmUuJ7.aScaAj80mhV9DLdoe3fMIqW2bWZ1eA+
GlmWgn9OAn1s.PV7mUMhXQiwf1l.92Xus+zO2tgfpwyPvBW9aipW3JXGaBvZ
kI+8RfnyMpBZwRRF2oRANsdLxZhjjmujxJWtlOP2uDtVLmBxMwfuW7pB9g1u
+WsWvexIGeVjBZ+zGM8xoCsZU1r.UvC.FBgpXN4vmKvylhEyw1Y4u5WkdsLl
PZoULtvClAbPzzBHvcmdqm72MGbdFDx.B8BhVsJz3PC.5no1OPNwE.LNUuPe
3KbLU+w.6ch6GjF+d7JYyvMqUZojBF23BIQukulm2kherOslIg0gtNLwmEHs
iR3oWi2oeckw0Zo67nClAuRCXgL0r99VAZHMj0Eucz5AreZjR5oc6.qD+D6F
QW6FxTranmhnf08Y00zxVEOuMQAViaJnqkfPGCeDnnQSqhQKCD6b3ni.nyNE
nSdSAcospfoFQrMMQPw6cBhxEfFv1rx+ZDPNmhmgJOGxz1AYg.6dcyXewgnw
BO2WJk480.1oF53IGAnibBni30sHgw+nWncEDMPA.fszbGUUDLiYCKaKyckn
AEanRp6RznT.1E3w.qmnblsTWDXhxCvBZghKMmhFTiTynTLg6YJy8wPr0Aap
NZoY02i6bxPv4rQPMrZHrv5qmEVgsQ8QQjKTJIQyJ3RM7ETIoi4tRfSpNeRW
6Kqltib43tzj1WZ7UszB7.VZaX1tZpGwP.x2LyTDCQfM8Ma6vGh5Q6gE4ZWI
0PWoQmXaPKMuIR+.QCLrk8mSwG6GoTufbTKvc7EN1bub4PfpwP9KeHZWOfRp
c7mw3Wrx7JEgP4XJy91Bi4I6XtQmPXP.hZJj0xoCfwuTf70sRCQur2XHYkOT
8xWqrCl5Jc78JrQpc5YOqw9ZSKebP8ETXnvwScs3.x.HfFAif7jt+GQgnLkI
X8xqovCmil4ZArgXJvAD0i4apnKdiSGhtyxX1b8qDYHJvHmP.rBTVINnVXY5
ELyWBsRxkbswb2gdcvTKTfehLpRxJyzroUnOVi3wW4XKicPnIJY.5oZC7c80
U2yHLtFPnZpG3BbQg0RbEk3wSM1Z1nxAaO80JL1tTjAsTzqcoFhpLqRyqFnF
jPnoINJW0Fm3MDZd72i6b5aka8tZc6s0s9JeWGBE0QYG4f1Y2rHGzF6GzB6G
295c255G1151VV209tGjQlprLsw+axp1rsrwvahALIvxd7beTrYuG1cVGJPI
MZxLRwryKOX2Khze4xv37FDsZyU.GVThz7IE1SaTyWinbdwokISiG1Yxy1.6
9nRgt0Oca.v0JAm1A4FaIyK.Yp0zRFvhvseBXZDjwdasILKyurqgFuyhUQqW
WAP0ekKTlNwYOl5GDU6UXtC9IUmIVM9ya8Sj589u81nk2FHlAvbya8SGeak2
E0CS7rm8rhydymfgHGbW9wOV7VBPUqU22llrMIs50kvBvmfxqeWdREfV04rk
c5X6GeM4NF1oX8RHe.TW1yLNPVgshi4.Ly7FSJqb+s8sYpmyYP10e1OOA8mM
uXDlcIquSHWG+20xG90O7+YSnTgJ
-----------end_max5_patcher-----------
Unfortunately that’s not possible with fluid.ampslice~
since the output of the envelope followers is not available, and that’s what’s being used here to determine when a peak happens.
Now, I can just run the first bit of this code in parallel with fluid.ampslice~
, and use a 0->1 transition to trigger the minmax~
in the same way, but it’s a bit of duplicate code, and quite possibly not the best way to go about it.
This would also be quite fast as the code in question adds a latency of 110samples (2.5ms) to tell what the amplitude has been in that window
I also thought about using fluid.loudness~
, or even better fluid.bufloudness~
but with the former I don’t think it’s possible to accurately say that the onset detected by fluid.ampslice~
lines up with the current analysis frame of fluid.loudness~
. With fluid.bufloudness~
it would be possible to analyze the precise frame in question, but that can then come with an overhead of up to 500ms(!).
SO
Is there a way to tell the amplitude of an onset within the fluid.verse~
in a fast and sample accurate manner? (Or is there the possibility for this coming in the future).