Clogged undo history in Live due to randomization controls

ianjojo's icon

Hi all,

So I know this is an oft brought up topic after searching through this forum. I just thought I'd bring it up again and see if anything has changed.

I have an M4L device with randomization controls and each time a parameter is changed it adds to the Live undo history. When using an LFO to control many parameters often, this of course makes regular undo tasks impossible due to all the changes added.

I know I can change the parameters to hidden to prevent this but I do want the device dials to be mappable.

And I also found mention of using M4L.api.DeviceParameterRemote to adjust parameters without adding to the Live undo history, but it seems that the ids for my live.dials change with every load of my device. Also, I'd like to eventually share this device with others. So I guess my question is, is there a reliable way to first "get" each param id that I need upon device load?

Or is there some way in 2025 that this can all be handled better?

jamesway's icon

Hey there. Yes the id's are random based on when the ableton device was loaded in project history. I believe they stay the same if you drag drop that device somewhere else in the same live set.

Is this the id request thing your looking for?

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

ianjojo's icon

Thanks for the reply, JAMESWAY. Yes I think this is the right direction. My confusion now is how I can automatically "get" the ids of, say, 16 live.dials without manually selecting each one in the dropdown in your patch.

I'm working on a sequencer that has randomization controls and I just don't want to clog the undo history everytime I modulate one of the live.dials.

It looks like you've edited your post but before you did so, you mentioned using hidden parameters for modulation and feeding those into change and + and then setting the live.dials that way. But that way won't the undo history still get clogged when the live.dial is changed by those hidden parameters?

Maybe I'm worrying about this too much but it seems like it would be ideal if I could not add all these randomizations to the undo history.

jamesway's icon

I was going to explain essentially what ableton added with the "modulate" parameters. Liveremote takes full control so you can't tweak those randomized knobs in ableton anymore, and it avoids undo history.

But, you can have another mappable knob in your device to + , - that other randomized param inside max before it's sent to live remote, =modulated. Anything mapped from Ableton gets into undo, but you could use osc or a virtual midi port perhaps if you wanted more outside control with no undo.

Also, once live.remote is mapped, you can bypass it pretty worry free, allowing tweaking in Ableton again, but you'd need to capture those changes with a live.observer to update the param in your patch.

Hope that helps, I recommend to go dig through those amazing hidden cycling folders full of examples, I don't remember where exactly you find the API stuff.