zsteinkamp / m4l-CurrentParamKnob

A Max for Live device with a single knob that is always connected to the currently selected param in the set.
7 stars 0 forks source link

Hi, it messup ableton live undo history. can you help fix it?Thanks! #1

Open CyrusPan opened 1 month ago

CyrusPan commented 1 month ago

Thank you very much for developing this plugin. It's very convenient for me to map it to a large knob on my controller, making it easy to control live parameters. However, there's been an issue bothering me for a while now. After opening it, clicking any knob or parameter generates new undo history entries, and adjustments to parameters also continually add to this history. This renders my live undo history useless. I've tried learning Max on my own, but it doesn't seem straightforward to solve this issue.

I noticed in your newly developed Knobbler3 that there's a "current knob," and when I tested it, clicking parameters didn't seem to pollute history. However, since I haven't purchased the TouchOSC software, I still hope to use this "current knob" on my own MIDI control knobs. Could you please fix this knob? Thank you very much!!

zsteinkamp commented 1 month ago

Thank you for sending this @CyrusPan! I will have a fix for this today and let you know here.

zsteinkamp commented 1 month ago

Also, just for your information you can use TouchOSC without paying. https://hexler.net/touchosc#get

"Please try before you buy - the downloads above have no restrictions"

I have purchased a license because I want to support the author, and I did so after I decided TouchOSC was an important part of my workflow.

zsteinkamp commented 1 month ago

Ok @CyrusPan sorry for the false hope. It looks like we are up against the design of Max for Live on this.

A live.dial object (like what is used in CurrentParamKnob) can only be MIDI-mapped if it has its Parameter Visibility set to "Automated and Stored". By choosing this setting, then any changes to the live.dial value result in entries being added to the undo buffer.

I will try to think of an alternative design. I briefly thought that it could just observe the MIDI data stream and "learn" a CC to pay attention to, but that would require that the track that contains the device be armed for recording all the time. Do you think that would be a bad solution? I don't really like it...

CyrusPan commented 1 month ago

Hi, thank you for your replay!!

Regarding "Automated and Stored," I did try that. After changing it to hidden, I couldn't map it anymore. A YouTuber suggested using live.remote as a replacement, but when I tried it, it didn't seem to work properly. I have no knowledge of Max programming and can only vaguely understand the approach you used to create it. Due to my limited max skills, I don't know how to optimize it or come up with a better approach.

Regarding "arm track all the time," I don't think that's a very good solution, It seems like Live can only auto-arm properly when using Push. If I have to arm it every time I want to control a select parameter, it seems more troublesome. This way, the knob isn't in a readily available state. The most convenient aspect of this max plugin is having a controller that can control the select parameter at any time. It would be great if there were a better method.

Additionally, I stumbled upon another plugin called "last parameter" on the Max forum. It's similar to yours and shares a similar approach, although there are some differences in details. However, due to my limited Max skills, I don't fully understand it either. Nevertheless, this plugin also suffers from undo pollution issues. I've uploaded it here; I'm not sure if it will help or provide any inspiration. Last-Parameter.amxd.zip

I just found out that TouchOSC can be used for free try, with only the mobile version requiring payment. I've just downloaded the Mac version, and it actually works very well, including with Live's undo feature. Your new plugin works great. However, the desktop version seems more suitable for controlling one computer from another rather than local mixing. If I could learn how to LEARN TouchOSC's faders with a MIDI controller, it might solve the issue with the "live dial" plugin in a weird way 😂. I'm experimenting with TouchOSC and learning more about its use. Controlling knobs with a touchscreen has its conveniences,I used to frequently use Lemur, but their company seems to have closed down. I've never tried TouchOSC before, but I think I'll give it a try. but sometimes I prefer using physical knobs or faders. It would be great if the "current knob" could work properly with these. Thank you for developing these these max tools and sharing them!

Additionally, there's another feature that might not be very related to the "current knob," but I've used something similar called "selected track control." There's an open-source MIDI remote script that can achieve this function at http://stc.wiffbi.com/. It controls the fader, pan, sends, etc., of the currently selected track, all configurable within the script. I think combining this with the "current knob" would be a great mixing control method. Max also seems to have similar track control plugins; https://mothergarage.gumroad.com/l/PReMX and it aslo free try,I've used before that was essentially a channel strip for selecting tracks. However, like with undo issues, it didn't work properly. Undo problems seem to be a common issue with Max plugins...

My English is not very good, and I used translation software to help me translate. There might be some things not expressed clearly. Anyway, thank you again!

CyrusPan commented 1 month ago

Hi, I'd like to tell you that after learning more about TouchOSC, I found that it indeed can map MIDI controllers. I integrated MIDI information from my encoder into Knobbler3's template, added MIDI mapping to CurrentParam, and now I can use my controller to control the faders on TouchOSC. This effectively solved my issue! Additionally, I can leverage other faders on Knobbler for extra benefits, such as mapping my remaining encoders to BlueHand's faders. I use my computer's secondary screen to display the desktop version of TouchOSC, treating it as a controller screen, which conveniently shows the parameters I'm controlling. Of course, the most direct benefit is being able to control CurrentParam anytime with my big encoder, which is very convenient. However, it seems TouchOSC doesn't support MIDI pickup, so I can't use my faders because they aren't motorized. Perhaps future upgrades will support this, or I'll need to explore using scripts. In any case, I can now use MIDI to control CurrentParam through Knobbler3 as a bridge, without affecting Undo.

zsteinkamp commented 1 month ago

Impressively resourceful! I'm sure this serves you well in other areas too. :)

I will still have a look at some of the other solutions. I use Knobbler with an iPad, and so I think that's where it shines.

Perhaps one day I will get into programming Control Surfaces in Ableton, so that something like a MIDI current param knob could just be an attribute of the control surface script and not require a M4L plugin...