Can automation have priority over notes ?

chapelier fou's icon

Continuing this topic : https://forum.ableton.com/viewtopic.php?f=35&t=242868&sid=e3442d87fb76f13286a06afb1c87f0c0
I'm wondering if there is a way for automated parameters to happen "before" notes without delating the MIDI flow.
Any ideas, resources ?

Roman Thilenius's icon


while i dont fully understand the question in the ableton forum, i am sure that he basically only wants to change the order of execution.

simply put: when you generate data you have full controll over "priority".

what could be is that you needed to introduce a delay of >1 scheduler tick to make sure the automation can not be overtaken by the note later in the live app.

chapelier fou's icon

The thing is, the midinotes and the automation data are generated at the clip level in Live, meaning they are not generated in the Max device.
If I delay evrything ebut the incoming notes in the Max patch, it works, but I'd rather not doing this.

chapelier fou's icon

Any help ? here's the device.
If you set the mode to "probability change" and automate the probability toggling from 0% to 100%, you'll see that a note on the same time as the 100% automation point never occurs.

CF_probability_gates.amxd
amxd 13.38 KB

broc's icon

I think to ensure the execution order "automation before notes" without touching the notes you need to send automation explicitly before the notes (negative delay). As a genaral solution I'm using 2 different timelines: the note generation timeline starts at bar 2 and the automation timeline starts at bar 1 with a delay of (1bar-x).

double_UG's icon

Test Patch with bondo works, but I am not shure if there is a delay

Max Patch
Copy patch and select New From Clipboard in Max.

Patrick_K's icon

DOUBLE_UG, I gave this a thorough testing... it seems your example is setup to trigger the last-played note whenever the automation envelope hits 127. Per the above example image, try flipping your envelopes upside down so they drop to 0 at note start and rise to 127 after the note has concluded. A note of the most recently-triggered value will sound each time the envelope node hits 127. You can delete all the notes in the clip and notes will still sound.

double_UG's icon

you are right, seems i misunderstood how bondo works. Perhaps with thresh

Max Patch
Copy patch and select New From Clipboard in Max.

but it only play the note when the envelope changes

chapelier fou's icon

Thanks to you for your experiments.
I might be mistaken, but [thresh] must introduce a delay.
Otherwise, maybe this would solve the issue with the note being triggered only when the envelope changes.

Max Patch
Copy patch and select New From Clipboard in Max.

double_UG's icon

CF_probability_gates.amxd
amxd 11.78 KB

Patrick_K's icon

For what it's worth, none of the thresh-based examples have worked at all on my system (late model iMac, Max 8.1.9, Live 11.0.2). The on/1 value for the gate never pairs with the note value, they always pass through separately.

Double_UG, your latest example is still triggering notes from envelope values, rather than gating any notes that fall on the exact same point in the timeline as the envelope, as Chapelier has been trying to achieve. Is my understanding of Chapelier's goals incorrect?

chapelier fou's icon

You've understood my goal perfectly, @Patrick_k.
Could not test the patch above, but from what I see of it, incoming notes will not trigger anything excepts when the probability changes.
For what's worth, my initial patch work exactly as I want, except that I have to draw the automation a little early. It's not a super big deal, but it make the practical use much less intuitive.

Patrick_K's icon

If it were me, I'd live with the microscopic delay of adding a delay unit set to 0. It's so tiny as to be well below the threshold of human perception... plus I'm lazy, and I'd just want to draw my envelopes quantized and tidy. :) But I completely understand the desire to avoid anything that destroys the absolute timing perfection of a modern DAW... regardless of whether or not the delay is human-perceptible, it doesn't feel great to know that it is there.

Roman Thilenius's icon

you can delay musical events for up to a vectorsize without getting a different result from it ;)

chapelier fou's icon

Hahaha, I admit it's just some sort of OCD.

chapelier fou's icon

@RomanThilenius :
I have no clue how to do this, but I have the feeling that it doesn't apply to Max for Live. Am I wrong ?

Patrick_K's icon

Hmmm... I suddenly have the urge to add the delay object @0 solution to Chapelier's example .amxd and see what the phasing is like with that micro delay applied to one of two identical samples being triggered at at exactly the same point in the timeline... because yes, in that scenario, I suspect there would be something that is humanly perceptible. :)

Roman Thilenius's icon

it can be that when there is a note event on a live track that it will reach in time because the host takes care for that. all other events, scheduler or not, will be taken with the next audio vector from max externals, devices or vsts. so if you use a del 1 or a thresh 1 somewhere that will not change much compared to del 0. of course you still use del 0.

chapelier fou's icon

Well, I made the test. One is with the device (with del 0 added), one is without the device.
Can you tell which is which ?

Roman Thilenius's icon

if you use a samplingrate of 192khz and clutter the main thread with millions of messages, you will be able to tell the difference.