Sequential Parameters: per-sequenceBlock param attributes

Use-case: For each block I’d like to be able set some slider min/max ranges based on another parameter of the same segment.

For example here’s my segment:
Type: Menu
Cycle: Float

So based on the Type selection I’d like to be able to set the normMin/Max, etc ranges for Cycle.

Component Editor’s UX doesn’t facilitate this, but I think it could be a worthy addition to the Python interface.

We have discussed this and it’s unlikely we’ll add built-in expressions for this sort of thing. You can achieve this effect fairly easily using a parexecDAT reacting to changes to Type

If I set the normMin/Max attributes of a specific float parameter inside a sequenceBlock it sets it the slider range the same for all other blocks too though. Maybe this could be a bug?

A more arbitrary example but say I wanted a generic float custompar slider sequence and the odd index ones to have a range of 0 to 1 and the even index ones -1 to 1. Currently you would not be able to do that.

Okay, yes very arbitrary, but for the sake of argument…

For this you would watch the sequence.numBlocks with an evalDAT. When the number changes, you set all ranges to their proper values. Although it’s true you would run into problems if you cut and paste blocks in that case. To solve that, you’d want to use a BlockID (see bottom of Sequential Parameters - Derivative). You could then use a clever evalDAT expression to watch for the movement of blocks and fix the min/maxes accordingly.

Another option would be to create readOnly Min and Max pars with expressions in them. When those pars change, you apply the change to your slider.

Both solutions are complicated yes, but achievable. Point being we are not a fan of adding expressions to every TD member. We are working on an easier system for achieving obscure needs like this, but it won’t be to add dynamic expressions all over the place.

The problem in my opinion is exactly that we cannot set a different range to these sequenced sliders.

I understand your approach and that is more or less what I was doing, but here’s a simple test:

Create a Sequence with a Float, hit + a few times. Try to set Sequence1float.normMax = 100 → it sets the normMax to every Sequence*float slider, not only the one you were trying to modify.

While I understand why this might happen, I believe since we can access those sequenced sliders as a normal Par Class members (op.par.Sequence1float) we should be able to set their attributes individually, as opposed to affecting the whole blockPar when doing so.

Ohhhhh. I didn’t realize that was your problem. I had forgotten that the ranges are all locked, but now that you mention it I remember that was a tough question during development. I’ll bring it up with the team.

Okay we talked this over and this feature would require a refactor of custom sequential parameters that is not going to happen soon. The bottom line is that parameter sequences are meant to hold identical parameters with identical settings, though obviously not identical values. Ranges are, for better or worse, considered part of a parameter’s settings.

1 Like

Yes, similar to clones, where the only thing that varies are the values. We have no intention to allow different settings per-parameter.

1 Like

Gotcha, thanks both!