High resolution control and differences between Lemur and Arc

Hello, I have one question which I am more than welcome to have other questions come out of.

I’ve been interested in high resolution control for things like FM and filter cutoff, and so this year I got an android tablet to run Lemur on, using a cable to transmit OSC. All in all it’s great.

An issue I’ve been grappling with is that for a given distance traveled on a knob, the number of discrete steps produced from location one to a new location is different depending on how fast you move, which I believe is because of the rate at which Lemur refreshes and measures a new value (maximum 60 refreshes a second).

Just to throw some numbers on it let’s say I move a knob for half a second. That’s going to be thirty discrete steps between location one and the new location (0.5 seconds of change x 60 refreshes a second = 30 discrete steps). If I make that same move over two seconds I now have 120 discrete steps (2 x 60 = 120).

This usually isn’t a big deal except when I want to move over a long distance quickly. For example, let’s say my highest value is 300 and my lowest is 0. If I move from the highest value to the lowest over one second, and I’m only getting 60 discrete steps: every refresh jumps by 5 ((1/60)* 300 total change in value = change of 5 per step). So with a fast change over a large distance the resolution is not high.

My actual question: how does the Arc deal with an issue like this?

It seems important because I believe the Arc transmits increment decrement messages. If I move a certain distance it seems I would not be getting the same change in value with less discrete steps in between, it seems I would get less increments or decrements towards the value I was trying to head toward!

What do I not understand about the Arc that would make this untrue? It must deal with something like the concept of refreshing…does it send (or does the computer receive) packets or bundles with all the changes? Is it much faster than 60 times a second? Is 60 refreshes a second slow?

How do you deal with an issue like this in Max? I’m familiar with smoothing with line or line~, I suppose I would need help implementing something that monitors the rate of change and making that influence the rate of smoothing with line. But whatever the answer is I’m more interested in how to implement with the Arc over Lemur.

the arc has optical encoders- so position is absolute, tied to angle of motion (which all rotary controls should be)

i don’t recall the exact serial update rate, but it’s very fast. with a fast move of a knob, the delta size will simply be larger. so moving slowly will show 1’s and -1’s separated by time. fast motion will show larger numbers at a fixed (but fast) rate.

with max you simply use an accumulator. there are examples in the max 7 monome package.

i honestly cannot see any case where the arc would be lacking, when it comes to high resolution knob movement.


I love the philosophical bread crumbs left behind both in max objects and beautiful hardware! Thanks for the clairification.

1 Like