mc.nn~ runs several audio streams through one model as a batch, saving CPU and RAM versus duplicating nn~
Plain nn~ processes a single audio example at a time, so duplicating nn~ boxes to process several sounds is inefficient: each copy loads the full model into RAM and multiplies CPU load, risking overload and glitchy clicks. mc.nn~ uses Max 8’s multichannel signal format to batch several inputs through one model instance — a single multichannel signal per inlet where each channel is a different audio stream, built over the batch dimension — giving minimum CPU cost and a single model in RAM (depending on architecture the model may parallelize the streams). Gather the sounds with mc.pack~ and send the multichannel signal to mc.nn~; it keeps the same inlet/outlet count as plain nn~ and adapts its output channel count to the lowest channel count among its inputs. A sibling, mcs.nn~, instead builds its multichannel signals over the model’s output/latent dimensions (one channel per latent dimension) rather than per batch example. Both externals exist only in the Max/MSP release, because Pure Data lacks the Max 8 multichannel signal format.
Examples
4 synth voices → mc.pack~ → mc.nn~ vintage.ts forward → 4 neural-transformed voices from one model in RAM (instead of four separate nn~ boxes). Encoding with RAVE: nn~ rave encode 2 under mcs.nn~ yields two 16-channel signals (one channel per latent dimension), whereas the same under mc.nn~ carries 2 channels (one per parallel audio example).
Assessment
To process 6 simultaneous streams with RAVE, compare the RAM and CPU implications of 6 nn~ boxes versus 1 mc.nn~ box, and name the object that gathers the inputs. Explain how mc.nn~ and mcs.nn~ differ in what varies across a signal’s channels, when you’d choose mcs.nn~, and why neither is available in Pure Data.