you'r right, you would lose quantization in the envelope. Are the amount of steps always the same, just the values different? in this case you could just route the live.slider output to different colls. If you need different amount of steps as well the only workaround I can think of is to use multiple live.sliders - for every case one and dynamically show/hide the active one in the UI.
The Live application requires that things like parameter ranges need to be set at instantiation and not messed with afterward. For that reason, NO live.* UI object lets you change slider or dial ranges - you'll need to use standard Max UI objects for that. There may be some interesting attempts out there to circumvent this, so perhaps others may wish to contribute their interesting and idiosyncratic approaches to the problem that differ from going with vanilla Max objects. :-)
Hi Gregory, you are right. Gravetti's point was that he was looking for the flexibilty of the vanilla objects in combination with the abilitiy of midi mapping in live. Hence the hacks. Sure this is not how live parameters are conceived, but hey isn't max also about finding solutions ;)
I'm actually having a wonderful time setting the range with the "_parameter_range" attribute. The slider range dynamically adjusts and the UI graphically updates and scales exactly as it should.
In general I guess it's a stupid thing to want to do, with automation disasters waiting to happen, but its possible...
I agree, I've experienced these automation disasters. But I see this as a tremendously powerful patch building resource, to cut down on setting up controls for certain attributes(esp. jit.gl).
The automation crash could be avoided if the changing attr was only availble when when building the patch.
It would be fantastic to select the attribute and automatically be given ui objects, named and with the correct range. I've been able to modify the getattr help file to do all but set the correct range. Would someone mind checking it out and seeing if they have any ideas on how to accomplish that?
Neal, I just stumbled on this thread looking for something related, and realized one of the threads you linked was something I posted. :)
Turns out, I've since found a couple workarounds for my use cases. I'm setting enum ranges for live.dials in bpatcher abstractions at patch instantiation, and using another UI object to display and change their values. And in other cases, I'm simply using the offset message to scroll the bpatcher view to show a different live.dial, rather than changing the range of a live.dial.
I'd imagine that, if you wanted the user to be able to change a range/enum or min/max value for a live.dial or slider at runtime, you'd be better off using Max objects for the UI, keeping the live UI object hidden in a bpatcher, and simply scale the output to rawfloat for the live.dial based on the given parameter range for the Max object.