Sure you could do it, however it won't have the same elegance as what you have now. It looks like you are directly steering the electron beam, so you have a horizontal control (X) and a vertical one (Y), and the beam is more or less linearly positioned according to those inputs. So if you say,
$$ X = \cos(t)\\
Y = \sin(t) $$
You get a circle. Neat, elegant.
If you want to split that up into multiple screens, it's not linear anymore. Say your signal generator outputs a value between 0 and 1. In your example of nine TVs, there are three in each axis. So we must divide this range of 0 to 1 into three components:
- \$0 \le x < 1/3\$: left column active
- \$1/3 \le x < 2/3\$: middle column active
- \$2/3 \le x < 1\$: right column active
Then after having decided which TV is active, this number needs to be scaled back to the range of 0 to 1 for the individual TV that is active. You could do this by multiplying by 3 and keeping just the fractional part.
In pseudocode:
function split(x):
if x < 1/3:
column = "left"
elif x < 2/3:
column = "middle"
else:
column = "right"
return column, (x * 3) % 1
This returns which column of TVs you need to activate, and then gives you the number between 0 and 1 to feed to that TV. Then, you need to do the same for the vertical axis. Knowing which column and which row of TVs, you activate that one and deactivate all the others, and feed it the transformed value.
Since only one TV is on at a time, you might be able to feed the same X Y signals to all the TVs, and only the one that is enabled will show it. This way you don't need nine audio cards for your computer.
You could implement this with analog electronics with some comparators to determine which row (or column) you are in, some logic gates to combine the row and column into an enable signal for the individual TV, and some op-amps to scale the signal after dividing it. Or, you could do the processing in PD.