'real-time' onset detection example

Ok, based on a cool hang and chat with @tremblap this week, I’ve incorporated some of his sample-accurate funny business into the differential-based onset detection patch posted above.

The only thing that’s different now is the velocity side of things. It has a latency of 2.5ms now (vs 15ms in the previous one) thanks to the sample accurate-ness of the onset detection and envelope follower.

For some reason the first onset it reports is always wrong (it reports a dB of 0.0 (0.909091 after scaling)) no matter what the input is. I don’t know if it’s some weird signal-rate order of operations stuff, but I don’t see why/where this would be happening, and why it only happens for the first attack.

But other than that, it works pretty well.

Give it a spin and let me know what you think (and if anyone has thoughts on why the first onset is wrong, I’m all ears too):


----------begin_max5_patcher----------
3589.3oc0b08aqaaE+4b+qfvOTjL3qm32RqMEsaCX8kAzG1a8VbgrEsiZkk7
jjStoEM+suCIkjsjksksXRyBPbbHoD4uy2mCozu+galLO6KphIn+F5mP2byu
+gatwzjtgap9+alrN7KKRBKLCaRp5or4+xjo1tJUeozz7usNbC5iBuYHwLD7
IdV8P1DVt3g3zUeNWsnzNSRxLuoHoOdFmQ88YDojxnR9TD1yzEA9D8yU2fzs
qiSSTkl4muqwrsk0shqZMNxrXfE3Gox5EfcbkOuQYm8ISP+rtm+3CeP+wzwA
7UgkpWPDD9D3kvnF.Sjy39BLwS3wYBeMf4AmFujdwK4P7R7OJdKhWkFlLYZy
2bI9UQqTubBri8XZDJjxYBhOkKBnTdfgYyNCuFOTrKoGE6yCSWoQt4utD2Eo
gaJdHq7kyKmSwZnyvx.KOWvtFddOx3RxQw8xjrvRmB3EO.jvAwpAwbgzCXxD
AVhsh47qgU2GjwmSL+sT3tVwtGKYNS312+OAg6vGNubMGPMVRHLLA6Y0nkTG
IYKjukrYXEBC6THlELS.+HwRNIf.5w9.GFLoICjTJQJnhJAcew0PAXGRAXjg
aOeZs99zWCE+HUR3yufvXO8umR+mX.OGz+kbN7eAbJlnIJANRrf7lp8uIWsQ
kFgh1lGVFmkdBnSk9y38a5KHvQl9HduMQzrtnLqHb8lhSoPPIdZ.y05.XhOI
f6G3as7AM4FKe3fAnB3d48UpzWPeWMSGgkB1obA3SOV7MXByQrd14E62eEpx
qPcEruYxx3D0ip7BsT7to3lIga1rWy2r2knoU+Rl4F4Osoo3TaSdMMkqdLt9
5oMsFlCzoRfHsM2rRm7kFhn91jEoxS2FaVJ1FAtV0RxveRCWqJ1DtvdwQEal
Abk5avj87DA9fzNfM5XAXC8ly71QvAYfUIYK9UUz9K6IYfhcbJnfWnRKsJ26
2cjZY31jxOuLKsrH92LqBr1oWO8urZU1amZbXfv2mGqkWqFxp73nrT8hnE2P
2b8zAlSMwLo+bGXLi.h7rmKFjS.xxQ5r..41h4g4Zl07D0dZbfjeVVR6tZtt
D0xxpt2Dml1gJVls43clGu5gSbsyyfNWep6somhOuM016mA4hxOWD9XapcYX
RRkhb6a+WBSiWCImUFaYADulNUog.PenXQdVRRK7Z64wd5IBjyWndJNp7AyD
suv.L73M0BQSZ3xQwqTEksaqLbUQ6VJJe1Rz2qosyqzi+boZ8lD.EsGPqr12
WoceSdsZuiouEfFndjS20eKw0u4eCBQFEvnuc+A0mWeowqOFazAEBaHfz8Ea
qu8cUUNlAwiaT7f3D6hfdzVOlGy85VSNL2yeHFb9k+LxpubKvku6q+T9mR+w
v7v0MABbKig8zR.HXseO1ND8uwoKxUqASJn6QfgIzes4R1Mjknas2cz2bOxC
8UeExlY0swo36P2CW3c+tYvkUCCZwd0k+g9OpjBEZu6x2h7tC08Jp9xGQ21r
jta+axmJ0eBTELL356jYt+5I0jEi2zJayWoXVKOrs8xFm1TxjyIYYx1f500W
5ghOdWp3SqUvwhp50mV.y7PIFLrugZHOO033JSd8SMX8w5246IIN8XFcLqWc
+8SGJx1lunlpVo1hZuxAinkwoMdh+ol3dziaPbgKcMfG3ZPbz0vNRiJJtTyt
luZQVhMBoeBbQDLcuOz1Cr2E6s3BCVcQ1ZsV7gopmj8DRk9nJAb5W2qlLrHa
aZ49QV2WZs1n3If3DCrb64WE4JOP2LkdYAt50Sfq7INDqKgH.tZrR.sEMVkj
WKrxbIVuU6SBEFEtoTEgVlmsF8ieO5+.1xmCoie2opNi0ErutBTcKutu0twd
AH2xwLYTD.rSI.EKBSTnxLDjxw5vDvudDJW6n7RY7BClgTTOjb3YhYwA7dN0
oPWk.qdjJtDBADoqtGJKGoE6WDW9LJxTVhXcqoHctT8RQnmH4c.2lL00IWzY
CIvDSFUL430GBbIMwTEJfVT.hA.raYJ.sDhVO6IfVEoVD97kRNvbiBCmi6T2
p.tiHETgKIE57Y0gL.5FgOlECVGRBgQFgBKKCW7qEWrW.rwKf.rLh6TBi.gi
TPntUAYwCqiKAJ.jj4JU9k6JPNSyeY.hIcqfK2yQPlHm3thRUhHmxjOjtk1I
Ffq.BySRHBtPiPmUAJ7wKGcbpaq+V4I2KUguM.3WOnJeyPZNLCJvZVgprw59
4gN3+ZVv9QvfwmA5zdgNsG2XGuBySq98pvu81c9MRymEbvFoYS7i5MZ8w5ZE
zXUQ2g0jI51Zmrgq2jDWtEB8BR9WagEO6tlfshSiTFX54PaYWzJnWKbGsPi8
WuZOKk1+vvgrUbzAl9ZTf6VRFGR2fAEud658nWOAwKEmhVrMOWWBlS4bfdtv
E09D8oA7f.Q0daF36pfAbZbQgyKxRzlQRyhKfHgRxxtX+gbrmEa83NT3pH.H
NMUvvsQwYn3SsmbUULQWIRu.hf3AVWzLSevGO8fzftNPI8bIndHdCLDsNOjl
W1iJz+7eborx5P6w.ujy8j9l.Ys6KuKXhANLllsoazV9VhVN4ZrjQY3Y1SZg
znpJB7BZNiM58kj6jcgjHNlwrSe1adU1axhj3H0KPhq.x73StNG.zdih3baR
OcvgJ5coDrWg8tuhPoKTu4iqSBSdj.tN2oTb3zJ76.Z0h7rhhWPD90QkHTC0
.qIV6r334ny0XvURfdcNsi+kWFiNW0IiwSv2YnBG3pyLEg7NPV5aeAocJdMD
IF2F4UeGqJF2UDI16.hT4C4phGLlwwixHduzJLULi6HK4AukTKyJ77FZzoB1
Mftykjn2fO13m7PV0WBjcBD8UIGw+kJUkGBA4WUR3vlhBGtqrvOFlrERZzTn
TUDZ9yHHDv0E2sqnowovDnqarYQO6SoeJ86rxhn6qtbKbVuUWc0urPoKpXZD
BlzTHlzxs4on4J8NNMWsLKWA+Qe6pxzRO3Ugwo2BywTD.r6f6ecwJuGoOHF0
WWE.VDpuecud8lVifENb05paq2NaUZTQGveqotI20px32t6ayUkOofUMjCsF
A5jng6mI8H3F1WVSUH6oGhW7.zdc0TgzJSRZuJ0qun+t99UEw98.ocC.xp+c
Yt5+tUkt3YHWzxrkKQaxhgDR0W1O7a8mKu7prXZKbaeJDbp8zC4M9bbvBGlM
+IqDVkrXsHikqTQS2eeNtHhD2Z0vX7.hfiwBHV6jjyU1LQuTHQOGQ6K0JYS0
zlN1Jqcritp83CElup.Uqha71LCUoC.doQMJmL36UzYHJPjUsyneMFRd6HBY
zCSvXucK2rqSdMefGcdaT7UwUtJtvwra+HXjAL5EEuboRWSJfrgbXo77raiA
Ex0m5i883LbPszszYaiwqu1+GGUT0THHH+tv+r0DevQLFveGDwXXYVz7WFSR
rGtgILeGsgIAh++lBUKG8JRgjuGnPyKFE8gP763AkJcE8wI4YXVDsOlZVxU2
iFVEQ6fiDFo0YB6XmGLfWhvGgwL3Yx2dSN4L0Y4rNNxDGYE3HAlyyjTHN7gJ
0X6638vAiicepMv1sP9vtZl+r7H6CVf2nftlWeVhLdHPmHBlw7kLhzy9iwYn
u7H88mCP7ZMnloFOtoVNfoV63puo160ep0O7Zmk8QEPXKcqaOOXFt6CZWOCz
4DTwPIn3+TlZB6TDzJYdpfNyGD54r.6O9TvGlPbj9btjAeP5CA6NOsW+TM.q
mAtXhzO7sm2iPqwz5D.eXNMia4.yD8b3tEsYXYX0QdRv8s1P4yvATPqqxFJN
PuM3zy0Gl6MiaKHQ0Oxo0J88zmCnIryPS3GiCgeM3PmUYVbIKm9YQPtNZxIC
q8w6C49ToVKk5c7FaOdaG1oCPGYHlpFq.H1bnrY5ylMX8usAMqfTO84.vcNi
J3fiqqG3KHLgGKf4wvLlAkdPrTdRfEDHo9DSSDIixv.aQR3RwoYx91GxVPWi
J7D5qfWuGjTaIu6ouQRFzuLMNqHrjbBadBN34Nfx.DynlG+AtG32FnB9bISn
EQ0jFgOkP7v.+CXotP2qyhp+UNU9dbkOjDOpYLialFh8I+waeRDXBIQpSmPJ
v9zJsTsdAgSNReiDbB4kK55nn3F1TieMhHeHgcIeyb.xGhUTxa1xwjIBdHoz
O5YZnZVis1AT4HiIcDV45WY22DKhOVdvQJsRU+vtFKM.O.1pCLiEHLPif4yf
7Qa8Xiw5umwBLugjH5IAFdH.iXW9XtPGNtutx41eHSOQetnpWmCb0ob85Wes
N1FFd80HAyn5e39RASv70N0F53z4ie3Q1fHNrrG8LRW60hHFbJ6ithmhg3Xv
LUiVLaPlhIt.TCIhSlKjm8F9D45bSF0BGOjR0zAcuSV4j2nPkk1C21aanx3g
jwQfvAhtMU767piiepFBnNLXO6FG04cgjdR57NPpy6+nCe2Gc726QcemGYde
GYe2uzYypZ1Vt0geQz7NZo9sJTaJP3hEpzxV5K9ZANPNgfE5uIAG3dr1xesd
KErKjgJI1cNYz6bnYjeNNUSYTmqplSq3V5i5P2WqMSVCq935rc1m61Bv6cF.
6Gxs.KiPA+k5EBUpqDj9afk.N10Kq0phhv5G879WXyWsLNIoY4s+aeq58sbx
p7vn3cGTjJzfa3cl2wfS68a38eMPYtLR8kAVBA5vzd+1gWV8UQB7vAFYDZkL
h9aPS3NWUX5ppWXTx8dqGsIOaSVdyaNqYPhD0ieaYVCPqyts4E7kqjpZqcLL
t39OFhCP5xrVXfXkmwGCCnRzfqVxxZjom2tYZT7g+3C+OZKcmv.
-----------end_max5_patcher-----------