<div dir="ltr"><div dir="ltr">Recommendations:<div>1. remove outputs field from ChannelSplitter</div><div>2. add 2 fields to ChannelMerger</div><div>MFInt32 indxSrc [in/out]</div><div>MFInt32 indxDst [in/out]</div><div>3. remove node ChannelSelector from specifications</div><div><br></div><div>Explanation:</div><div>Merger will get is Splitter channels through its children field, and the children are in the order of indxSrc[i[, so when making connections, Merger iterates over indxSrc[i], and for each one renders the Merger.children[i], and communicates indirectly with splitter (through a stack/state variable) which of its outputs (or srcIndex) to connect to splitters most immediate parent. </div><div>If there aren't enough .children for all the indxSrc, the last child is repeated/re-used.</div><div>I have it working in an example scene</div><div><a href="https://freewrl.sourceforge.io/tests/16_Sound/SplitChannels6_children.x3d">https://freewrl.sourceforge.io/tests/16_Sound/SplitChannels6_children.x3d</a> <br></div><div>The indxDst, indxSrc are a 2-tuple, and there should be equal numbers of them,  the recommended field names a) are similar to Web Audio srcIndx, dstIndx so familiar to those working with web audio b) re-arranged to make them alphabetical-order sequential in the specs, so its more obvious they go together.</div><div>The design eliminates the need for a separate ChannelSelector node (which is ill-defined, and web audio doesn't have one) -- the same kind of selections can be done with indxDst, indxSrc in ChannelMerger.</div><div><br></div><div>-Doug</div><div><br></div><div><br></div></div></div>