Mix folds a multichannel array to mono; Splay spreads it evenly across a stereo field
When multichannel expansion produces more channels than available outputs, fold them back down. Mix(signal) sums all channels to mono. Splay.ar(signal) distributes channels evenly from left to right across stereo — a 5-channel array pans at -1, -0.5, 0, 0.5, +1. Mix.fill(n, func) combines array filling and mixing in one step: evaluates the function n times, collects results, and mixes down. This is the idiomatic way to build additive or granular textures needing stereo output.
Examples
b = {Mix(SinOsc.ar([100,300,500,700,900],mul:0.1))}.play;
c = {Splay.ar(SinOsc.ar([100,300,500,700,900],mul:0.1))}.play;
n = {Mix.fill(12,{|i| SinOsc.ar((i+1)*440,mul:1/(i+1).squared)*0.1})}.play;
Assessment
Write a 7-partial additive synth using Mix.fill and Splay.ar. Explain why you need Mix or Splay at all — what would happen without them?