how to observe and use live.object at the same time

newtfish's icon

Im using a touchscreen controller, which sends messages to and from maxforlive.

Im observing and using live.object on the same parameter.

How can I avoid the feedback loop that is caused when sending data back to the touchscreen?

miguel3d's icon

Hi newtfish. I was just about to post a question on the forum when I saw your post. You might benefit...

My test patch goes like this: my live.slider controls the volume of track 0, which in turn is observed and sent to the same live.slider. The live set controls the max device and vice-versa. Same old story.

I thought I understood where to put the deferlows, so I added them in the appropriate places. The errors were gone, but it still didn't (entirely) work. The part that works: if I move the live.slider in my device, even very quickly up and down, Live responds accordingly. This is good. If I slowly move Live's volume slider, or click to just cause a single change, the Max device responds accordingly. This is good.

The part that doesn't work: if I quickly move Live's slider, I go into the same crazy feedback loop. I've looked into "Defer Automation Output", speedlim, change, and, of course, the docs, but can't get this part to work.

If anyone can help, uh, please help.
Thanks in advance. :)

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

Here's my test patch:

Evan's icon

I am wondering why you are trying to observe a slider that you are manually setting in the first place? What is the purpose of observing that? If you are trying to set a value at the same time you are observing, then setting according to that observation, you will definitely run into problems. If you just want a visible representation of the value, you could set a comment, or number box based on the observer and just place it below the slider.

miguel3d's icon

I want my device's live.slider to control Live's volume slider on the first track.
Also, if I change Live's slider, I want the change reflected in my device.

gavspav's icon

One way would be to use a couple of gates, between each slider and the 'change other slider' objects.

Observe both sliders and if one changes, close the gate of the other one. Then update it.

If the first slider values stop changing for a certain amount of time, open the gate again.

Should work unless you want to move both sliders at the same time.

newtfish's icon
Max Patch
Copy patch and select New From Clipboard in Max.

Hi Miguel3D. Does this work for you?

Hi Evan, In my case, Im using the observer/object with a touchscreen interface. The touchscreen will send data back and forth so the above solution will not work for me creating a feedback loop. I saw a post suggesting to use the "Z" parameter for touchscreen (which detects touching, or not touching). This seems to be the only solution to the feedback loop caused by touchscreens

gavspav's icon
Max Patch
Copy patch and select New From Clipboard in Max.

FWIW I use something like this to see if a value is changing.
I do wonder if the use of clocker is unnecessarily expensive though.