"Setting the id cannot be triggered by notifications. You will need to defer your response."

Shawn Boonstra's icon

Shawn Boonstra

12月 29 2018 | 11:27 午後

Can someone please explain the defer and deferlow objects in beginner-level terms?

Long story short, I've made a number of patches for Live that need to perform certain actions whenever the user selects a different device in Live. I do this with a live.path set to "goto live_set view selected_track view selected_device", whose middle outlet is connected to a trigger. Whenever the object id changes, the trigger (1) sends the id as a list to a live.object, then (2) bangs a series of messages to the same live.object.

Live.object keeps giving the error "Setting the id cannot be triggered by notifications. You will need to defer your response." I have a vague idea that this means some signal is moving too fast and needs to be slowed down using defer or deferlow, but I've tried inserting these into almost every conceivable point in my signal chain and the error persists.

The other mysterious thing is that I've never been able to trace any failures or bugs in my Live device back to this particular part of the patch. Despite the error, live.object seems to work as intended whenever I'm looking under the hood. The only reason I'm dwelling on it now is because the device sometimes behaves strangely in Live and I can't find any other explanation.

Thanks,
Shawn

tyler mazaika's icon

tyler mazaika

12月 30 2018 | 1:00 午前

Hi Shawn, this article has a good write-up. I found it be looking through some of the “scheduler” related documentation on this site.

https://cycling74.com/articles/event-priority-in-max-scheduler-vs-queue

So, its more accurate to think about the error message not as saying that it needs to be “slowed down”, but that it needs to be made low-priority (which happens on a separate thread). To [maybe] help solve the riddle, the ”notification” in this case is the message coming from the middle outlet of your live.path.

HTH,
Tyler