Request: Add new item to parameter drag'n'drop: "CHOP Reference as Index"



It would be great if these 3 ways to drag and drop a parameter turned into the following 4 instead:

  1. Export CHOP
  2. CHOP Reference as Name < same as current ‘CHOP Reference’ item, eg: ['chan1']
  3. CHOP Reference as Index < eg: use index [0] instead of name ['chan1']
  4. Current CHOP Value

Would save me having to go in when I’m working with wires quickly and various OPs use different default names for their channels which breaks references. I often work with single channel OPs.

I’m wondering if anyone has a solution to my pain point here:

Say I use an LFO > Null CHOP and drag the channel to some OP’s parameter, then select ‘CHOP Reference’ which makes it reference the LFO’s ['chan1'] default name. No problem.

Then, a minute later, I replace the Null CHOP’s input from the LFO to a Timer. Suddenly, the parameter reference breaks because it’s referencing ['chan1'] instead of [0]

I understand why this happens, but I find myself constantly having to go back to edit dragged references and replace the channel name with 0, or just typing in the new channel name, hence my original RFE.

But, I’m wondering: does anyone else have a better workflow to prevent this? Or do we just have to update the referenced channel names manually?

You could use CHOP Exports and avoid this when prototyping :slightly_smiling_face:

I’ll assume you prefer expressions. So if you know are going to be swapping inputs its always good to prep channels before going out to parameters, 1) lock in your channel names if using by name, and 2) make sure all channels will always be present for a more robust system.

  1. locking in channel names: You can force rename your channels before output using a Select CHOP or Rename CHOP
  2. making sure all channels are there: This is specific to cases where channel might not be absent, devices not connecting, missing OSC channels, etc. The idea is to set up all channels you need downsteam in a Constant CHOP first with your desired defaults, and then use a Replace CHOP to splice in the active channels that are present. Albeit his is more system building stuff rather than prototyping and changing wiring up.

@ben Thanks, I understand what you’re saying. No need to read further, I’m just gonna write some thoughts down that pertain to the original RFE for anyone at Derivative who may consider it.

The way I work, 95% of the time I am referencing channel 0 because I’m mostly working with single-channel OPs. That means that if I could drag-n-drop channel references as index rather than name, things would just work 95% of the time with no additional prep. This isn’t just time saved, but also brain pain when trying to work fast and visually, hence my RFE.

I know some people like to use few CHOPs with many channels. My approach is generally the opposite: many single-channel, single-sample CHOPs. This works for me because I have an easier time reading a network that has many wires and OPs than a network that has many things in individual OPs. It’s the same reason that I prefer to have many DATs with one function per DAT, rather than a single extension DAT that has many functions inside of it. Seeing each DAT in the network as a single-purpose node is easier on my brain, as is seeing a single-channel CHOP. This is what I think one of TouchDesigner’s strengths is: people like me who struggle with purely text-based programming can thrive in a visual (flow/pull/node/wire) based programming environment. For reference, I’m building a twitch channel that has lots of interactive gameplay triggers on object, so I’m using CHOPs for events, timers, and arithmetic usually, rather than instancing or complex visual art.

So, if I’m looking at a network of many single-channel CHOPs, it would be great if I could trust that the data reference indicator (ie. the straight dotted arrow line) will work, and that’s not the case because the easiest way to reference (ie. drag and drop > CHOP Reference) only does it by an ‘unstable’ method (ie. name, rather than index). If the generator OP is switched out, so is the name, even if they were both single-channel, single-sample generator OPs.

Anyway, I hope that explains where I’m coming from a bit better.

I dol wonder if others would benefit from a new ability to paste as index, or if I’m the odd one out…