Is it possible for Automation to have priority over notes ?

Learn about building and using Max for Live devices.
Post Reply
chapelier fou
Posts: 6002
Joined: Mon May 15, 2006 12:15 pm

Is it possible for Automation to have priority over notes ?

Post by chapelier fou » Sat Apr 17, 2021 12:45 pm

This is a general question, but I have precisely a problem with a device I'm working on.
I noticed that anything triggered in a M4L device via Live Automation always happens "after" incoming midi notes.
Current example : a note probability device. Simple idea, you control the % of chance that an incoming note on get through the device. If you edit the % automation lane, a value entered a the "same time" of a note is effective only after the note, which makes it harder to edit on clip automation lane, because you have to draw everything a bit early.
Is there a way to avoid this ? Tried to "deferlow" incoming notes but it doesn't work.

Here's an example :
<pre><code>
----------begin_max5_patcher----------
1491.3ocyZszaaiCD9r8uBAg8150fuDkbwhEXydnXOroEE8VQQfrLsCSjkLj
nSS2h9ee4CIa4HKI5H5f8hTHEMm4adwYFleLch+x7mYk9duy6KdSl7ioSlnm
RMwjpwS72F+bRZbodY9Yruku7A+YlOIXOKzSK73d75Yy1ukmkxD5eA73j46E
0yhplcWrH4dd1l6JXIBCePwQyAy7v.j5EZw7.4Svbf2Wq9M7UZRJYieiVSRy
VK99NlYS74YB+YlWdeUsleNcp5wrwhykW.JgcixHJQixEAZTB0O6.kvEcByk
wYabJ.2DKXmEgnWKBofg0ivnNQnSQWx8R4E6Bzf3drSQXM9hzvjP5UCh5Fey
tZFqtDsQgDkBDiAVfV3UEsI4a2xT6wKf6m+ze+duObq26p+xtBVobgwBddVS
nn38.yyEpmvnF33rhol6T2hOP2hOBT6mGf0DLLnEYaH9HTeGJU93m9vM1IRP
FVD8FKRf1HRP9tMDmGxCdAg4543JrILGjR0NFz9bLvA85X33SpRunypFFhH.
c3H4nvdgnyOu5WuH8HbPPRVXAFC5MsiWE7R4OwlqQU0V+TbQV7V895+O4qXC
3AGhTbrIpFMrkQ3t3B4lIXE2wxhWlxZJLNHKuk8s6tMWz+IF142ag0j9I031
S6PPSFxeoADLri+GKxWd2ecxIew61wj3OKg0j0Jiehs5tXgnfubufc7uJqTS
U5IkpHcOKec8z0yepTc+1JNStZnh6juQG3vSVLO6IdI+TsvIKHkm8nR4W14B
xy1bNqiSVzVoAVWaP484EhC6v1N1gZ4Mx7IsIc8KWZe25i8ZjCMmXTYkCszJ
OMYURdZdgYm.yifAzHJJjD.VDAHyjSQVPfvPJIDDDEgzSERAgQDLDGhBHKjz
tA0N32bSZdxiRi7qqeSU9lj.cT3PPKz2zwAe4NNuOWROuOeeQ99M2W+y4axx
krPJO4wlL8+q8nPC4v7RysWoWSuaiqccjRC0pNiyyNY.u3k7Tt36V49XRyqx
6IvRum04YhR9+ZlSE49pZoa5..JrQBocdVb+UVsNMOVbzb+T6VRCmfG1WJ3q
4IG3Zv0vnlmwE73TCCBAfNLl0KpsVXDmQz1H47F8.PstsGCe0l0mM+43l8RP
UJ9tAOAi2onizA+cEDbSBg002axHD2eEuT2mQXGHTZ8tJeqygIhDcLerNgYv
aFLcWenvAXUXOBzhpWfj2l9PskuhuNuXar3rXL7RiXBipJaQ2GwndiXBwC0z
TmBU9Zuegi79COfm3dVlb.TOAKsj4I4.T8LNpbbiH.BMUkG0q8bzaW43JMtL
ZX4kzNtnAU3lXSKP8YSOPpfyZ0TtSmw4RAIa3etrJ.8mUg08UpRzfMsZiztV
XEUObV1eVHOp06l7zU9sEcK7cKz4YiG4vgiBns4IfQ.bHv9.85sWljZ1KuHI
MGpl+TgUY99hj5cqxKz6HSthISDK6PZXe4Xmy7fcXJdIDBN.gTQGavMRs1NY
cQhJnEPo5JPMs4CtH5vnQxZTaXMpCjATKD1p922sLPVer9l.LlYQlq+.apjX
TrlVGODuo5unmSnzfhahCD2XKfTjKPjsl1t.PHaHDxADBaCgvNfPDaHDwADJ
vFBE3.BQsgPzQRHsy3flcA8EMo55SQXcfUJ1jJiZjK3MvagONJv1CvFqWtpe
3CGg7T1IuXES2zS30mzvndU0glBwBTOiNNnMqBFGqhrfUoNPcn9+xXXYRul+
0hASGuBM855zQHSgq0tFvwmrAzlLtpA23nD0VmvtS2vfabnIqCpooLpQt1D2
NlEcduqwYxBsIDBzI1rV4G2aRvU5.R0ccGAlGFzZn58wTj0iFKmaStTNwn0l
3GHrKnDz1fpi8LJUAcCeFUKHYpsKd2tmXEkUKVSCYIuOXtKMcSJjlHYlg5xS
8KXp6iwr9E5YhKjUqJjkptuvT+4yTSu1zW9XQ1ddkCrDcRRpKmV2d6cwFfnq
5d5Om9ePPp8lB
-----------end_max5_patcher-----------
</code></pre>
MacBook Pro 13" Retina i7 2.8 GHz OS 10.13, L10.0.1, M4L.
MacStudio M1Max 32Go OS 12.3.1

Patrick_K
Posts: 10
Joined: Wed Apr 14, 2021 10:52 pm

Re: Is it possible for Automation to have priority over notes ?

Post by Patrick_K » Sat Apr 17, 2021 10:56 pm

I had to deal with something similar about a year ago in a Live 10 M4L project. I'm afraid I don't have any great news for you in terms of what was discovered. I found no truly perfect/desirable methods for obtaining complete event order control over the MIDI activity live feeds to devices. In my case, I needed some control/insight into what order timeline-simultaneous note events would arrive at different devices on different tracks... which sounds insane now that I say it out loud... yeesh.

Anyway, you can gate notes with automation events drawn @ exactly the same point in the timeline if you're willing to live with about a 1/16384th note delay OR (strangely) having all midi clip notes arrive 1/4096th note earlier than they are drawn.

The delay one is obvious: put a delay @ 0ms between the note event and the automation-driven gate:

<pre><code>
----------begin_max5_patcher----------
2507.3oc4aj0aiab9Y6eED5YsFy8QP6CYaZ2BzMIEc2hEENAKnnFqkqoHE3g
OZPxu8NGjTWT7vdjqapAVsiHmY9tOmQ+xkWLaQ1CphYAeSv0AWbwub4EWXej
4AWT+8KlsN7gnjvB6zlEksdsJsb1b26JUOTZe9pvR02z7zM4pB8jBKiyR+bt
JpzAAxUf4APp4SBvNVbEH3maVTXYzWhSWsyBvBgYZTtckb5QqIsZcbZhpzha
v5GFuzhQYK95afrYamYVUYyTAcfn1sv73e8xKMeLejbjT08ZPcDCYoJI7w.v
UMuvA8xG2nbz1rEgoql0K0i4FBFSsLAhk5QfSQ8niodd2DuGIxxfEAI8SgyC
lMJpDgrzm7JZeTYWx3SPlnm.YdJs6+PPXUY1ZsNdvZ0OkBC9iAoY5urQuPUw
OkBZdvhjrnaUKa1fj3TUTVUpcWvcYcL7L1xpj.CywY.I4MlQ8wboTjYIXA1Y
5ANZQCxcEmeKn0phhvUpi35LY.3jJWiRoRZoaGYOISGHze1NIw2otRuMlYUu
o2ElmFtV0547Z3OOjuS9VYOVdD8X3YespnL9l3nVYA3j7NsQ4MIYgk8xDIRG
zDVuuTzQ.MbyFUXdXZjceIiTiB0JS2nW7ZUoJ+ypzvEIpcWvMYokEw+a2yLH
Pml3mRIr94Eg2oV94vxx73EUkpsiJpEW0xKi.IoRkcSyiad9t3XbZbYbXhi2
.aXBcMkiIm8lk1j+Vizu3jSHKc0ITO1adq0pY18ng8r2aK9RVd4daCrqMonT
sYWl4durQmoKrrRSrEkO5nSf68VKil+yOgXLHd.7o4FnVClPr5tNeBSxM.Bd
1CgtNdY7MY45XKmjFiMQjFxim1JU6ffHYFhTf5mT4cPpH+EFsGRUq+Tnl0mi
ol+US0MD+7IwGPBqvVhlb5DHb27Age4C5cd1Nt5ZsS+1bsCjf2lkrb1fDIkX
8LSFPutKhjLqK+rfS3mE3WZONcjjdmVBiQ5yvaKxXZLF5jXL65GvBCaFeGTP
kEOMOeetUQVUdTCgUmtdvVLcoRGMOsMj10ayKwLoNEHiEPFhbPHYrCd9PxrI
vgfDxMomOjPiARHe.I7XfD1GPhLFHQ7AjniARTe.I1XfDyGPZP6ItOzxQiwd
h3CHAGCjP9.Rfw.Ie3MBNF+dbeAH3Xbv9bcFAgik4sOjbgPzkUcmJund1Vfn
Cs90rbaZHyseMN08UaHrY4p6haluz9jvbcnwRcbwpbWv0GXtP9yVmsTkmVEW
G9RSdZPZyi+fvVaiKWoSW4C5pqpJ972qRqbQH0T0MgUIk6yJVr5l3jjnrDG5
saIVMgwm4dacEEyZm60AfqPRBDJz7tqvPLGwrizCnzcjb0qA1rHBkHAHyTIL
DmPsiDHLEaFANXYnsvB.kNH.jB.wMR+H3bSEUaWVX5JWQNHdad.lZNy1nKvp
oT6qvx14WUlsJObYrx0UGvd0DMuVSJW+11xmlUySWqYnwMqYWMuVgw6qhB6S
.raFUZEsebiJM3CgoEAePsNdgI2pskuGEowg83+XjlWZYDDploXGwcOaGVx9
xLBmBwVlNRhER2HJDvNXQpD05CgGWvXb6JD.nP3FoAMBs+ZWrZukIADH2hmZ
3Q3b2xPR2VQY60VD6J0klaroTsBerDAYNTsQ6AwEDL7P.Or9bqr9DpziTMae
kZQqprfCnBgazQH3gJ0rFwFy7G2MxsSmEc5lFsnEtQl0suzEoUBrXCjwQNqQ
A..I0HiWLH99vxxgLHtIrw87V2+6le+01L78DB8oO9WlfA5e8wk4YqToezpM
0ioIEvYVkG.ihgVIKDhfn9LMgFmnNaBAPqwaFwabmNfoIgAg.muTIhQrZvTI
TqC1qoIjgYDG1wILordD3.zrMR591JFu9V8DMkQYNOQFseKlKOkrS7Zvfcbt
N+8QPHaU9wQSPM+cpT0cg8pfSjFcz4cN5zAeF4hNPKUfkbmKUrTmxQ8HtIig
g0RAy24C3AMguynMmbE6qHKmndbGIRAmFE9jUGOjaVGL83QOIk3yft5aqJKy
R6SicGRB5DVhVtAndj+BaUiVem4DEdsgTuKLN82FIVoEWsgVNdj+Qsh6i01j
8gbG4ZAVa0s8iyBNgdUgT+shjXcgdSQ25.roubCdZdcOoavtSebPn3S906aN
z9wZG1EczEuhczj8IZqy9MO9gnx7jmA16UDxb1f857viJTuntd9grkphQ6Ub
jwDeVbiNxdvqD7jbg.NyJV+P05E8iLc4E43flmAT6uGGUNLu5IIo8JZZtkDk
u5x13CQYaTiOcis83ShM+0ga3C7R7hxj+X3hwSJizNuKMmA8u3UhRWXyhASf
tiZ5NYjxWvLg9X1JSUGdKc1dDJXNivgtUPvPa4Sj5lP6SR5etdf1v+Bxd+T3
cJy8W427NGd5YEBth5IhaYX9suIMd0WJeisI.STuWRQ0EcS0ZDfZGnGaY2cC
FHsVz71dS21kZgcaNtmCSrwwOiFkAGPc268Wv6MIym8W3qVYnJG.puqX9Xq5
sVxnDUX9XO1FvA4KtSO491EIJsKc2wC81rramMfd41CW3nAmNoTp2Zo03nx+
uPkKN81oogr8j.X.iyfcGsqWgN7kwzTMPzFHGaWVOsjcDyuy5jGdYG1D2Q5o
6TJyy26yNaj6jPtm0IeOLD7m2WhnFHmyCZn2f38QsdwD4VW8XexbIH9uchRI
lzHFN84NMJZC6Sa8z0H26quH.Io9f3kRrfWOhK7ZEOta34aSpTuANw7ivPd8
oDtkBk6RW9DAyytOcxX3fbdOhg+oGCmNBBPRp6TY4bLF4tCDHn1Qu+Qv2kqT
OALzx8ZKRGxLNr8Ox8OTKmLpwa8XBayk.fvTzYv.4eoRRxtexnn.QcmxOW.E
V27.pVhS6qEfPjYR.f3bP.n+Wj.rMM7cYIOAUj1B2n5pwntqzvtAL8BBtILU
kLL98LStnOZwTa4oRwXPdvumtTCapx2zeehNJJKAfjNNHfIsjIRPYHwHuV.7
VQ.AR0dGstvMNIo9TEKWEohuq+itnKy21bp2hbfcuJY9A4b4o8t1ezGin+QL
BiYZjRSZrBsSEIt2DhdYLlKToKKldPxF5v+AHKC2Lg6ny6CKyBduIY0YdC9E
kpapRRJmVOXM2BXtUbwZckXpXXn6dlfRgt1kwvbr65cxzJsL+xTcD0Yhl7XY
.Hc0vLr6NT2jEFFIwRgW4GphWWW.Si+V0x3xgbpLAeDZQf3obMu7B8buoH1G
mfg72EmW9XvedU1PMzCJk.ln1yNo9b9X..Ft+8s7jT73ttwGHpwrAaxOvXqX
KfEWahnkO08T+IxXc+1JrGZg8Ge8lZUR6OiwK+0K+O.UzE5J
-----------end_max5_patcher-----------
</code></pre>


Now, making notes fractionally too early, but automation still arrives first... honestly, I have no clue why plugsync makes all piano roll events arrive 1/4096th note early in this example, nor why automation would arrive earlier still, nor have I tested this in Live 10, so perhaps it's only a Live 11 thing:

<pre><code>
----------begin_max5_patcher----------
2503.3oc4aj0iaia94Y9UHnmcFvCQJxh1G1zsMEnY2VzjhfhrEAxxbbTFYIC
cLG6hM+1KOjjkr0oG5ooaGfwlllTe2mj9Wt9J20oOJxcc9cNez4pq9kqu5J8
TpItp5yW4tK3wv3fb8xbCS2sSjT3tx7cEhGKzy+6cBJKR2ETHb1I9oDnyevI
IU9g8xMJx+oDP8DqiSCuSro9ADGkHBSKSzOEb0j6yD4RfDTDkl7ooWQlHrvP
C93aHqbvfa.qbfD8adxWc920aKnH7yQIaasEBAp1imGbnMkTtKJIVTnY.vpI
i1nI6z0e4UPj6gUlVVTuTPO3p9Qnl9Wu9Z0KqlIaOQ7fDTmv0KbVWOmAvEOs
WXnK20AIacGixwHC2xSSxHM8iVBgS6mtOG5amHOOXq3DBjxc.CRgSPcnVxUi
XcXpCcJ0wrG0Mfz6miuI7yRojXXJb0LoRFVSkdKlJgf9ISj8Hy8wkayeJI7q
CRlQJGJG+1swoA5AwQ4cmnYPqMLFSBwQZ9BiqMwA3EqoCw8yk3mAWJN5dwMx
GiZUUOz6CxRB1o4FtaktPcG2KGTSNFubDzIDihw+kx7hnaiBab5.FSEyvPGi
E5wnZ+hUVSmBzf86EAYAIg5mq2b8f30PpxMuSTHx9jHIXcrn8FtMMoHO5mMy
oTw6UgcHusUymGbuXymBJJxhVWVHNLJuRVUIrTRi3RQ5s0SWOeabLJIpHJHt
RbTyD5aImRNcVkL31cJQe9fKHMYae5FcVzNoBl9ATya57s4eNMqnyy.12CIu
PruMmryWVqvzGJVJoz7hmLDIv78Zah52riaDEh6.OufAUpuDiMC1ewtI8AW7
nA6h1DcaZ1tfho7SNdDAehJh.goiEvPiSp98PpvKdDAEoJ0exmHvW0+cCKzd
3L3CXOMGfqCStHe99CjdCyt7A4S1sketF6zuKS58v40owabmjHoXMQ54u3.a
9b29bxBFvIKvtzdTxLI8dsDlizGxpSmegLFFXQLl19AzvPWXyQUVowS07c4V
4okYg0DVMrcNfpaDxX4IMAz93A0S0h5UhLaHMC.AAV.P0X6nPRgMPa.H3T7N
nsfDZNPBYCHgmCjv1.RdyARd1.Rj4.IhMfDcNPh9bgDbN1sbaXNMKODPK.IU
F5SCIa3hXtdHdtvQUK2jVS1v4JDLWVWWWQl3GxBptWjkWsZMPjwU+RZlNGjU
5OFkX9nN9kal39n50y0yDjIiKVHCJVlYhr9XUAWt6R2HxRJiphcIIOIH0Iwe
TLqCAkKk4p7NYcUk4e5GDIklviRp51fx3htrh0auMJNNLM1fdsKtpNFtq4aq
JmvsYsezAbCh6AgLIu6FLD6in5QxADRKW6U6AVuIOhGGfTK0ih78H5QLDlfU
i.GsMzAXAfbCD.bFvyLRNEbkpbpCaKHYqoBGjeSR.ppMS2KqtptH6av7l0WV
jtMKXSjvz4RPmBhVUoIkI+1lZmbq3o6jLzn58zVyqQX71xvfwD.sSmRpn821
KRbdWPRty6D6hVqRr5Pg6ggRbnC+Gij7RMiviHYJ5Q9l4ZwR5Jy77IPrloi3
XF2Lh.Azi1jHVr6X34ynTe8NX.HiYFIAMB0cuq21YabfGzWimR3446a1Fhad
TDZmFhn2ornbkMknQ3i4HH0fp0ZOHelGFdLfmVetQVOfJ8LUy5pTyZTkY9.B
iYFcBBdrRMsVrQU+4aFYdRWDc55VrHEtgp80U5hjJAZrAR8QFqQF..8pPFqX
P7CAEESYPbaPs64C4G1N49OpSu2RHzGd+edAFn+km1jktUj7ds1zHllDfOUq
7.nDLTKYgPDDMloIT4D0XSv.RMd0H+Z2oSXZ5QgPfwWJGQ8zZvDNTpCNpoIj
hodFry2ix4Ui.GglMQR6Zqn75q0SjTFgZ7Doz90XNeHYG6aAC144572FAgzk
3GEt.072HRD2GLpBtGWoitp2QCG7Yla5HsTFl6aboh4xTNpF4qxXXZsTvpVu
.Op868FsYvczUQluP83dRjBtLJ7rUGOlaVEL8zQmkR7EPW80kEEoIiow1hjf
FgEqga.pFYuvVUn02qNKgu0Pp2DDk70YhURwUSnkSGYeTK+gHoM4XH2ItVfU
VcGd4hfSnuoPp+ZdbjrPuknacD1LVtAmmW2AcC1e5iSBEaxuda8ESYt1g8QG
8wqnmrXah1xreyhdLrHK9Yf8VEgTGL3nNOrnB0KpqmeLciHe1dEmYLwmE2nm
rGrJAuHWHfKrh0OVta83HSedQNMn4E.096QgESyqNKIsUQS08in3atrMdWX5
dw7S23PO93X0e83F9HuDunL42Grd9jxLsy6SyYR+KVknjE1rdxDn6oltAiT9
BlIz6S2pp5vZoyNhPA6S87glc3gg5xm7pZBsMIo+4tIZC+KH68CA2KTWdkuZ
cN7xyJDbCwRD2lfr6dURz1OW7JcS.VndOmfpJ5lH0H.UNPO0xt+FL30XQ62z
a5ltTyzOlS64vBab7ynQYvIT2sd+ErdSxrY+E9hVFJx.fpaOkMdTiVKYXrHH
atGaC3n7Ea0StuacrP5R2b7PuNM8N2IzKOb3BmLX3jRIVqkVyiJ++BUtnj6V
lFxgSBfBTNCZOpsWgd7kQkTMf0DHGq21HsjcFqu25jmdaG2D2Y5oaHk4Ucds
2F4tHj6Ycx2SCA6480iUAjK4AMLZP7wnVqXhbmodrOntDD+2NQoXUZDSm9bu
FEMg8IMd5pk6i0WD.2q5f34bLyuZjOypU7XtdmuNtT7J3ByOBC8qNkvCTHuM
cYSDLK8gjEigSx4sHF9GeJX4HH.wIlSk02GiQl6.ABJczaeD7MYBwYfgZtWS
Q5Ppxgs8Qt+gXyhQM+FOlvlbI.HLAcALP9Wh33zGVLJxPDyo76yfLsad.QJw
Ii0BP0OOHBG.XWBB.8+hDftoguIM9LTQZJbiHqFiXtRCsCXZEDbePhHdZ76Y
lbwXzhp1xgRwXRdvuktTC6Ky1OdehNIJqG.wMbP.kqISDiPQrYds.7aDAdPh
z6n1EtxIIwlpXYhPQz8iezE8Y91jS8AjCz9pjYGjyjm1aZ9EeLi9GQ8nTUiT
pSikIcpvwilPzKiwbtHYS9xCRVSG1O.YQv9EbGcdaPQpyaUIq5ZM3mWHtsLN
tXY8fUcKf80hKZiqDUECSc2yXDBzztLJ1GatdmToRK0tLUCQcgnIKVF.RVML
EatC00YggQbLmYU9gH+aqKfoxeqXSTwTNUVfOBoHfcNWyKqPOOnJh8oEXH+8
QYEO47m1lNUC8fbNfxp7r6UcNeT..C6deKGjhm20M9HQMlNYS9AJaEcAr3JS
Do7opm5mIi07aqPenE5e106qTI0+FFu9Wu9+.xYfhzA
-----------end_max5_patcher-----------
</code></pre>

I am by no means a world expert here. Perhaps someone with deeper insights into how Live handles midi event ordering can chime in?

chapelier fou
Posts: 6002
Joined: Mon May 15, 2006 12:15 pm

Re: Is it possible for Automation to have priority over notes ?

Post by chapelier fou » Sun Apr 18, 2021 12:13 pm

Thank you very much for the answer.
To me it absolutely makes sense that the [plugsync~] example works, as it basically buffers the not messages. It should be problematic with synchronous notes, though.
Anyway, I'd still like to know if there is a way to manage priority of events without using delays.
Anyone ?
MacBook Pro 13" Retina i7 2.8 GHz OS 10.13, L10.0.1, M4L.
MacStudio M1Max 32Go OS 12.3.1

Patrick_K
Posts: 10
Joined: Wed Apr 14, 2021 10:52 pm

Re: Is it possible for Automation to have priority over notes ?

Post by Patrick_K » Sun Apr 18, 2021 4:14 pm

chapelier fou wrote:
Sun Apr 18, 2021 12:13 pm
To me it absolutely makes sense that the [plugsync~] example works, as it basically buffers the not messages. It should be problematic with synchronous notes, though.
yeah, I like the plugsync option even less than the micro-delay option for that very reason. I was surprised to see that a 0ms delay produces a smaller measurable delay than defer or defer low. If you swap out the delay in my first example with either of the deferral options, the delay is like 3-4xs worse than 0ms delay.

Either way, the idea of degrading note timing like that, however small, is a tough pill to swallow.

I'd love for someone with inside knowledge to give us a deeper rundown as to how Ableton manages midi event timing, and what options are available to us in an M4L context to do what you're trying to do, without timing compromises.

chapelier fou
Posts: 6002
Joined: Mon May 15, 2006 12:15 pm

Re: Is it possible for Automation to have priority over notes ?

Post by chapelier fou » Wed Apr 21, 2021 2:14 am

Just bumping in case someone has the knowledge.
MacBook Pro 13" Retina i7 2.8 GHz OS 10.13, L10.0.1, M4L.
MacStudio M1Max 32Go OS 12.3.1

Post Reply