Works nicely! I noticed one thing so far:
When you randomize MIN value, looks like it glitches sometimes by snapping to randomized value when repeating cycle, i.e. if I randomized min between -1 and 0, it goes down to say, -0.8, and then on start of new cycle it snaps to, say, -0.5 and then goes up (instead of going from -0.8). I don't notice that for MAX values. Another thing that kinda had me do some weird workaround - I think it will be great if you can change invert flag per step and not per entire group. My use case was breathing animation - chest morphs go from 0 to 1, but other chest morphs need to go from 0.5 to 0.. and when I make a trigger to wait for values to reach zero -> swap preset, it breaks my morphs that are going to non zero value. OR - I think it will be much better solution: maybe make another trigger in the plugin to wait instead for STARTING value (so the one you set on the slider as min value, regardless if you have randomization enabled or not, so to just whatever you have set under Step Min). Right now I'm kinda doing weird trigger that waits for 2 seconds and then manually sets those morphs I need for value of 0.4 (their min value in the plugin), coz stop and zero just zeroes them.
Actually now that I think of it, you have button to instantly zero values and stop animating - that probably is going to be useful to just quickly wipe whatever is happening, so.... I think extra button would be great - but I am not sure how waiting is actually handled. Imagine breathing/animation, we're on preset 1. If there was a trigger that would do "wait for cycle to end, and instead of starting it again, swap to Preset 2 and continue" - you could have completely fluid swappable presets that could be triggered safely at any time.. and immediately another thought comes to mind - what if there was some kind of easing when swapping presets. Let's say that my preset 2 uses some expression that is already in the range of 0.3-1, so if I swap to it, even with that trigger I mentioned, it would just snap, because my other preset has that morph on zero. Something that Timeline has I guess. In case of triggered transition, say, plugin knows that there's 2 seconds until preset swap, so it could then calculate based on user chosen easing time (let's say 0.5 s for example). So when there's 0.5 seconds left, it would start increasing/decreasing morphs, so that when preset 2 hits, morphs are already nicely in their starting position, and zero glitches happen. Is it even doable? If there's no way of knowing for the plugin when actual transition happens, then simple "on transition trigger, after morphs go naturally to starting position, first spend X time (configurable) to morph whatever is needed to match preset 2 starting position". It would just add whatever time user has defined, so it wouldn't be snapping. Ideally, to preserve motion, it would be great if that transition time could be subtracted from the very first cycle after transition. So that 0.5 seconds would make the first loop of preset 2 last e.g. 2.5 seconds (if it's normally 3 seconds), and then next loops are in normal time? Maybe too complicated? Idk. Even if you have super short durations for other groups, then I guess it would just skip them?
Sorry for wall of text.. last thing that I think would be nice. If you could directly manipulate current pattern step duration/values/intensity with variable triggers? For example I have breathing on group A and one empty morph (ungrouped) that just goes from 0 to 1. Then I have vuml + action grouper that is controling UI slider based on that empty morph value, so I have slider that goes from 0 to 1 at the same rate. And then I can have whatever I want tied to that slider, animation, body movements etc. If you could make a slider that would change "Step 5 period" on the fly, that would be very nice. You could easily control movements that are separate from each other, but it still would follow global multiplier. You could have thrust animation tied to one control morph, then increase speed globally, so breathing and thrusting is faster, but then dial down only the control morph, so breathing remains quick, but motion is slowed down when you want. Plenty of nice stuff would be possible. One could just use Timeline instance to animate sliders and create huge variability!
Anyway, that was some big ramble (sorry again..), but I thought I'd share what would be really good for this plugin in the future. Maybe there are "better" workflows to trigger animations like that smoothly (coz Timeline + Weaver I suppose), but for expressions, that can automatically drive animations.. I'll keep playing around, already having tons of fun with empty morphs and doing some body movements. Thanks again for very nice update, it's much more fun to use now!
EDIT:
Nevermind, just need to change target from Person to none, and back again - refreshes without plugin reload!!
(((Rip, another thing. If you add morphs to favorites, you kinda have to reload entire plugin (and you lose presets unless you save them), so it's not convenient to use. Pretty sure Timeline refreshes morph list every time you access it, would be great fix.)))