Exposed Expressions in Engine COMP Parameters

Hey guys,

I know that there was decision to prevent Engine COMPs from loading the expressions saved in Custom Paramters of the .tox files they load, but I was wondering if you guys would consider exposing them.

As it is now, I have to use Constant CHOPs that have snapped the custom parameters in and manually copy over all the expressions, and then send them into the Engine COMP .tox files with an In CHOP. It’s very time consuming and prevents me from sharing my VJ setup with the community.

If the expressions saved in the custom parameters were loaded in the Engine COMP, it would add a lot more functionality to a very underutilized component.

Currently I’m using Resolume to control TouchDesigner over OSC, and load generative and PostFX in TD via clip selection. This has the benefit of keeping the VRAM clear over the course of a show despite loading dozens of visuals, where typical setups like SimpleMixer and Elekktronaut’s setup might stutter when switching visuals and eventually slow-down overtime due to keeping everything loaded in VRAM.

Thanks so much,

Ordinaire X

Hi @Chemtrails - we’ve resisted this request before because it would be so constrained (by being unable to reference entities through the TouchEngine/TouchDesigner boundary) as to commonly lead to errors on a component, creating more problems that it would solve.

I don’t fully understand the problem you’re describing, or the solution - can you give an example of the sort of expression you would save, so I can better understand the limitation you’re hitting?

Hey thanks for getting back to me so quickly. Let me try to break this down:

The Problem

  • I have a folder full of .tox files, each .tox has a bunch of custom parameters.
  • Those parameters have expressions to handle midi and audio reaction
    (e.g. op(‘audio1’)[‘bass’]*op(‘midi1’)[‘slider1’] )
  • Those expressions reference CHOP data located in a master .toe file
  • The .tox files are loaded by an Engine COMP in the same .toe file
  • The parameters in the Engine COMP work, but don’t have the expressions

The Solution

  • Let Engine COMPs load expressions that reference CHOP data found within the same .toe file

If I paste the expression onto the parameters of the Engine COMP, it works fine. But these expressions aren’t exposed at all in the Engine COMP, not even through a parameter DAT.

The Current Work Around (as suggested by the Derivative team)

  • Create a parameter CHOP referencing the .tox file
  • Connect the parameter CHOP to a constant CHOP
  • Press Snap on the Constant CHOP to load the parameter channels
  • Manually copy and paste all the expressions from the custom parameters to the corresponding CHOP channels
  • Create an in CHOP for each .tox file that leads to an override CHOP
  • Connect the correct constant CHOP to the input of the corresponding Engine COMP to keep the Audio/Midi Expressions

The work around is unbelievably time consuming and bulky, as I have to keep individual Constant CHOPs sitting around to be loaded by a select CHOP when swapping .tox files. It also makes it harder to update the expressions, as I test on the .tox file, then have to copy the new parameters/expressions over to the Constant CHOP. God forbid if I add new parameters.

Perhaps a toggle for the Engine COMP that allows for expressions to be exposed or not would be the best workaround? It could be turned off by default, while still letting those like me who want to make the most of the Engine COMP use them when needed.

OK, thanks for the detailed description. I’ll add this thread to our internal ticket for this and we’ll consider it again for a future update.

In the meantime, I’d suggest you don’t parameterize audio and control data at all. Have all your components have an In for a CHOP (or multiple, if that makes more sense, eg one for the audio analysis results, one for control data) with all the state components might use with channel names you standardize. This makes sense particularly if it’s always audio analysis and control data. An added advantage will be that your .tox will have no dependency on any particular components existing in the .toe file - as long as you link up this standardized CHOP, you can delete and rename things in the project without breaking all your .tox, and the .tox can select whatever they happen to need from the CHOP channels.

I can see how that would have advantages in some cases, but using custom parameters allows expressions to be changed or moved quickly, which is crucial when using dozens of .toxs for VJing as I do. Paramterizing audio and control data this way makes it much much quicker to implement, change, and share files with other creators.

It is also much easier to just remove a broken expression when using the .tox files than it is to have a bunch of hidden processes, especially when using the Engine COMP.

Custom Parameters are one of the best features of TouchDesigner, and I can’t imagine a workflow without implementing them. VJing setups like SimpleMixer and Algorhythm are already built around .tox files that use custom parameters. Having an entirely different system for the much more efficient Engine COMP doesn’t seem very pragmatic, especially since the issue stems from a purposely missing feature that users are used to having access to in various other workflows.

As it is now, the Engine COMP seems like the future for modular VJing setups (that don’t suffer from VRAM bloat) despite lacking an arguably major functionality. Why have it load custom parameters at all if users aren’t allowed to fully take advantage of them?

I was suggesting a solution to let you work with the Engine COMP as it is now. We’ve noted your comments and as I say we will consider this as a feature for a future update.