I don’t know how ssc implemented it but I’d start with a simple case of two sources and a linear fade:
Out := (SourceA * !Fade) + (SourceB * (1 – !Fade)).
for equal power we need the squares to add up to 1:
Out := (SourceA * !Fade sqrt) + (SourceB * (1 – !Fade sqrt)).
Now expand the idea to 2D (4 Sources):
Out1 := (SourceA * !XFade sqrt) + (SourceB * (1 – !XFade sqrt)).
Out2 := (SourceC * !XFade sqrt) + (SourceD * (1 – !XFade sqrt)).
Out := (Out1 * !YFade sqrt) + (Out2 * (1 – !YFade sqrt)).
And so on for 3D, 4D, 5D,…
I’m looking at it from the output side, you could as well look at it from the individual sources. For example for 2D equal-power:
LevelA := (!XFade + !YFade) sqrt.
LevelB := ((1 – !XFade) + !YFade) sqrt.
LevelC := (!XFade + (1 – !YFade)) sqrt.
LevelD := ((1 – !XFade) + (1 – !YFade)) sqrt.
Not sure if both examples give the same result, I may have mixed something up. But I hope the idea is clear 🙂
Cheers,
Gustav