Fluid.pitch~ vs fluid.bufpitch~

So I was refactoring some code in my performance patch, trying to save some CPU here and there (fluid.pitch~ and fluid.ampslice~ are pretty expensive!) and in trying to replace a “realtime” pitch tracking section of my patch which consisted of fluid.pitch~ + fluid.ampslice~ with a JIT equivalent, I found I was getting different results.

In narrowing the patch down and simplifying things so everything is driven off the same stuff (fluid.ampslice~ in both, instead of using my vanilla Max onset detector for my JIT stuff), I find the differences are smaller, but there are still some differences.

Shouldn’t I expect the results of these to be exactly the same? (taking identical fft settings and analysis windows, taking the mean of both, etc…)

Granted, it’s subtle, generally less than +/- 10hz, but it’s still an audible difference.


----------begin_max5_patcher----------
6831.3oc6ck9iiaik+yc+WgVOymRp3k2RbWfE4.YxDfjLytY.VLHHnfJa4pz
z1Vdkj6NcFL0e6KOjToaQIKZ6JwMP6xVmO9iO93iuK9Oe6aV7PzuDjrv4+v4
mbdya9mu8MuQcH4AdS1ueyhc9+xps9IpKawpnc6B1mt3N84RC9kT0wAKc1F4
u9A+8OletMQ6S26uKPc9+bv12GjFtxO+rG7SW8T39GuONXUplBPH9RvcNPxR
p7SW4Ovvk.meN6d1ebW39sAoJRAV50rweUP4iItvnio4WIH6ngqUjRzC+iOi
VlHSB+U0cinKAxi9ud6akeb2IBInkNGBW8NG+sOFEGl9ztICLXOEhPck+AAr
IvPNC.CboSvd+G1F37PPvgjICKDrBIfPrBd3TKhK3YDW1F99fkJzH6Y9d+3h
FdwI+IzO2GKAipa6L4eXH4mH1PMc4yMZu587ke8W+W+w+sEs19Q06wpdwkfE
3KjXrnEjFDeutqs7aU+jS+3g.MsuXwch+WPoI9uOX889oowgObLM3kukjggY
fnDm1dLHZS9gyOd42dxSQwoMAyLxrFgdbWFAIdvPIQI9Kpfvpbw4TOpkysMZ
+i80+U4h2IXETfi9TJVm7+LR9nMhW7wc8vjPwTkDCtmj8vUwwfPCwjzNuPoN
c2d60A80qqlen30uIJdmuhVYSn4uO3CBpogzkCNqC2rIHNXuXH9vXCAqvFX+
XCpUrA1DaX7Ec09EcWxF6OWllBhqyiuIbav6ChSB0iSydEuYg+gCkNbU1+c9
+iH0CxqfgSP65CAKNTbv6CyuePwQ8iEHSp.VNFqYf+EF4E91cQqCh2eLrBGa
NIo5JjL9IGxDmp5wxO8KXMPBtpOXD0eHdfWPZQ+7iaiV8tf0korEQGB1Gt+P
bPhXND+zZD9h0Aa7OtM89xxigRwfsb9bo8sdxhQteQbn+1Bp+w3v0Q6kDQkt
A4gyec+jXJYkPXZ4Fi5J16enkaVvfHvjNNYhnQdL4A+XYuT1XoboMKRih1V8
TE221fMoYm9P3980PwznCcex3vGepm68gHwI202yVclj6OtWe16ELDo2KkmW
8572tMavZ0G+u3uOTH.PLOutK.AJNoVdxSIqhi1tsR6Uel22xYVKXvWE7gv0
oOodQkYFDWd3gblnEE8xqCeLHIs5wR8eLo5QRR+nFzKcniOjM.99zfcG1JZE
UufJZVWdzZYwZUNdMwahgUI9OFTLVrrLt+Hr7gaQ5FDSTbl.0vMgd0zpR25T
BW2R4ZnBMnLMzTZuyOme1r43xkse1ACJv1XAgeFwhJy6UEJ9LAS+.fgKeoqT
aYWt8PCVunQ97fyHjnHVi3Bzy+fK9r6lMXrMaFaHlfRmNesQkkYndd6WGTV+
vyF7jIwvl3i6bhOnYDezzhYCbPLnoHDrSDBzAB4s3TYQdQOjsg66ZBHUqSd9
1wljniwqx6Vx64bp1PEynlFtuPsre5k4DjWnQ8MilJXFRERowViJxahCSELK
RE4MQynBnsnBS6QjL1cfEYGLeUEYVCPqobOlBXTZzIVdwC9ayzWqPe+VT3a5
qE2Pa5.6ylNdZETzqHcBlz4G+6+ve6O+0+su8qLzpNMt9xhhnWaV1IbeXpbA
Z5YqJK285z7OvVM+SVqnIVZKiDYFiYObkPF6zXK+K+Oe627s+vW7cFxUV+xK
yTRtwTdRLkWEbjcZ2t3fuLH3v26+tf3AkRhAZFQW29MbGwTiZxvcZ3tjPATt
U1Wj8seOZCOp12b.0pDXtd5+vuYFualw6lY7ll0ZdT71ddfUchvpQZXO0ruX
dcocyf4Zf8ut7BYdmGSXYBnnMkC1U66SlMvD70DljDr0YPK9psKARKfVaLmo
BJn1AELoWPQG6GmSK+p7pDRr7VfTlig.DQwu3gr.WCFdcXF3OYnAP7rPHQCE
XK.EnqJgJRaZ7rg7GdLqM.BwLATdwM4mGv4+RLHhZF3.YpIfv1PjKpeQtg6S
OaHxpOtZafYigxDmPrwXH10zPni6+GQg6MBSx7zlLtrFDT51F43Njw1uH16J
Vt+Y1+IY5oQsl6SntupcujV.BgXO7waNwG7YFexlQlaO3ges58MyFc4Z4gWL
fYRaGCJQN29nLyG2Lp8bQIbwkRLiQHP15ksJDfVbpCUriWZM0yjxE7aMeBZp
KAQt1zIs7w.EViJ7LjJv1jHL028PaRERSGXFT.sIU.Mk4zl9tGapSysLM.MA
HrISAZTrl1RfEZTRrrFUXJWQ9HIqPEPS6QjyAZOpv3QHveqGVIc3qz5oZWqK
3RYgSnZEETuoj5GsjdCTVmdIsjMqlmFY5SgI4NXcv1od4kL2YJEWnzElGMAY
m3O7CxSUgpcV7eJ+3O7eK+LX+Z8QlDH0Uxz4KZI6Sch13rRb5DwW1zCZwfLc
FAo8lKTGwQfwgWskOkjEyWG+m5.6KKQonRN5nY.LOwD2gf5rG+ESONx12QQO
1wgaJ4CUyBP8A4dCSC1kTDL0GCWu7Pn3Y+rj65N4G5C9vwMYGu7iqoE1pfBS
K0tjHTUKuMObBqC15+wmEHChn9nONaTVXJAKEmByAeAXn3BYNavIeP1i4fLZ
DPlQmICjWeXSap3tycsYsQdvoDW6v43Z1HcFellCCi6qY968H64VB5cKxdtE
YOmnyx90sNwAOZjwZQdZWh3Yi.1fNryxNW9Oriox6tVfnqBHYtRDPrgGmgWS
NXMX8iCGiBH8BbzNfmfNE+q1AOCjYTP9bViPAs5B96NjrUH+3YmO+IgbwCha
bSbv+mCA.b9b+GRReRLUzSQ6cDqdq7A1rQeDApnt+sA6eLUniEUdewAaKtOb
keKtMn94HTD9vwCBfF7xuWG8g8YGQbKYWwK+n3zkaORSfrRtZs5t2t0k05om
4RUyWHYd0fOuc0TCCGkyVGsPt4pmDbVAlI5TOLfArQn5b8H4r5R7LISm4.SC
LxwyyzKtrMLI8xD9EP.cIhZ07WEwmeODCuLdHFq4Mrh6QwfqyjXUpLjYVX2l
IwJxTOShZ5qpn305UjBtrjVOTFzNTlo9sCRsYWmo7OTK5mHHaLTg07Pioikf
1zIlF6M2em5knb6rkaH39Jkd5D5JyTadrYxTavhTF3ls1zpo.QYpnofXWf18
bP2aVa6l01tYssalGvTyC3RVBQLjGzE6I9Ttzmr3s+2K1JPLq1lf3mcDqv3A
4PkJK6naIYc5SM8DfB4xLFC6A8vTNVUor.barNZ.xfhjU8JlYiJPqTD+4AtO
37m1d7qh9d+eH5KOt4qh1cHJwLyzjE61P5IYtxNVTNGNpvZeqVU.YIojBfbJ
ykA77vXLTlJgbw+XHNhxEc5TUIqDCAXtfzQbBl6dW0Z7PScWpBtcpCSW5wT6
1aSelNzooa8ZFV2ltzuohNNFnmSMccH7rnKQM9goUpjRcqhfsqtiAp7XhZOC
p5igp+ziJPloFz.pBMn5PCpRz.pEMrpQCpdjApHYhZRiQUodTWZPUl5Wso9U
cpe0m5UEptTipcUo5PcJiTopc0ppKAotj+FmenY.pNKPsb.bnDzWoPBm1VMl
rWaz2u7+9rI8fYdckYJqNaokwtCAAu6YG0JwuWNTNA6fL.KgYo9jXo4LlKBy
vE560phIcF.PS.XIChr0KlmWN3MWevx.rQrprkTOLmh45+Q3xxJDTnef7eJv
lvUS82d9r1qRL8qPXc71iZHd2zArWI39zQb491PcD2CZY.GyeEB3ohERRMVH
rbgM0jaPYVFVcwCBqYQLZ0r5+ZR1r4yx0TvLv1BlIduhDLWXDZEv9rymqMje
l.CwOkGdZXOBJVGGVf7.rq.0UqWG45MGr23dlVbXoF4gISgziySOQ0jDnE1b
UzE+u6rJZ+lv0k1gL5CpYjkTFfKXtw.OJGi8Dr3X2khUMyfdPFAvzb8n5ISv
TvcP23Nmt3LfgMK3P0BQ6T+3zMxfi24OBuyoTZ3XPjYzakwXFUIFydcnSbsL
UnP1fxnde9l.eoAKRJDUHZ+JjOodHDN.rKXgqwshalpPyrThJwAwUkTh5wSy
.US.PSEyZOvQ5MFaFI+qwyuU655HdS5HlSrHH2HZbF.kIt0zhvTLdxhSanC4
IicUM2UiX2oIj1lG+aAXa34e2FYHZOt+mTq3iOpN8ShBgFRgPxEfBIdi.CgW
.BDyFAAVOnsNOTHXLPH+RPgiABYW.BDxGAE5huDTHYjiSfmaBbDzGcP.rpLb
ksoGPH9KtL435vneT4jh6+9Wx70ZtYo+V2COtIb61BG08lNuRgRjYJCj4Vu6
pc5JN6CwIPnmzidXwRWPL02DegRaQJc18ByuYBkvAH4sPXHWhxwfDODlhUtH
riaG8x6F.452Hf6AH5uINDrg6DybV29GybtiaUuNnYShiNDEW3MrkXdi6+XZ
ziw9qCylLGT47U5uq5eOcZ+JSi7VcIgTEGQGXX8mYeL0ELGe2wh8x0QxPToi
jCHPWtDB83Thqq5aDD2U0qPYMFGLEFpBva.dpQ1uVkqxqfWxyEP87zeyif68
1K3pXTwKUdOL4+b0eS+DuHLU0f8x9RUH64ubHXuyO5uOw4GC1E9Pz10MUc2e
krBFTAhwHJQ0YiI4MW4fV4wZoQtHXavt5OBWOA5ngY.zyS+MwSCgZ+YT4lIt
THVcKHN1SGR.HJDv5f.RDTvJIJVkDPhaPQ7PoF9JgFd..jz9CQt3X08ee3dY
.BDTvvg4HHSSC4RjPk4XtHCr+qeQ58pGKXVFdqG+z12ZCq9s5n6Qe6W1g25f
kvjQziSrUkXc5mTQ1Q+CX4T4L85oBHt.U+mr6C2w.1UaC7iK8Df5cpVtXlEp
lLE3uKdjCTy2sa0Fe5hMx7cIaCWGD++Ji7moL1rNtT4iKTaZm+uvpExQSRTS
sFjfewDtW83vBwvtYRFdMxbHAxVLD3n4LDSRJzDFwKO2rbZIBEdoadsZIe6s
Lj9mWozLC4B9Z9MClYv0Stxi6Z8ace6WsqE47LpocoFmF2UaF3cBidTsoRqv
r7jUWjQNZO17kaOFTOvpLq00lZ7PWwrwpoSKZnb4gfWAMz3nOre1Zouz9nEx
BwWIszu5i9yWCEfDK+VOInKFizRwPPHDe4aneSbPvL1RU8lX4+zKgSpa9kuQ
98hY11m5OaMSOBfwzqMkADMRUWKiC4zKea8uGrcazGlulpXI7t54MgdpEK.n
BtYiWBBkC.dWJ.43tGBh+lnsqmM3vsXkRTghsTEx.KqSvEogFqW7hrkNC1UX
v1XeKpjQDiL3YR3byr4nfegeQk08B9b93D5co2.WHPcKbLgA3YVl0EdQEfj5
eXJfSM6a7c9oQNemL2GVXi1QomY4G3PoidM5dZ4jP+omdszV3sMchfsy5rnM
aRFt5uPnMRGxVRkOhAEYsQWVX7viHCztktXcltXHcAbElsgZk0WQ.2RWraoK
1szEqlK4uVRWrgBVVszaGVi34qRxtiFNJ4xpLIP8d9ZVj2SsV7ydsD9rh46S
iLIi6fDc7rpqXxj7OOkPGru7OnIE0Y0Befve8pHt3+58Ip3LN8I+TGoH0jmh
Re1I0+cpCF3Hk23j3KFWEHK09xC8dA1GE6HTLz+8QgqcDxTDcINgIIGCRV1K
+N1.9cnd+DDWpf9QbsVrfhVbEjCNwAhowV2TiuN44AZzQnPmqPsAHwikEf22
43Qmiv6tmg.t7WGQX+m4.MGJccEKr0ECbIXBvCAjtat4NrvLKq0CXT1hcM.l
9q0JU4jD936SL.Wy1vBUfqm6bjzG8k9nFjHzmybty3PfOefLycI0ExEikcQd
THUNP15gAO90aXv6AGQPl6cIhPZuwDgztWhHj1cLAfLqU7tYc475ixaOPvaV
2NOOodvHHbOnAgr7Mym0k4yDBYEcxCs4CqCDFcsSlRsQYZBO5Zm7MSk0ooxn
b07kXjZMBd46ON3alJ6loxtYprqVSkkFD+rIqYPmb3tt5A2JNdr0VGK9ppRR
n7tcCPpewGc.iDjZVMBUW8AQros5qtjsM7JyDSp0j89McuMSz6Ti20YFOKmd
oKBusxD40f0Jk6fcxptHASATuLuygx1vJrswK4uxLd4.1jn1dAauqy1Ss6eh
AdcuuoLmVIFt3UCJ9INvkyhXGDSsi8fIbEGNDw8dwiz1tP3AlbcS3BHsXfdj
0IGjpkELOyFzpDm7AByRccizW+BvzBhUQo.oRAx5puy5Pz6Bzkh4Yp2hrzkC
YDnLKayrDHwkJqhKHODwE3BvpwTtj4nTa0eQG5pG8+zmcHDYsEZd.ewrDHA3
inbWFUUsbHBcRk0CQLfBcotZwYLaWDi3XS0N5UvHDky+d1ALm8T4ymygpzoi
xHbBLq.GwoVt2wy62P8Nyr7Kn1HZWFIVT1UfDKSqwTYHETOSr8qqTjIyz95q
xRgEKhplfbJgo3HoPNEedJyT3Ww0YJ9XpeNb5En3uLFe.oTC876BvwTmo5.v
2Et9PjPU3rt4rcOIBRnAhmTmdcApCHS9HjXhO2ZZuz7551SXnqWvgNf6GwWu
jdyMewKo+GGEoi5mxOu97kLlh8j2knv2gIiUj4UC3NJRmxtl3nGEoOPr.bdk
.prY03le.Nz7CY9NA6gVBkqKhlUn483xXwhWe9gVttqEVxwgNpA7vqEdRs5F
FWCLAXaVa5tU2PtU2PtU2PtU2PtU2Ptkos2BUvVBUvf0OVwUacGmfskXsHqr
EY1+dNZd0yulOjsKLUjbPls0WhcarchBICiUnwFekP.yfsSzyEHs5IQWhobS
p8mnJPjUh.UHv0rPP87.QqC15+wmUaiE02KK5AqDXRicmV6vN4cMAVI9OYFy
DzCzDfPMKM.yMZwO6nUcUvMcShFg51OKmXgP.hbGcPd2gq.ZwM.y.l0Pyqd1
NNvLSwotkDA5.mvU15mmDDTPNM89wKnRaKbuD1Xf2N5bs50xTmd6bFMY.MkL
vHKRFdliFrpN9YVICHcTcJViLjCtMhNZgKpoAntPzVKfYSC6MuzFfab+m20L
w0vb2MbJG.nBuQHrg9b7VOwYkEoEvsqVpqEEpT7zMfNnVkNXlNbFZUxfNVFv
dmLroIgeg1LXaJoEKVTh56v1dksKP2aIISc6H4D1JRNgsgjtMeW+ltqGy1U1
NF281gshSSK3zFCWGauHC0QN4sTjQwDzlgcmtYUOgMXfou0gXEFgRv431lPN
ssHjSc6AYxaMHm71BxLrkfXkAcss0eLxgdFuce7ahQdi5VOuC8ZtEdbZaeGC
r0cL4ssiIukcLEeDYkQMsusbz+3FC2JNrB81vIXiXHd+tKe5tJ+poyrE2gab
Oo4t.2ZjdCWcOep.2sL3I4R6Svc1mfjeKKCdl4haNRc7bD0MR5H3lMwkzVgS
t8srh9o7SYapvlMh5aGEitUX7VPgEaE02pIFciv3sWBK1HZrMRL9VgAacDVr
AzxVDwnaBFusPXw1Qys+gw2LLcKeX3s6A6zPacacXzMSi2JGrRin0srgQsdv
QrADLwsnAqzvaeqXX9685b4Slt0KXkVek.+p+FsIA60zowrmQ9CXnf5Jit5L
XtZKPtFHHtpG.WZidp9TCgp2YI2UqogptoN3WW6uJOdGZyE05ZBDVWwmYZGV
q9SNGRqwyP6NmtRwnIOnOpxcAwPLg3I3DQhAWZsh3blqKh.7HhQYZ4oHLSe.
OtmWY09FYyuRbfTtT18PPvgu2+cAw8.MXlNcRYpvbvkWO1XZ008sGdCUbYed
74LXTMTur0kyj0Q4pqsRUW93kVJQcsTd5Zuzz0eYoqsRRWwvtAJEcUJCc5T2
kny0YM6na4B2SqUftAp9bCU445spyYPEmqipM2vUZtdpxb8Vg45s5x0Skkq+
pJWuUTtAplbCUI4LsJx0QEjq2pGW2UNttqZbcWw3Fmv6FUItVpPbCVc3ZVY3
lwHcaWPZbjChBFJJkPKUw1Fn65WyIFTa7gi81YMf1ZT6v5oYi6oPgchgIpWU
Jn2BC14.V5gWI04AmMlEFxfr.2dIc1iRahQwn84M9iER1LCXj0YHUgT0BAb7
faKTmGr3ScFVXhFKfFiEiVXBpWrnZAo2tvQr+90Q6bHlgIPW0.GFyFwX84ES
ZlTau.JJ6TgbfN.4D0CEUwnrhNjRCIOavtfgWGic9jgh5bFTBEDF2Twqiejy
UUVKHCsqmMi+fjs0WbRomPGy4fXl.Jm6TCZ0GWsMvPNF.RGk4VXvC6pLWDzZ
tQ.VL6CFw1v30WZGn4KnTnES6fqzrNvvH.0ylw5uoQgpEoASCHWjMiOYR8J1
POaDJ1jFLAHv1r2.aZRnfrITXZJnPrHMXdxUfsIULpgG1JKXPlxZZyXl2Thv
l4nkwiN5In8upcVipsUcZNsyKpiTYtvno37Jyq00NdUIQXMbShwuIpAuIFdN
dSDSeSvS8MgM3Mg7li1TkJJUeuoWtnZY9jzSbxUDqWwiKBT7qSj1pViw5pPj
QmATffL3Mg4ywaBZvahfli2DvTtUbW8rLQmnbM8Zqbj0Oq90IRaXtozF5TeS
lLRplvp572tDU6Fq7vGknKOC3R6Fs0RTQ6RrXdkAiUybvI+pglHaqFKU63DT
u6bkw6.KusbMW3jQDaMvrahUJspzuZRrH6SrvpUvv9oVhmaOT6IxGfIlNfoy
IDxnODVsZdJWuwuhgVfQvHpUMhAM6HkIcqjFBx0ZVUKtGjuiZw6PsXcnYbNz
cLNTO9FTJYVK4P0s0ARJzZQyTFRzRTvmqdZ6I.5TR9yIl3mSLoOaOP26NH26
H.2yUg9t21czaUMxsJy30Rxb1UGvjRfSi53pm1BSK4AlXJiMsD0b157xfIyS
JyomPlmRxXNoDw7jRBySLALO4AD0SzRCGVXTxU9paTgw2lcGVTMgImdxR1Sh
RNojjbRIH4XyDoSlitYRP1NOsAI93ISKURaJCFZ0cRMNsDZ7rC90RZwAQdyR
TwYgrpDlBSW8q1kWM5DObhIc3DkNNyxqlItppiNLqWrrKOMf6ZnDG7j4rZlf
fsSUSMo.mKBrbx+YLEZTB+MSTX4D6yXBznj4alHvJIsm4T3.Ip2LQb0RHOiI
OiRBuYhFqlrclShljfc8mbcmdCnQRzYL4aThycxDXiDjyH83MLsvlPBwcxMn
lI917g3spBrII51I2pJRns1aLCkDai68qMGVG4bya+Wu8+GfDPAmi
-----------end_max5_patcher-----------

a few comments:

  1. nice chorusing

  2. results would not be the same for 2 reasons:
    a. you are not analysing the same exact grain
    b. what you feed in has a sharp-ish entrance, doing some DC modulation

a+b = you will have slight differences. If you do a steady cycle in both and trigger analysis, you will have something nearer (again, the size of the grain and its offset on the cycle you analyse will change the result.

I actually plugged your bleeps in sigmund~, which is the best pitch tracker available in Max, and we get better results - because of the size of your grains, and the steepness of the attack, there are plenty of octave shifts!

There is one conceptual error in the patch: your difference is in Hz, and the worse I get is about 6, with an average of +/- 0.5. The worse case scenario I got was 6 Hz of diff, which is at that frequency (860 in this case) is 12 cents - on that one, sigmund~ was better…

It’s unclear from your wording here. Does sigmund~ provide better or results or do “we” (as in, FluCoMa) get better results?

Does it follow that the underlying algorithm is exactly the same in both? (It’s not possible to compare in a way beyond what I’ve done here given how things are implemented).

The differences are indeed subtle, but I figured it was worth posting either way.

(When I was comparing the algorithms in my main patch I was getting vastly different results (from the vanilla JIT version), so I just wrapped up fluid.pitch~ and fluid.ampslice~ in a poly~ which I mute when not needed, instead of implementing the JIT version as I originally planned.)

it depends on material and settings. On stable sinewave, it has superior results. It seems that on your material, it doesn’t.

it is the exact same code with 2 types of object.

You could post one thing that will help you and other understand: duplicate both processes, and delay a bit the analysis in both. you’ll now have 4 values!

Loudness estimation is the only almost reliable descriptor there is. From there, it’s downhill. The granular process of all these are super time dependant and the cutting edge algo do their best, but it is still a hard task for machines… and for humans to understand their own limit too.

You are now embodying the whole point of this project: you are at the cutting edge of all that DSP available to you, and you can experiment with the various ways it behaves! :heart:

Right right. That’s what I thought you meant, but it wasn’t clear from your wording.

Do you mean delay them even more? At the moment I’m delaying both processes by the analysis window (1024samps).

Yeah it’s tricky. I didn’t post any audio samples of what I’m running into this, but it’s basically comb sounds like this (though a bit distorted in my patch):

There’s some pitches that you can easily pull out, others not so much, and others yet that the algorithm catches that I don’t.

I would have posted the actual patch in context, but it’s kind of “useless” for general purposes. I do the pitch analysis, then modulo/transpose the pitches super low to feed a pool of available ‘bass’ notes, which are then driven by another part of the patch. Sounds wicked good! (just sent @jacob.hart a video snippet with other info/stuff)

I haven’t done more of this type of comparison because I haven’t been able to use/trust fluid.ampslice~ yet. For this particular idea/approach, accuracy/consistency wasn’t super important (with regards to onset detection) because I was feeding an ‘offline’ pool of notes. So my comparison here was actually “backwards”, starting from fluid.ampslice~ and working it’s way back to my JIT version.

I mean delay one of them by 1024 like you do, and the other by 1100, so you have ‘almost’ the same stuff in. check the variations.

This is where confidence is fun. You can use it to gate the values, and revert to a dead value (-1) or the centroid when it is not stable enough…