@David-Healey nope, won't work.
What if you actually create the network dynamically?
// define this somewhere in your interface script global NUM_CHANNELS = 8; // Put this code in a Script FX that is set to use the number of channels const var dsp = Engine.createDspNetwork("mixer"); const var mixer = dsp.get("mixer"); const var multi = dsp.createAndAdd("container.multi", "multi", "mixer"); for(i = 0; i < (NUM_CHANNELS/2); i++) { // create a gain module var g = dsp.createAndAdd("core.gain", "gain" + (i+1), multi); // fetch the gain parameter var dst = g.getOrCreateParameter("Gain"); // create a root parameter var src = mixer.getOrCreateParameter({ "ID": "Gain" + (i+1), "mode": "Decibel" }); // connect the two dst.addConnectionFrom({ID: "mixer", "ParameterId": "Gain" + (i+1)}); // copy the range to the source parameter // (make the warning icon disappear...) src.setRangeFromObject(dst.getRangeObject()); }